日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

requestmapping注解访问404_【框架】127:几个非常重要的注解

發(fā)布時間:2023/12/4 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 requestmapping注解访问404_【框架】127:几个非常重要的注解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

今天是劉小愛自學(xué)Java的第127天。

感謝你的觀看,謝謝你。

今天的知識點有點多,有點記不過來了。

學(xué)習(xí)內(nèi)容安排如下:

  • 使用注解優(yōu)化昨天寫的springMVC入門程序。
  • 映射路徑各種風(fēng)格的學(xué)習(xí),也就對應(yīng)了注解@RequestMapping中的參數(shù)。
  • 各種類型的請求參數(shù)獲取。
  • 整篇都是圍繞著各種注解的使用,做個整合,以后那個忘了做個回顧。

一、注解簡化代碼

昨天寫了一個springMVC入門程序,將其運行流程梳理了一遍,但是代碼編寫太麻煩了。

1存在的問題

①問題一

映射器、適配器、處理器,視圖解析器,一堆的信息需要配置。

②問題二

看到new關(guān)鍵字,就可以使用spring優(yōu)化,具體在文章第三節(jié)中有詳細說明。

一個處理器類只能處理一個請求,并且這個類還要在配置文件中配置。

這個問題我們以前學(xué)servlet的時候就遇到過,當(dāng)時我們是創(chuàng)建一個BaseServlet,再使用反射,讓其子類一個方法對應(yīng)一個請求。

這里的解決方式是使用注解。

2注解的使用

①配置注解

  • 開啟注解掃描:這個在學(xué)spring框架的時候就用過很多次了。
  • mvc注解驅(qū)動:這個就相當(dāng)于自動配置映射器、適配器了。

②處理器類

@Controller:這個注解即相當(dāng)于將這個處理器類存放到了spring容器中。

@RequestMapping("/show"):在每個方法上使用這個注解就可以接受一個請求。

方法名我們可以自定義,有多個請求就可以創(chuàng)建多個對應(yīng)的方法。

我大膽地猜測一下,該注解的底層實現(xiàn)也是使用的反射,當(dāng)然目前就不做深入研究了。

其中:"/show"就對應(yīng)著訪問路徑,當(dāng)然在瀏覽器訪問時要在路徑后面加上.do。

二、不同風(fēng)格的映射路徑

一共有好幾種,依次說明。

1Ant風(fēng)格的映射

Ant也就是螞蟻的意思,符號“*”不就像一只螞蟻么?大概這就是它名稱的由來。

①通配符:?

代表可以使用任意一個字符。

例子中路徑配置的是“a?”,那么ab、ac、a加任意一個字符都可以訪問。

②通配符:*

代表了0個或者多個字符。

例子中路徑配置的是“a*”,那么abcdd、afa都可以訪問,甚至單獨的一個a也可以。

其中當(dāng)*單獨使用的時候只能配置一個或者多個的字符,0個就不行了。

③通配符:**

代表了0個或者多個路徑。

例子中路徑配置的是“**”,那么隨便多個路徑都可以,沒有路徑也行。

其中當(dāng)**和其它字符一起使用時就不能多個路徑了,代表0或多個字符,和*作用一樣。

2占位符的映射(restful風(fēng)格)

restful風(fēng)格厲害的地方在于:路徑中輸入的字符可以作為參數(shù)被取出來。

使用注解@PathVariable

該注解可以獲取路徑中的字符作為參數(shù)

不過值得注意的是:

@PathVariable(“key”)中的key必須和對應(yīng)占位符中的參數(shù)名保持一致。

如果傳遞的參數(shù)類型和接受參數(shù)的形參類型不一致,則會自動轉(zhuǎn)換。比如上圖年齡傳了“18”字符串,方法形參使用Integer來接受參數(shù)。

3限定請求方法的映射

這種方式就是可以限定方法的請求類型,比如我們只接受GET請求:

@RequestMapping(value=””,method=””)

使用RequestMethod.GET設(shè)定請求方式為GET請求,如果是POST請求就不行了。

我們點擊RequestMethod的源碼可以發(fā)現(xiàn),其一共有8種請求類型,都是以枚舉的形式存在,自己指定需要限制的請求方式即可。

4限定請求參數(shù)的映射

@RequestMapping(value=””,params=””)

和限定請求方法很像,就是將method換成了params,名稱都是見名知義的。

①params=”id”

請求參數(shù)中必須有id,如果沒有id會報錯。

與之相反的是:如果params=”!id”表示請求參數(shù)中不能包含id,如果有id會報錯。

②params=”id=1”

請求參數(shù)中id必須為1,如果不為1會報錯。

與之相反的是:如果params=”id!=1”表示請求參數(shù)中id必須不為1,如果等于1會報錯。

③params={“name”, ”age”}

請求參數(shù)中必須有name,age參數(shù),當(dāng)然有多余的其它參數(shù)也行,但這兩個必須要有。

5混合注解

@GetMapping:限定請求方式必須要為GET請求才行,就相當(dāng)于:@RequestMapping用method=RequestMethod.GET。

類似的注解還有@PostMapping、@PutMapping、@DeleteMapping。

值得注意的是:

上述例子中,①和②分開使用都可以達到效果,如果放在一起會報錯。

三、接收數(shù)據(jù)及數(shù)據(jù)綁定

1接收servlet的內(nèi)置對象

常用的servlet對象一共有三個:request,response,session。

這些對象的接收非常簡單,只需要在方法形參中有該對象就能接收,不需要任何配置。

2springMVC的Model對象

我們前面使用ModelAndView,每次都要new對象,既然學(xué)了spring,肯定能優(yōu)化。

springMVC的Model對象就是用來代替ModelAndView的:

  • addAtrribute()就相當(dāng)于addObject()
  • 返回字符串就相當(dāng)于設(shè)定ViewName的值。

注意:①和②不能放在一起聯(lián)合使用,我這邊只是做一個對比說明它們是一回事。

3接收普通的請求參數(shù)

也就是@RequestParam這個注解的使用,這個注解非常重要,使用起來也方便。

①required=false

有false,自然是有true的。如果不寫的話,默認就是ture,我這邊為了說明寫了false。

  • true:表示請求參數(shù)必須要有name,如果沒有就會報錯。
  • false:表示請求參數(shù)可以沒有name,如果沒有就顯示null。

②defaultValue=""

看名稱就很好理解,這個是指定一個默認值,如果不指定參數(shù)就用這個默認值。

其中關(guān)于注解@PathVariable和其很類似,這個在rest風(fēng)格映射路徑中說明。

如果請求路徑中攜帶有參數(shù)可以使用注解@PathVariable,如果參數(shù)并不在請求路徑中(POST請求)可以使用@RequestParam。

4獲取cookie

@CookieValue這個注解的使用

我們在使用瀏覽器的時候,如果多次請求,請求參數(shù)中會存在一個cookie。

可以通過@CookieValue獲取cookie的值,其中其key為一個固定值JSESSIONID。

最后

還有幾種數(shù)據(jù)類型沒時間學(xué)了,比如實體類對象、集合這些。

我擦咧,一個知識點不能整合在一起有點難受,看來時間管理不行啊,得跟羅志祥學(xué)學(xué)了,真不知道他是怎么安排過來的。

謝謝你的觀看。

如果可以的話,麻煩幫忙點個贊,謝謝你。

總結(jié)

以上是生活随笔為你收集整理的requestmapping注解访问404_【框架】127:几个非常重要的注解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。