Java SpringMVC的@RequestMapping注解使用及說明
一、@RequestMapping注解功能
@RequestMapping注解的作用就是將請求和處理請求的控制器方法關(guān)聯(lián)起來,建立映射關(guān)系。
SpringMVC接收到指定的請求,就會來找到在映射關(guān)系中對應的控制器方法來處理這個請求。
原因就是這個映射關(guān)系是唯一的,但在工程中這個是重復的。
二、@RequestMapping注解位置
@RequestMapping標識在類上:設(shè)置映射請求的請求路徑的初始信息。
@RequestMapping標識在方法上:設(shè)置映射請求的請求路徑的具體信息
@Controller //標識在類上主要用于模塊間的控制 @RequestMapping("/hello") public class TestController01 { @RequestMapping("/success") public String success(){ return "success"; } }
index.html頁面
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>首頁</h1> <a th:href="@{/hello/success}">訪問success頁面</a> </body> </html>
三、@RequestMapping注解的value屬性
1、@RequestMapping注解的value屬性是通過請求的請求地址匹配請求映射
2、@RequestMapping注解的value屬性是一個字符串類型的數(shù)組,表示該請求映射能夠匹配多個請求地址所對應的請求。
3、@RequestMapping注解的value屬性必須設(shè)置,至少通過請求地址匹配請求映射
測試代碼:
@Controller public class TestController01 { @RequestMapping(value = {"hello","test"}) public String success(){ return "success"; } }
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>首頁</h1> <a th:href="@{/hello}">訪問success頁面</a><br> <a th:href="@{/test}">訪問success頁面</a> </body> </html>
四、@RequestMapping注解的method屬性
@RequestMapping注解的method屬性通過請求的請求方式(get或post)匹配請求映射。
@RequestMapping注解的method屬性是一個RequestMethod類型的數(shù)組,表示該請求映射能夠匹配多種請求方式的請求。
當前請求的請求地址滿足請求映射的value屬性,但是請求方式不滿足method屬性,則瀏覽器報405;
在默認請求方式下的post,get都能請求成功
controller層代碼不變。
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>首頁</h1> <form th:action="@{/hello}" method="post"> <input type="submit" value="在默認方式下測試post"> </form> <form th:action="@{/test}" method="get"> <input type="submit" value="在默認方式下測試get"> </form> </body> </html>
指定使用get請求:
@Controller public class TestController01 { @RequestMapping(value = {"hello","test"}, method = {RequestMethod.GET}) public String success(){ return "success"; } }
當訪問post請求時報錯
根據(jù)需要可以設(shè)置多種請求方式
1、對于處理指定請求方式的控制器方法,SpringMVC中提供了@RequestMapping的派生注解
處理get請求的映射使用GetMapping,處理post請求的映射使用PostMapping,處理put請求的映射使用PutMapping,處理delete請求的映射使用DeleteMapping。
@GetMapping("/test") public String getSuccess(){ return "success"; }
2、常用的請求方式有g(shù)et,post,put,delete
目前瀏覽器只支持get和post請求,若from表單在提交時,使用method設(shè)置其他請求方式,則都按默認請求方式get處理。
若要發(fā)送put和delete請求,則需要通過Spring提供的過濾器HiddenHttpMethodFilter。
五、@RequestMapping注解的params屬性
@RequestMapping注解的params屬性通過請求參數(shù)匹配請求映射
@RequestMapping注解的params屬性是一個字符串類型的數(shù)組,可以通過四種表達式設(shè)置請求參數(shù)和請求映射的匹配關(guān)系。
- "param":要求請求映射所匹配的請求必須攜帶param請求參數(shù)。
- "!param":要求請求映射所匹配的請求不能攜帶param請求參數(shù)。
- "param=value":要求請求映射所匹配的請求必須攜帶param請求參數(shù)且param=value。
- "param!=value":要求請求映射所匹配的請求必須攜帶param請求參數(shù)且param!=value。
@RequestMapping(value = "/test2", params = {"name=張三","password=123456"}) public String success(){ return "success"; }
<a th:href="@{/test2(name='張三',password=123456)}">攜帶params訪問success頁面</a>
當傳入?yún)?shù)匹配不上時就會報瀏覽器400錯誤:
六、@RequestMapping注解的headers屬性
@RequestMapping注解的headers屬性通過請求的請求頭信息匹配請求映射。
@RequestMapping注解的headers屬性是一個字符串類型的數(shù)組,可以通過四種表達式設(shè)置請求頭信息和請求映射的匹配關(guān)系。
- “header”:要求請求映射所匹配的請求必須攜帶header請求頭信息。
- “!header”:要求請求映射所匹配的請求不能攜帶header請求頭信息。
- “header”:要求請求映射所匹配的請求必須攜帶header請求頭信息且header=value。
- “header”:要求請求映射所匹配的請求必須攜帶header請求頭信息且header!=value。
若當前請求未滿足@RequestMapping注解的value和method屬性,但是不滿足headers屬性,頁面顯示404錯誤。
@RequestMapping(value = "/test2", params = {"name=張三","password=123456"}, headers = {"Host=localhost:8081"}) public String success(){ return "success"; }
<a th:href="@{/test2(name='張三',password=123456)}">攜帶params訪問success頁面</a>
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringCloud OpenFeign自定義結(jié)果解碼器方式
這篇文章主要介紹了SpringCloud OpenFeign自定義結(jié)果解碼器方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09javaweb 國際化:DateFormat,NumberFormat,MessageFormat,ResourceBu
本文主要介紹javaWEB國際化的知識,這里整理了詳細的資料及實現(xiàn)代碼,有興趣的小伙伴可以參考下2016-09-09