Java SpringMVC的@RequestMapping注解使用及說明
一、@RequestMapping注解功能
@RequestMapping注解的作用就是將請(qǐng)求和處理請(qǐng)求的控制器方法關(guān)聯(lián)起來,建立映射關(guān)系。
SpringMVC接收到指定的請(qǐng)求,就會(huì)來找到在映射關(guān)系中對(duì)應(yīng)的控制器方法來處理這個(gè)請(qǐng)求。



原因就是這個(gè)映射關(guān)系是唯一的,但在工程中這個(gè)是重復(fù)的。
二、@RequestMapping注解位置
@RequestMapping標(biāo)識(shí)在類上:設(shè)置映射請(qǐng)求的請(qǐng)求路徑的初始信息。
@RequestMapping標(biāo)識(shí)在方法上:設(shè)置映射請(qǐng)求的請(qǐng)求路徑的具體信息
@Controller
//標(biāo)識(shí)在類上主要用于模塊間的控制
@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屬性是通過請(qǐng)求的請(qǐng)求地址匹配請(qǐng)求映射
2、@RequestMapping注解的value屬性是一個(gè)字符串類型的數(shù)組,表示該請(qǐng)求映射能夠匹配多個(gè)請(qǐng)求地址所對(duì)應(yīng)的請(qǐng)求。
3、@RequestMapping注解的value屬性必須設(shè)置,至少通過請(qǐng)求地址匹配請(qǐng)求映射
測試代碼:
@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屬性通過請(qǐng)求的請(qǐng)求方式(get或post)匹配請(qǐng)求映射。
@RequestMapping注解的method屬性是一個(gè)RequestMethod類型的數(shù)組,表示該請(qǐng)求映射能夠匹配多種請(qǐng)求方式的請(qǐng)求。
當(dāng)前請(qǐng)求的請(qǐng)求地址滿足請(qǐng)求映射的value屬性,但是請(qǐng)求方式不滿足method屬性,則瀏覽器報(bào)405;
在默認(rèn)請(qǐng)求方式下的post,get都能請(qǐng)求成功
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="在默認(rèn)方式下測試post">
</form>
<form th:action="@{/test}" method="get">
<input type="submit" value="在默認(rèn)方式下測試get">
</form>
</body>
</html>指定使用get請(qǐng)求:
@Controller
public class TestController01 {
@RequestMapping(value = {"hello","test"},
method = {RequestMethod.GET})
public String success(){
return "success";
}
}當(dāng)訪問post請(qǐng)求時(shí)報(bào)錯(cuò)

根據(jù)需要可以設(shè)置多種請(qǐng)求方式

1、對(duì)于處理指定請(qǐng)求方式的控制器方法,SpringMVC中提供了@RequestMapping的派生注解
處理get請(qǐng)求的映射使用GetMapping,處理post請(qǐng)求的映射使用PostMapping,處理put請(qǐng)求的映射使用PutMapping,處理delete請(qǐng)求的映射使用DeleteMapping。
@GetMapping("/test")
public String getSuccess(){
return "success";
}2、常用的請(qǐng)求方式有g(shù)et,post,put,delete
目前瀏覽器只支持get和post請(qǐng)求,若from表單在提交時(shí),使用method設(shè)置其他請(qǐng)求方式,則都按默認(rèn)請(qǐng)求方式get處理。
若要發(fā)送put和delete請(qǐng)求,則需要通過Spring提供的過濾器HiddenHttpMethodFilter。



五、@RequestMapping注解的params屬性
@RequestMapping注解的params屬性通過請(qǐng)求參數(shù)匹配請(qǐng)求映射
@RequestMapping注解的params屬性是一個(gè)字符串類型的數(shù)組,可以通過四種表達(dá)式設(shè)置請(qǐng)求參數(shù)和請(qǐng)求映射的匹配關(guān)系。
- "param":要求請(qǐng)求映射所匹配的請(qǐng)求必須攜帶param請(qǐng)求參數(shù)。
- "!param":要求請(qǐng)求映射所匹配的請(qǐng)求不能攜帶param請(qǐng)求參數(shù)。
- "param=value":要求請(qǐng)求映射所匹配的請(qǐng)求必須攜帶param請(qǐng)求參數(shù)且param=value。
- "param!=value":要求請(qǐng)求映射所匹配的請(qǐng)求必須攜帶param請(qǐng)求參數(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>當(dāng)傳入?yún)?shù)匹配不上時(shí)就會(huì)報(bào)瀏覽器400錯(cuò)誤:

六、@RequestMapping注解的headers屬性
@RequestMapping注解的headers屬性通過請(qǐng)求的請(qǐng)求頭信息匹配請(qǐng)求映射。
@RequestMapping注解的headers屬性是一個(gè)字符串類型的數(shù)組,可以通過四種表達(dá)式設(shè)置請(qǐng)求頭信息和請(qǐng)求映射的匹配關(guān)系。
- “header”:要求請(qǐng)求映射所匹配的請(qǐng)求必須攜帶header請(qǐng)求頭信息。
- “!header”:要求請(qǐng)求映射所匹配的請(qǐng)求不能攜帶header請(qǐng)求頭信息。
- “header”:要求請(qǐng)求映射所匹配的請(qǐng)求必須攜帶header請(qǐng)求頭信息且header=value。
- “header”:要求請(qǐng)求映射所匹配的請(qǐng)求必須攜帶header請(qǐng)求頭信息且header!=value。
若當(dāng)前請(qǐng)求未滿足@RequestMapping注解的value和method屬性,但是不滿足headers屬性,頁面顯示404錯(cuò)誤。
@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é)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java 創(chuàng)建線程的兩個(gè)方法詳解及實(shí)例
這篇文章主要介紹了Java 創(chuàng)建線程的兩個(gè)方法詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-03-03
基于maven的springboot的"過時(shí)"用法解析
這篇文章主要為大家介紹了基于maven的springboot"過時(shí)"用法示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
使用Idea簡單快速搭建springcloud項(xiàng)目的圖文教程
這篇文章主要介紹了使用Idea簡單快速搭建springcloud項(xiàng)目,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
Java使用jdbc連接MySQL數(shù)據(jù)庫實(shí)例分析
這篇文章主要介紹了Java使用jdbc連接MySQL數(shù)據(jù)庫,結(jié)合實(shí)例形式分析了Java基于jdbc鏈接mysql的相關(guān)配置及工具類的定義相關(guān)操作技巧,需要的朋友可以參考下2018-07-07

