java中@requestMappling注解的使用
@RequestMapping注解的作用
從注解名稱上我們可以看到
@RequestMapping注解的作用就是將請(qǐng)求和處理請(qǐng)求的控制器方法關(guān)聯(lián)起來(lái),建立映射關(guān)系。
SpringMVC 接收到指定的請(qǐng)求,就會(huì)來(lái)找到在映射關(guān)系中對(duì)應(yīng)的控制器方法來(lái)處理這個(gè)請(qǐng)求。
@RequestMapping注解的位置
@RequestMapping標(biāo)識(shí)一個(gè)類:設(shè)置映射請(qǐng)求的請(qǐng)求路徑的初始信息(基礎(chǔ)信息)
@RequestMapping標(biāo)識(shí)一個(gè)方法:設(shè)置映射請(qǐng)求請(qǐng)求路徑的具體信息
controller控制層
處理首頁(yè)的控制層(標(biāo)識(shí)在方法上)
@Controller
public class ProtalController {
@RequestMapping("/")
public String protal(){
return "index";
}
}
標(biāo)識(shí)在類上和方法
@Controller
//標(biāo)記到類上,設(shè)置當(dāng)前請(qǐng)求映射的基礎(chǔ)信息,方法上是具體信息
@RequestMapping("/test")
public class TestRequestMapplingController {
// 控制器方法所配置的請(qǐng)求的請(qǐng)求路徑為/test/hello
@RequestMapping("/hello")
public String hello(){
return "success";
}
}
thymeleaf渲染頁(yè)面(index.html)
<body>
<h1>index.html</h1>
<a th:href="@{/hello}" rel="external nofollow" >測(cè)@RquestMappling標(biāo)識(shí)注解的位置</a>
</body>
跳轉(zhuǎn)的頁(yè)面)(success,html)
<body> <h1>跳轉(zhuǎn)成功</h1> </body>
@RequestMapping注解的value屬性
value屬性通過(guò)請(qǐng)求的請(qǐng)求地址匹配請(qǐng)求映射。
value屬性是一個(gè)字符串類型的數(shù)組,
即當(dāng)前瀏覽器所發(fā)送的請(qǐng)求路徑匹配value屬性中的任何一個(gè)值
則當(dāng)前請(qǐng)求就會(huì)被注解所標(biāo)識(shí)的方法進(jìn)行處理。
value屬性必須設(shè)置,至少通過(guò)請(qǐng)求地址匹配請(qǐng)求映射。
@Controller
public class TestRequestMapplingController {
@RequestMapping({"/hello","/second"})
public String hello(){
return "success";
}
}
@RequestMapping注解的method屬性
作用:@RequestMapping注解的method屬性是一個(gè)RequestMethod類型的 數(shù)組,表示該請(qǐng)求映射能夠匹配多種請(qǐng)求方式的請(qǐng)求。
規(guī)定控制器的方法在請(qǐng)求路徑匹配的情況下,當(dāng)前控制器方法處理請(qǐng)求的請(qǐng)求方式是什么?
當(dāng)前請(qǐng)求路徑和請(qǐng)求方式都能匹配,控制器方法才能處理這個(gè)請(qǐng)求。
注意:
通過(guò)請(qǐng)求的請(qǐng)求方式匹配請(qǐng)求。
當(dāng)前瀏覽器所發(fā)送的請(qǐng)求方式匹配method屬性中的任何一種請(qǐng)求方式,
則當(dāng)前請(qǐng)求就會(huì)被注解所標(biāo)識(shí)的方法進(jìn)行處理。
若瀏覽器所發(fā)送的請(qǐng)求的請(qǐng)求路徑和@RequestMapping注解value屬性匹配,
但是請(qǐng)求方式不匹配此時(shí),頁(yè)面報(bào)錯(cuò):405.....
get和post請(qǐng)求都可以匹配:method = {RequestMethod.GET,RequestMethod.POST}
@RequestMapping注解的method屬性通過(guò)請(qǐng)求的請(qǐng)求方式 (get或post) 匹配請(qǐng)求映射。
@RequestMapping(value = {"/hello","/second"},method = RequestMethod.GET )
public String hello(){
return "success";
}
@RequestMapping注解使用ant風(fēng)格路徑
?:表示任意的單個(gè)字符
注意:? 是當(dāng)前請(qǐng)求路徑中路徑和參數(shù)分割符,所以地址中 ?前面才是路徑,? 后面當(dāng)成請(qǐng)求參數(shù)
* :表示任意的0個(gè)或多個(gè)字符
** :表示任意層數(shù)的任意目錄
注意:在使用**時(shí),只能使用/**/xxx的方式
@RequestMapping("/a?a/test/ant")
public String testAnt(){
return "success";
}
thymeleaf渲染頁(yè)面
<a th:href="@{/aaa/test/ant}">測(cè)試測(cè)@RquestMappling注解支持ant風(fēng)格路徑</a>
@RequestMapping注解使用路徑中的占位符
原始方式:/deleteUser?id=1
rest方式:/user/delete/1
把傳輸服務(wù)器參數(shù)(例如下面的admin/1這兩個(gè)參數(shù))也作為路徑一部分,傳輸?shù)椒?wù)器中。
會(huì)把所有的內(nèi)容全部體現(xiàn)在路徑中,把id值傳過(guò)去就不用id和 ?
用原始方式是鍵值對(duì),用rest方式該如何獲取?,
就需要使用路徑中的占位符和@PathVariable注解。
thymeleaf渲染
<a th:href="@{/test/rest/admin/1}">測(cè)試測(cè)@RquestMappling的value屬性的占位符</a>
controller控制器
// {id}:占位符
@RequestMapping("/test/rest/{username}/{id}")
public String testRest(@PathVariable("id") Integer id,@PathVariable("username") String username){
System.out.println("id:"+id+"username:"+username);
return "success";
}
即匹配到當(dāng)前請(qǐng)求映射,還要在控制器方法中獲取傳遞過(guò)去的請(qǐng)求參數(shù)
以前是name=value,現(xiàn)在只有value。
只需要在控制器方法里面獲取占位符id這個(gè)值,賦值到參數(shù)里面,
所以需要在@RequestMapping注解的value屬性中設(shè)置的路徑中,使用{xx}的方式表示路徑中的數(shù)據(jù),和通過(guò)@PathVariable注解將占位符所標(biāo)識(shí)的值和控制器方法的形參進(jìn)行綁定(也就是路徑中的變量 )。
到此這篇關(guān)于java中@requestMappling注解的使用的文章就介紹到這了,更多相關(guān)java @requestMappling注解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實(shí)現(xiàn)學(xué)生管理系統(tǒng)(IO版)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
Java定時(shí)調(diào)用.ktr文件的示例代碼(解決方案)
這篇文章主要介紹了Java定時(shí)調(diào)用.ktr文件的示例代碼,本文給大家分享遇到問(wèn)題及解決方法,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
Java實(shí)現(xiàn)自動(dòng)獲取法定節(jié)假日詳細(xì)代碼
這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)自動(dòng)獲取法定節(jié)假日的相關(guān)資料,獲取并處理節(jié)假日數(shù)據(jù)是一個(gè)常見(jiàn)需求,特別是在需要安排任務(wù)調(diào)度、假期通知等功能的場(chǎng)景中,需要的朋友可以參考下2024-05-05
springboot自動(dòng)配置沒(méi)有生效的問(wèn)題定位(條件斷點(diǎn))
這篇文章主要介紹了springboot自動(dòng)配置未生效問(wèn)題定位,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,下面我們來(lái)學(xué)習(xí)一下吧2019-06-06
基于jQuery獲取table數(shù)據(jù)發(fā)送到后端
這篇文章主要介紹了基于jQuery獲取table數(shù)據(jù)發(fā)送到后端,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
Spring JPA聯(lián)表查詢之OneToOne源碼詳解
這篇文章主要為大家介紹了Spring JPA聯(lián)表查詢之OneToOne源碼詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
2020macOS Big Sur配置Java開(kāi)發(fā)環(huán)境之jdk安裝過(guò)程
這篇文章主要介紹了2020macOS Big Sur配置Java開(kāi)發(fā)環(huán)境之jdk安裝,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
詳解application.properties和application.yml文件的區(qū)別
這篇文章主要介紹了詳解application.properties和application.yml文件的區(qū)別,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01

