最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

0. 多個(gè)方法對(duì)應(yīng)同一個(gè)請(qǐng)求

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

這種情況是不允許的,會(huì)報(bào)錯(cuò)。

在這里插入圖片描述

1. 注解的功能

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

2. 注解位置

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

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

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

在這里插入圖片描述

在這里插入圖片描述

3. value屬性

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

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

4. method屬性

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

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

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

6. headers屬性

  • 通過(guò)請(qǐng)求頭信息來(lái)匹配控制器方法。
  • headers屬性是一個(gè)字符串?dāng)?shù)組,可以通過(guò)四種表達(dá)式設(shè)置請(qǐng)求頭信息和控制器的匹配關(guān)系。如果指定了多個(gè)headers值,需要全部滿足。
    • “header”:要求請(qǐng)求頭中必須有header,值任意。
    • “!header”:要求請(qǐng)求頭中不能含有名為header的參數(shù)。
    • “header=value”:要求請(qǐng)求頭必須含有header且值為value。
    • “header!=value”:要求請(qǐng)求頭必須含有header且值不為value。
  • 如果請(qǐng)求滿足了value、method和params,但沒有滿足headers屬性,那么就會(huì)返回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)格的路徑

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

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

8. 路徑中的占位符

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

    //大括號(hào)表示占位符
    @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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Java Fork/Join框架

    Java Fork/Join框架

    Fork/Join框架是Java7中新增的一項(xiàng)特性,也是Java7平臺(tái)的其中一項(xiàng)主要改進(jìn)。下面我們就來(lái)簡(jiǎn)單探討下Java的Fork/Join框架
    2016-09-09
  • SpringBoot 的參數(shù)配置示例全解析

    SpringBoot 的參數(shù)配置示例全解析

    Spring Boot的參數(shù)配置系統(tǒng)通過(guò)application.properties和application.yml文件實(shí)現(xiàn),支持多種外部配置方式,本文介紹SpringBoot 的參數(shù)配置示例全解析,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • 詳解SpringBoot與SpringCloud的版本對(duì)應(yīng)詳細(xì)版

    詳解SpringBoot與SpringCloud的版本對(duì)應(yīng)詳細(xì)版

    這篇文章主要介紹了詳解SpringBoot與SpringCloud的版本對(duì)應(yīng)詳細(xì)版,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • java實(shí)現(xiàn)簡(jiǎn)單銀行家算法

    java實(shí)現(xiàn)簡(jiǎn)單銀行家算法

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單銀行家算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • SpringBoot淺析緩存機(jī)制之Ehcache?2.x應(yīng)用

    SpringBoot淺析緩存機(jī)制之Ehcache?2.x應(yīng)用

    EhCache?是一個(gè)純Java的進(jìn)程內(nèi)緩存框架,具有快速、精干等特點(diǎn)。它是Hibernate中的默認(rèn)緩存框架。Ehcache已經(jīng)發(fā)布了3.1版本。但是本文的講解基于2.x版本
    2022-08-08
  • 淺析springcloud 整合 zipkin-server 內(nèi)存日志監(jiān)控

    淺析springcloud 整合 zipkin-server 內(nèi)存日志監(jiān)控

    Zipkin是一款開源的分布式實(shí)時(shí)數(shù)據(jù)追蹤系統(tǒng)(Distributed Tracking System),其主要功能是聚集來(lái)自各個(gè)異構(gòu)系統(tǒng)的實(shí)時(shí)監(jiān)控?cái)?shù)據(jù)。這篇文章主要介紹了springcloud 整合 zipkin-server 內(nèi)存日志監(jiān)控,需要的朋友可以參考下
    2019-11-11
  • logback的使用和logback.xml詳解(小結(jié))

    logback的使用和logback.xml詳解(小結(jié))

    Logback是由log4j創(chuàng)始人設(shè)計(jì)的另一個(gè)開源日志組件,這篇文章主要介紹了logback的使用和logback.xml詳解(小結(jié)),非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-11-11
  • Java SpringMVC數(shù)據(jù)響應(yīng)超詳細(xì)講解

    Java SpringMVC數(shù)據(jù)響應(yīng)超詳細(xì)講解

    Spring?MVC?是?Spring?提供的一個(gè)基于?MVC?設(shè)計(jì)模式的輕量級(jí)?Web?開發(fā)框架,本質(zhì)上相當(dāng)于?Servlet,Spring?MVC?角色劃分清晰,分工明細(xì),本章來(lái)講解SpringMVC數(shù)據(jù)響應(yīng)
    2022-04-04
  • springboot整合curator實(shí)現(xiàn)分布式鎖過(guò)程

    springboot整合curator實(shí)現(xiàn)分布式鎖過(guò)程

    這篇文章主要介紹了springboot整合curator實(shí)現(xiàn)分布式鎖過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • java?spring?mvc處理器映射器介紹

    java?spring?mvc處理器映射器介紹

    這篇文章主要介紹了java?spring?mvc處理器映射器,文章圍繞equestMapping解析映射介紹展開源碼內(nèi)容,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-03-03

最新評(píng)論

云南省| 建水县| 鸡西市| 沽源县| 抚松县| 安国市| 临潭县| 清新县| 景宁| 宜州市| 榆树市| 阜城县| 都匀市| 宝清县| 钟山县| 桐梓县| 德钦县| 汾阳市| 凤城市| 临城县| 二手房| 卢龙县| 成安县| 富源县| 泸州市| 合川市| 理塘县| 湄潭县| 大邑县| 兴城市| 博湖县| 随州市| 三江| 玉林市| 绥中县| 新兴县| 即墨市| 满城县| 冷水江市| 山西省| 岳阳县|