日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

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

今天是劉小愛自學Java的第127天。

感謝你的觀看,謝謝你。

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

學習內容安排如下:

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

一、注解簡化代碼

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

1存在的問題

①問題一

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

②問題二

看到new關鍵字,就可以使用spring優化,具體在文章第三節中有詳細說明。

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

這個問題我們以前學servlet的時候就遇到過,當時我們是創建一個BaseServlet,再使用反射,讓其子類一個方法對應一個請求。

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

2注解的使用

①配置注解

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

②處理器類

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

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

方法名我們可以自定義,有多個請求就可以創建多個對應的方法。

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

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

二、不同風格的映射路徑

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

1Ant風格的映射

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

①通配符:?

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

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

②通配符:*

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

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

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

③通配符:**

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

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

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

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

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

使用注解@PathVariable

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

不過值得注意的是:

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

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

3限定請求方法的映射

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

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

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

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

4限定請求參數的映射

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

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

①params=”id”

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

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

②params=”id=1”

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

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

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

請求參數中必須有name,age參數,當然有多余的其它參數也行,但這兩個必須要有。

5混合注解

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

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

值得注意的是:

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

三、接收數據及數據綁定

1接收servlet的內置對象

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

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

2springMVC的Model對象

我們前面使用ModelAndView,每次都要new對象,既然學了spring,肯定能優化。

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

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

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

3接收普通的請求參數

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

①required=false

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

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

②defaultValue=""

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

其中關于注解@PathVariable和其很類似,這個在rest風格映射路徑中說明。

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

4獲取cookie

@CookieValue這個注解的使用

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

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

最后

還有幾種數據類型沒時間學了,比如實體類對象、集合這些。

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

謝謝你的觀看。

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。