欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringMVC中@RequestMapping注解的實(shí)現(xiàn)

 更新時間:2024年01月03日 15:08:37   作者:thdwx  
RequestMapping是一個用來處理請求地址映射的注解,本文主要介紹了SpringMVC中@RequestMapping注解的實(shí)現(xiàn),具有一定的參考價值,感興趣的可以了解一下

0. 多個方法對應(yīng)同一個請求

@RequestMapping("/")
    public String toIndex(){
        return "index";
    }
    
    @RequestMapping("/")
    public String toIndex2(){
        return "index";
    }

這種情況是不允許的,會報錯。

在這里插入圖片描述

1. 注解的功能

@RequestMapping注解的作用就是將請求地址和處理請求的控制器方法關(guān)聯(lián)起來,建立映射關(guān)系。
SpringMVC接收到指定的請求,就會找到映射關(guān)系中對應(yīng)的控制器方法來處理這個請求。

2. 注解位置

@RequestMapping注解既可以放在方法上,也可以放在類上。
標(biāo)識方法:設(shè)置映射的請求路徑的具體信息。
標(biāo)識類:設(shè)置映射的請求路徑的初始信息。
例如:如果有如下代碼

@RequestMapping("/hello")
@Controller
public class TestRequestMapping {
    @RequestMapping("/target")
    public String toTarget(){
        return "target";
    }
}

那么在訪問target之前必須加上/hello,否則訪問不到target,也就是url為 http://localhost:8080/項(xiàng)目上下文路徑/hello/target

在這里插入圖片描述

在這里插入圖片描述

3. value屬性

  • value屬性用于配置映射到控制器方法的請求路徑。
  • value屬性是一個字符串?dāng)?shù)組,表示該控制器方法可以匹配多個請求地址。如果指定了多個value值,那么請求時滿足其中之一即可。
  • value屬性必須設(shè)置。
    @RequestMapping({"/test1","/test2"})
    public String toTestValue(){
        return "testValue";
    }
<a th:href="@{/test1}" rel="external nofollow" >一個控制器方法匹配多個value測試1</a><br>
<a th:href="@{/test2}" rel="external nofollow" >一個控制器方法匹配多個value測試2</a><br>

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

4. method屬性

  • 通過請求方式映射控制器方法。
  • method屬性是一個RequestMethod類型數(shù)組,表示該方法可以匹配多個請求方式。如果指定了多個method值,那么請求時滿足其中之一即可。
  • 目前瀏覽器只能支持GET和POST方式。
  • 在提交表單時,如果指定了GET和POST以外的請求方式,則會默認(rèn)以GET請求發(fā)送。
  • 如果請求地址匹配,但是請求方式不匹配,則會返回405,請求方式不允許。
  • 如果不指定請求方式,則默認(rèn)可以處理所有請求方式。
  • 若要發(fā)送PUT和DELETE請求,則需通過spring提供的過濾器HiddenHttpMethodFilter。
@RequestMapping(value="/test3",method=RequestMethod.POST)
    public String toTestMethod(){
        return "testMethod";
    }
<a th:href="@{/test3}" rel="external nofollow" >method允許POST請求測試</a><br>
<form method="POST" th:action="@{/test3}">
    username<input name="username" type="text" /><br>
    <input type="submit" value="提交" /><br>
</form>
<form method="DELETE" th:action="@{/test3}">
    username<input name="username" type="text" /><br>
    <input type="submit" value="提交" /><br>
</form>

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

5. params屬性

  • 通過請求參數(shù)映射控制器方法。
  • params屬性是一個字符串?dāng)?shù)組,可以通過四種表達(dá)式設(shè)置請求參數(shù)和控制器映射的關(guān)系。如果指定了多個請求參數(shù),那么在請求時需要全部滿足。
    • “param”:要求請求參數(shù)必須攜帶名為param的參數(shù),參數(shù)值可以任意。
    • “!param”:要求請求參數(shù)中不能含有名為param的參數(shù)。
    • “param=value”:要求請求參數(shù)必須含有param且值為value。
    • “param!=value”:要求請求參數(shù)必須含有param且值不為value。
  • 如果請求匹配了value和method,但是沒有匹配params,會返回400狀態(tài)碼。
    /*這個注解表示請求參數(shù)要滿足如下要求
    1.要有username1,值任意
    2.不能有username2
    3.要有username3,且值為jack
    4.要有username4,且值不能為jack
    在寫鍵值對時,如果value為字符串類型,不需要使用單引號括起來,否則會出錯
     */
    @RequestMapping(value="/test4",params={"username1","!username2","username3=jack","username4!=jack"})
    public String toTestParams(){
        return "testParams";
    }
<!--使用?可以連接請求參數(shù),但是會標(biāo)紅,所以可以使用括號來表示請求參數(shù)-->
<a th:href="@{/test4(username3='jack',username4='asd')}" rel="external nofollow" >Params沒有username1測試</a><br>
<a th:href="@{/test4(username1='asd',username2='qw',username3='jack',username4='qew')}" rel="external nofollow" >Params有username2測試</a><br>
<a th:href="@{/test4(username1='dg',username3='asd',username4='oih')}" rel="external nofollow" >Params有username3但值不為jack測試</a><br>
<a th:href="@{/test4(username1='ih',username3='jack',username4='jack')}" rel="external nofollow" >Params有username4但值為jack測試</a><br>
<a th:href="@{/test4(username1='asd',username3='jack',username4='xcv')}" rel="external nofollow" >Params參數(shù)滿足條件測試</a><br>

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

