SpringMVC?@RequestMapping注解屬性詳細介紹
@RequestMapping注解的功能
從注解名稱上我們可以看到,@RequestMapping注解的作用是將請求和處理請求的方法關(guān)聯(lián)起來,建立映射關(guān)系
SpringMVC接收到指定的請求,就會來找到在映射關(guān)系中對應(yīng)的控制器方法來處理這個請求
@RequestMapping注解的位置
@RequestMapping標(biāo)識一個類:設(shè)置映射請求的請求路徑的初始信息
@RequestMapping標(biāo)識一個方法:設(shè)置映射請求請求路徑的具體信息
@RequestMapping注解的value屬性
1.@RequestMapping注解的value屬性通過請求的請求地址匹配映射
2.@RequestMapping注解的value屬性是一個字符串類型的數(shù)組,表示該請求映射能夠匹配多個請求地址所對應(yīng)的請求
3.@RequestMapping注解的value屬性必須設(shè)置,至少通過請求地址匹配請求映射
代碼展示
@RequestMapping(value = "/target") public String toTarget(){ return "target"; }
或者value也可以是:
@RequestMapping(value = {"/testRequestMapping","test"}) public String toTarget(){ return "target"; }
運行結(jié)果:
@RequestMapping注解的method屬性
1.@RequestMapping注解的method屬性通過請求的請求方式(get或post)匹配請求映射
2.@RequestMapping注解的method屬性是一個RequestMethod類型的數(shù)組。表示該請求映射能夠匹配多種請求方式的請求
3.若當(dāng)前請求的請求地址滿足請求映射的value屬性,但是請求方式不滿足method屬性,則瀏覽器報錯405:Request method "POST’ not supported 注:
1.對于處理指定請求方式的控制器方法,SpringMVC中提供了@RequestMapping的派生注解
處理get請求的映射–>GetMapping
處理post請求的映射–>PostMapping
處理put請求的映射–>PutMapping
處理delete請求的映射–>DeleteMapping
2.常用的請求方式有g(shù)et,post,put,delete
但是目前瀏覽器只支持get和post,若在form表單提交時,為method設(shè)置了其他請求方式的字符串(put或delete),則按照默認的請求方式get處理
若要發(fā)送put和delete請求,則需要通過spring提供的過濾器HiddenHttpMethodFilter,在restful部分會講到
默認提交是get提交,假如我們發(fā)出一個post請求,會有什么反映
Controller:
@GetMapping("/testGetMapping") public String testGetMapping(){ return "success"; }
html:
<form th:action="@{/testGetMapping}" method="post"> <input type="submit" value="測試RequestMapping注解的method屬性-->POST"> </form>
運行結(jié)果
解決辦法:
將頁面的post請求變?yōu)間et請求
或者
給Controller程序里的的@RequestMapping中method屬性賦值
get和post的區(qū)別
get請求是將參數(shù)的值以這種
形式來請求指定的頁面信息,并返回實體主體,一般用于查詢操作
POST 向指定資源提交數(shù)據(jù)進行處理請求(例如提交表單或者上傳文件)。 POST請求可能會導(dǎo)致新的資源的建立和/或已有資源的修改。
一般用于增刪改操作
@RequestMapping注解的params屬性
@RequestMapping注解的params屬性通過請求的請求參數(shù)匹配請求映射
@RequestMapping注解的params屬性通過請求的請求參數(shù)匹配請求映射
@RequestMapping注解的params屬性是一個字符串類型的數(shù)組,可以通過四種表達式設(shè)置請求參數(shù)和請求映射的匹配關(guān)系
“param”:要求請求映射所匹配的請求必須攜帶param請求參數(shù)"lparam":要求請求映射所匹配的請求必須不能攜帶param請求參數(shù)
“param=value”:要求請求映射所匹配的請求必須攜帶param請求參數(shù)且param=value
“param!=value”:要求請求映射所匹配的請求必須攜帶param請求參數(shù)但是param!=value
代碼樣例:
html:
<a th:href="@{/testParamsAndHeaders(username='admin',password=123)}" rel="external nofollow" rel="external nofollow" >測試RequestMapping注解的param屬性-->/testParamsAndHeaders</a>
Controller:
@RequestMapping( value = "/testParamsAndHeaders", params = {"username","password!=123456"} ) public String testParamsAndHeaders(){ return "success"; }
運行結(jié)果:
若不滿足條件:
偏偏要將該密碼改為123456
@RequestMapping注解的headers屬性
什么是headers屬性
這些屬性全部可以當(dāng)作head屬性來使用
@RequestMapping注解的headers屬性通過請求的請求頭信息匹配請求映射
@RequestMapping注解的headers屬性是一個字符串類型的數(shù)組,可以通過四種表達式設(shè)置請求頭信息和請求映射的匹配關(guān)系
“header”:要求請求映射所匹配的請求必須攜帶header請求頭信息
“!header”:要求請求映射所匹配的請求必須不能攜帶header請求頭信息
“header=value”:要求請求映射所匹配的請求必須攜帶header請求頭信息且header=value
“header!=value”:要求請求映射所匹配的請求必須攜帶header請求頭信息且header!=value
若當(dāng)前請求滿足@RequestMapping注解的value和method屬性,但是不滿足headers屬性,此時頁面顯示404錯誤,即資源未找到
代碼測試:
Controller:
@RequestMapping( value = "/testParamsAndHeaders", params = {"username","password!=123456"}, headers = {"Host=localhost:8084"} ) public String testParamsAndHeaders(){ return "success"; }
Html:
<a th:href="@{/testParamsAndHeaders(username='admin',password=123)}" rel="external nofollow" rel="external nofollow" >測試RequestMapping注解的head屬性-->/testParamsAndHeaders</a>
運行結(jié)果:
404 --> value出錯或者head出錯
400 --> param出錯
405 --> method請求方式出錯
到此這篇關(guān)于SpringMVC @RequestMapping注解屬性詳細介紹的文章就介紹到這了,更多相關(guān)SpringMVC @RequestMapping內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot實現(xiàn)yml里的自定義配置方法
這篇文章主要介紹了springboot實現(xiàn)yml里的自定義配置方法,主要介紹三種,字符串配置,數(shù)組配置和帶默認值的配置,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01SpringCloud實現(xiàn)基于RabbitMQ消息隊列的詳細步驟
在Spring Cloud框架中,我們可以利用RabbitMQ實現(xiàn)強大而可靠的消息隊列系統(tǒng),本篇將詳細介紹如何在Spring Cloud項目中集成RabbitMQ,并創(chuàng)建一個簡單的消息隊列,感興趣的朋友一起看看吧2024-03-03Java 基礎(chǔ):string中的compareTo方法
這篇文章主要介紹了Java 基礎(chǔ):string中的compareTo方法,文章圍繞string中的compareTo方法的相關(guān)資料展開文章詳細內(nèi)容,希望對待大家有所幫助2021-12-12Java對象轉(zhuǎn)json JsonFormat注解
這篇文章主要介紹了Java對象轉(zhuǎn)json JsonFormat注解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05