SpringMVC @RequestMapping注解作用詳解
1、@RequestMapping注解的功能
從注解名稱上我們可以看到,@RequestMapping注解的作用就是將請求和處理請求的控制器方法關聯(lián)起來,建立映射關系。
SpringMVC 接收到指定的請求,就會來找到在映射關系中對應的控制器方法來處理這個請求。
2、@RequestMapping注解的位置
@RequestMapping標識一個類:設置映射請求的請求路徑的初始信息
@RequestMapping標識一個方法:設置映射請求請求路徑的具體信息
@Controller
@RequestMapping("/test")
public class RequestMappingController {
//此時請求映射所映射的請求的請求路徑為:/test/testRequestMapping
@RequestMapping("/testRequestMapping")
public String testRequestMapping(){
return "success";
}
}
3、@RequestMapping注解的value屬性
@RequestMapping注解的value屬性通過請求的請求地址匹配請求映射
@RequestMapping注解的value屬性是一個字符串類型的數(shù)組,表示該請求映射能夠匹配多個請求地址所對應的請求
@RequestMapping注解的value屬性必須設置,至少通過請求地址匹配請求映射
@RequestMapping(
value = {"/testRequestMapping", "/test"}
)
public String testRequestMapping(){
return "success";
}
4、@RequestMapping注解的method屬性
@RequestMapping注解的method屬性通過請求的請求方式(get或post)匹配請求映射
@RequestMapping注解的method屬性是一個RequestMethod類型的數(shù)組,表示該請求映射能夠匹配多種請求方式的請求
若當前請求的請求地址滿足請求映射的value屬性,但是請求方式不滿足method屬性,則瀏覽器報錯405:Request method ‘POST’ not supported
@RequestMapping(
value = {"/testRequestMapping", "/test"},
method = {RequestMethod.GET, RequestMethod.POST}
)
public String testRequestMapping(){
return "success";
}
注:
1、對于處理指定請求方式的控制器方法,SpringMVC中提供了>@RequestMapping的派生注解
處理get請求的映射–>@GetMapping
處理post請求的映射–>@PostMapping
處理put請求的映射–>@PutMapping
處理delete請求的映射–>@DeleteMapping
2、常用的請求方式有get,post,put,delete
但是目前瀏覽器只支持get和post,若在form表單提交時,為method設置了>其他請求方式的字符串(put或delete),則按照默認的請求方式get處理
若要發(fā)送put和delete請求,則需要通過spring提供的過濾器HiddenHttpMethodFilter
5、@RequestMapping注解的params屬性(了解)
@RequestMapping注解的params屬性通過請求的請求參數(shù)匹配請求映射
@RequestMapping注解的params屬性是一個字符串類型的數(shù)組,可以通過四種表達式設置請求參數(shù)和請求映射的匹配關系
“param”:要求請求映射所匹配的請求必須攜帶param請求參數(shù)
“!param”:要求請求映射所匹配的請求必須不能攜帶param請求參數(shù)
“param=value”:要求請求映射所匹配的請求必須攜帶param請求參數(shù)且param=value
“param!=value”:要求請求映射所匹配的請求必須攜帶param請求參數(shù)但是param!=value
@RequestMapping(
value = {"/testRequestMapping", "/test"}
,method = {RequestMethod.GET, RequestMethod.POST}
,params = {"username","password!=123456"}
)
public String testRequestMapping(){
return "success";
}
注:
若當前請求滿足@RequestMapping注解的value和method屬性,但是不滿足params屬性,此時頁面回報錯400:Parameter conditions “username, password!=123456” not met for actual request parameters: username={admin}, password={123456}
6、@RequestMapping注解的headers屬性(了解)
@RequestMapping注解的headers屬性通過請求的請求頭信息匹配請求映射
@RequestMapping注解的headers屬性是一個字符串類型的數(shù)組,可以通過四種表達式設置請求頭信息和請求映射的匹配關系
“header”:要求請求映射所匹配的請求必須攜帶header請求頭信息
“!header”:要求請求映射所匹配的請求必須不能攜帶header請求頭信息
“header=value”:要求請求映射所匹配的請求必須攜帶header請求頭信息且header=value
“header!=value”:要求請求映射所匹配的請求必須攜帶header請求頭信息且header!=value
若當前請求滿足@RequestMapping注解的value和method屬性,但是不滿足headers屬性,此時頁面顯示404錯誤,即資源未找到
7、SpringMVC支持ant風格的路徑
?:表示任意的單個字符
*:表示任意的0個或多個字符
\**:表示任意的一層或多層目錄
注意:在使用\**時,只能使用/**/xxx的方式
@RequestMapping(
value = {"/test/**/RequestMapping"}
)
public String testRequestMapping(){
return "success";
}
8、SpringMVC支持路徑中的占位符(重點)
原始方式:/deleteUser?id=1
rest方式:/deleteUser/1
SpringMVC路徑中的占位符常用于RESTful風格中,當請求路徑中將某些數(shù)據(jù)通過路徑的方式傳輸?shù)椒掌髦?,就可以在相應的@RequestMapping注解的value屬性中通過占位符{xxx}表示傳輸?shù)臄?shù)據(jù),在通過@PathVariable注解,將占位符所表示的數(shù)據(jù)賦值給控制器方法的形參
@RequestMapping("/testRest/{id}/{username}")
public String testRest(@PathVariable("id") String id, @PathVariable("username") String username){
System.out.println("id:"+id+",username:"+username);
return "success";
}
//最終輸出的內(nèi)容為-->id:1,username:admin
到此這篇關于SpringMVC @RequestMapping注解作用詳解的文章就介紹到這了,更多相關SpringMVC @RequestMapping內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解Java中super的幾種用法并與this的區(qū)別
這篇文章主要介紹了Java中super的幾種用法并與this的區(qū)別,有需要的朋友可以參考一下2013-12-12
Java SSM實現(xiàn)前后端協(xié)議聯(lián)調(diào)詳解上篇
首先我們已經(jīng)知道,在現(xiàn)在流行的“前后端完全分離”架構中,前后端聯(lián)調(diào)是一個不可能避免的問題,這篇文章主要介紹了Java SSM實現(xiàn)前后端協(xié)議聯(lián)調(diào)過程2022-08-08
SpringBoot項目中使用Netty實現(xiàn)遠程調(diào)用的示例代碼
眾所周知在進行網(wǎng)絡連接的時候,建立套接字連接是一個非常消耗性能的事情,特別是在分布式的情況下,那么該通過什么技術去解決上述的問題呢,本文小編給大家介紹了SpringBoot項目中使用Netty實現(xiàn)遠程調(diào)用的方法,需要的朋友可以參考下2025-04-04
Java使用反射和動態(tài)代理實現(xiàn)一個View注解綁定庫
這篇文章主要介紹了Java使用反射和動態(tài)代理實現(xiàn)一個View注解綁定庫,代碼簡潔,使用簡單,擴展性強,結合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2022-05-05
Linux下用java -jar運行可執(zhí)行jar包的方法教程
這篇文章主要給大家介紹了在Linux下用java -jar運行可執(zhí)行jar包的方法教程,文中介紹的非常詳細,相信對大家的工作或者學習具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-05-05
SpringBoot+Netty實現(xiàn)簡單聊天室的示例代碼
這篇文章主要介紹了如何利用SpringBoot Netty實現(xiàn)簡單聊天室,文中的示例代碼講解詳細,對我們學習SpringBoot有一定幫助,感興趣的同學可以了解一下2022-02-02
Java循環(huán)調(diào)用多個timer實現(xiàn)定時任務
這篇文章主要介紹了Java循環(huán)調(diào)用多個timer實現(xiàn)定時任務,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-07-07