6. headers屬性

  • 通過請求頭信息來匹配控制器方法。
  • headers屬性是一個字符串?dāng)?shù)組,可以通過四種表達(dá)式設(shè)置請求頭信息和控制器的匹配關(guān)系。如果指定了多個headers值,需要全部滿足。
    • “header”:要求請求頭中必須有header,值任意。
    • “!header”:要求請求頭中不能含有名為header的參數(shù)。
    • “header=value”:要求請求頭必須含有header且值為value。
    • “header!=value”:要求請求頭必須含有header且值不為value。
  • 如果請求滿足了value、method和params,但沒有滿足headers屬性,那么就會返回404狀態(tài)碼。
    @RequestMapping(value="/test5",headers = {"Host=localhost:8080","Accept-Encoding!=gzip, deflate, br"})
    public String toTestHeaders(){
        return "testHeaders";
    }
<a th:href="@{/test5}" rel="external nofollow" >Headers不滿足Accept-Encoding條件</a><br>

在這里插入圖片描述

修改headers屬性后,可以使條件滿足:

    @RequestMapping(value="/test5",headers = {"Host=localhost:8080","Accept-Encoding=gzip, deflate, br"})
    public String toTestHeaders(){
        return "testHeaders";
    }

在這里插入圖片描述

7. ant風(fēng)格的路徑

  • ?:表示任意單個字符。
  • *:表示任意0個或多個字符。
  • **:表示任意的一層或多層目錄。注意在使用時,兩個星號必須位于獨(dú)立的一層目錄內(nèi),例如前綴路徑/**/后綴路徑,前綴和后綴可以沒有,但是兩個星號前后或中間不能有任何內(nèi)容。

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

8. 路徑中的占位符

SpringMVC路徑中的占位符常用于RESTful風(fēng)格中,它允許將參數(shù)作為路徑的一部分發(fā)送給服務(wù)器,而不是以?連接在URL后。該方式傳遞的參數(shù)只能通過@PathVariable注解的value屬性中的同名變量獲得參數(shù)值。

    //大括號表示占位符
    @RequestMapping("/test6/{id}/{username}")
    public String toTest(@PathVariable("id")Integer id,@PathVariable("username")String username){
        System.out.println("id = "+id+"  "+"username = "+username);
        return "test";
    }

在這里插入圖片描述

到此這篇關(guān)于SpringMVC中@RequestMapping注解的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SpringMVC @RequestMapping注解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • 為了多次讀取ServletInputStream引發(fā)的一系列問題

    為了多次讀取ServletInputStream引發(fā)的一系列問題

    這篇文章主要介紹了為了多次讀取ServletInputStream引發(fā)的一系列問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • springboot項(xiàng)目打成war包部署到tomcat遇到的一些問題

    springboot項(xiàng)目打成war包部署到tomcat遇到的一些問題

    這篇文章主要介紹了springboot項(xiàng)目打成war包部署到tomcat遇到的一些問題,需要的朋友可以參考下
    2017-06-06
  • java 獲取mac地址的兩種方法(推薦)

    java 獲取mac地址的兩種方法(推薦)

    下面小編就為大家?guī)硪黄猨ava 獲取mac地址的兩種方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • java將文件轉(zhuǎn)成流文件返回給前端詳細(xì)代碼實(shí)例

    java將文件轉(zhuǎn)成流文件返回給前端詳細(xì)代碼實(shí)例

    Java編程語言提供了強(qiáng)大的文件處理和壓縮能力,下面這篇文章主要給大家介紹了關(guān)于java將文件轉(zhuǎn)成流文件返回給前端的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • java如何通過IP解析地理位置

    java如何通過IP解析地理位置

    這篇文章主要介紹了java如何通過IP解析地理位置的實(shí)例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Java中IO流之字符流與字節(jié)流的轉(zhuǎn)換方式

    Java中IO流之字符流與字節(jié)流的轉(zhuǎn)換方式

    在Java中,字節(jié)流與字符流是處理數(shù)據(jù)的兩種方式,字節(jié)流適用于處理各種數(shù)據(jù)類型,如圖片、音頻等非文本數(shù)據(jù),而字符流專門用于處理文本數(shù)據(jù),Java提供了InputStreamReader和OutputStreamWriter這兩個類來實(shí)現(xiàn)字節(jié)流向字符流的轉(zhuǎn)換
    2024-10-10
  • spring @Scheduled注解的使用誤區(qū)及解決

    spring @Scheduled注解的使用誤區(qū)及解決

    這篇文章主要介紹了spring @Scheduled注解的使用誤區(qū)及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • java如何使用redis加鎖

    java如何使用redis加鎖

    這篇文章主要介紹了java如何使用redis加鎖問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Ubuntu安裝jdk8常用方法流程解析

    Ubuntu安裝jdk8常用方法流程解析

    這篇文章主要介紹了Ubuntu安裝jdk8常用方法流程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • springboot執(zhí)行延時任務(wù)之DelayQueue的使用詳解

    springboot執(zhí)行延時任務(wù)之DelayQueue的使用詳解

    DelayQueue是一個無界阻塞隊(duì)列,只有在延遲期滿時,才能從中提取元素。這篇文章主要介紹了springboot執(zhí)行延時任務(wù)-DelayQueue的使用,需要的朋友可以參考下
    2019-12-12

最新評論