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

一文詳解SpringMVC中的@RequestMapping注解

 更新時(shí)間:2023年08月28日 08:52:36   作者:我有一顆五葉草  
@RequestMapping是一個(gè)用于映射HTTP請(qǐng)求到處理方法的注解,在Spring框架中使用,它可以用于控制器類(lèi)和處理方法上,用來(lái)指定處理不同URL路徑的請(qǐng)求,并定義請(qǐng)求的方法等,本文小編將給大家詳細(xì)的介紹一下SpringMVC中的@RequestMapping注解,需要的朋友可以參考下

@RequestMapping注解的常用屬性包括

  • value:用于指定URL路徑,可以是單個(gè)路徑字符串,或者是路徑字符串?dāng)?shù)組。

  • method:用于指定請(qǐng)求方法,可以是RequestMethod枚舉值,或者是RequestMethod數(shù)組。

  • params:用于指定請(qǐng)求的參數(shù)條件,可以是參數(shù)名或參數(shù)名值對(duì)的字符串?dāng)?shù)組。

  • headers:用于指定請(qǐng)求頭條件,可以是請(qǐng)求頭的名稱(chēng)和值的字符串?dāng)?shù)組。

@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping(value = "/login", method = RequestMethod.POST)
    public String login(@RequestParam("username") String username, @RequestParam("password") String password) {
        // 處理登錄請(qǐng)求
        return "success";
    }
    @RequestMapping(value = "/profile", method = RequestMethod.GET, params = "user=123")
    public String userProfile() {
        // 返回用戶(hù)資料頁(yè)面
        return "profile";
    }
}

上述示例中,@RequestMapping用于控制器類(lèi)上表示該類(lèi)處理以"/user"開(kāi)頭的所有請(qǐng)求。@RequestMapping用于處理方法上,其中value=“/login"表示處理”/user/login"路徑的POST請(qǐng)求,method=RequestMethod.POST表示只處理POST請(qǐng)求方法。@RequestParam注解用于獲取請(qǐng)求參數(shù)。

1、@RequestMapping注解的功能

從注解名稱(chēng)上我們可以看到,@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)求。

2、@RequestMapping注解的位置

@RequestMapping 標(biāo)識(shí)一個(gè)類(lèi):設(shè)置映射請(qǐng)求的請(qǐng)求路徑的初始信息
@RequestMapping 標(biāo)識(shí)一個(gè)方法:設(shè)置映射請(qǐng)求請(qǐng)求路徑的具體信息

@Controller
@RequestMapping("/test")
public class RequestMappingController {
	//此時(shí)請(qǐng)求映射所映射的請(qǐng)求的請(qǐng)求路徑為:/test/testRequestMapping
    @RequestMapping("/testRequestMapping")
    public String testRequestMapping(){
        return "success";
    }
}

3、@RequestMapping注解的value屬性

@RequestMapping注解的value屬性通過(guò)請(qǐng)求的請(qǐng)求地址匹配請(qǐng)求映射
@RequestMapping注解的value屬性是一個(gè)字符串類(lèi)型的數(shù)組,表示該請(qǐng)求映射能夠匹配多個(gè)請(qǐng)求地址所對(duì)應(yīng)的請(qǐng)求
@RequestMapping注解的value屬性必須設(shè)置,至少通過(guò)請(qǐng)求地址匹配請(qǐng)求映射

<a th:href="@{/testRequestMapping}" rel="external nofollow" >
  測(cè)試@RequestMapping的value屬性-->/testRequestMapping
</a><br>
<a th:href="@{/test}" rel="external nofollow"  rel="external nofollow" >
  測(cè)試@RequestMapping的value屬性-->/test
</a><br>
@RequestMapping(
        value = {"/testRequestMapping", "/test"}
)
public String testRequestMapping(){
    return "success";
}

4、@RequestMapping注解的method屬性

@RequestMapping注解的method屬性通過(guò)請(qǐng)求的請(qǐng)求方式(get或post)匹配請(qǐng)求映射
@RequestMapping注解的method屬性是一個(gè)RequestMethod類(lèi)型的數(shù)組,表示該請(qǐng)求映射能夠匹配多種請(qǐng)求方式的請(qǐng)求
若當(dāng)前請(qǐng)求的請(qǐng)求地址滿(mǎn)足請(qǐng)求映射的value屬性,但是請(qǐng)求方式不滿(mǎn)足method屬性,則瀏覽器報(bào)錯(cuò)405:Request method ‘POST’ not supported

<a th:href="@{/test}" rel="external nofollow"  rel="external nofollow" >測(cè)試@RequestMapping的value屬性-->/test</a><br>
<form th:action="@{/test}" method="post">
    <input type="submit">
</form>
@RequestMapping(
        value = {"/testRequestMapping", "/test"},
        method = {RequestMethod.GET, RequestMethod.POST}
)
public String testRequestMapping(){
    return "success";
}

注:
1、對(duì)于處理指定請(qǐng)求方式的控制器方法,SpringMVC中提供了@RequestMapping的派生注解
處理get請(qǐng)求的映射–>@GetMapping
處理post請(qǐng)求的映射–>@PostMapping
處理put請(qǐng)求的映射–>@PutMapping
處理delete請(qǐng)求的映射–>@DeleteMapping

2、常用的請(qǐng)求方式有g(shù)et,post,put,delete
但是目前瀏覽器只支持get和post,若在form表單提交時(shí),為method設(shè)置了其他請(qǐng)求方式的字符串(put或delete),則按照默認(rèn)的請(qǐng)求方式get處理
若要發(fā)送put和delete請(qǐng)求,則需要通過(guò)spring提供的過(guò)濾器HiddenHttpMethodFilter,在RESTful部分會(huì)講到

5、@RequestMapping注解的params屬性(了解)

@RequestMapping注解的params屬性通過(guò)請(qǐng)求的請(qǐng)求參數(shù)匹配請(qǐng)求映射
@RequestMapping注解的params屬性是一個(gè)字符串類(lèi)型的數(shù)組,可以通過(guò)四種表達(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

<a th:href="@{/test(username='admin',password=123456)" rel="external nofollow" >
  測(cè)試@RequestMapping的params屬性-->/test
</a><br>
@RequestMapping(
        value = {"/testRequestMapping", "/test"}
        ,method = {RequestMethod.GET, RequestMethod.POST}
        ,params = {"username","password!=123456"}
)
public String testRequestMapping(){
    return "success";
}

注:
若當(dāng)前請(qǐng)求滿(mǎn)足@RequestMapping注解的value和method屬性,但是不滿(mǎn)足params屬性,此時(shí)頁(yè)面回報(bào)錯(cuò)400:Parameter conditions “username, password!=123456” not met for actual request parameters: username={admin}, password={123456}

6、@RequestMapping注解的headers屬性(了解)

@RequestMapping注解的headers屬性通過(guò)請(qǐng)求的請(qǐng)求頭信息匹配請(qǐng)求映射
@RequestMapping注解的headers屬性是一個(gè)字符串類(lèi)型的數(shù)組,可以通過(guò)四種表達(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=value”:要求請(qǐng)求映射所匹配的請(qǐng)求必須攜帶header請(qǐng)求頭信息且header=value
“header!=value”:要求請(qǐng)求映射所匹配的請(qǐng)求必須攜帶header請(qǐng)求頭信息且header!=value
若當(dāng)前請(qǐng)求滿(mǎn)足@RequestMapping注解的value和method屬性,但是不滿(mǎn)足headers屬性,此時(shí)頁(yè)面顯示404錯(cuò)誤,即資源未找到

7、SpringMVC支持ant風(fēng)格的路徑

?:表示任意的單個(gè)字符
*:表示任意的0個(gè)或多個(gè)字符
:表示任意的一層或多層目錄
注意:在使用
時(shí),只能使用/**/xxx的方式

8、SpringMVC支持路徑中的占位符(重點(diǎn))

原始方式:/deleteUser?id=1
rest方式:/deleteUser/1
SpringMVC路徑中的占位符常用于RESTful風(fēng)格中,當(dāng)請(qǐng)求路徑中將某些數(shù)據(jù)通過(guò)路徑的方式傳輸?shù)椒?wù)器中,就可以在相應(yīng)的@RequestMapping注解的value屬性中通過(guò)占位符{xxx}表示傳輸?shù)臄?shù)據(jù),在通過(guò)@PathVariable注解,將占位符所表示的數(shù)據(jù)賦值給控制器方法的形參

<a th:href="@{/testRest/1/admin}" rel="external nofollow" >測(cè)試路徑中的占位符-->/testRest</a><br>
@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注解的詳細(xì)內(nèi)容,更多關(guān)于SpringMVC@RequestMapping注解的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Struts2配置文件中使用通配符的方法(三種形式)

    Struts2配置文件中使用通配符的方法(三種形式)

    Struts2是一個(gè)基于MVC設(shè)計(jì)模式的Web應(yīng)用框架,它本質(zhì)上相當(dāng)于一個(gè)servlet,在MVC設(shè)計(jì)模式中,Struts2作為控制器(Controller)來(lái)建立模型與視圖的數(shù)據(jù)交互。這篇文章主要介紹了Struts2配置文件中使用通配符的相關(guān)知識(shí),需要的朋友可以參考下
    2019-11-11
  • Java入門(mén)指南之IDEA高效調(diào)試與數(shù)組

    Java入門(mén)指南之IDEA高效調(diào)試與數(shù)組

    調(diào)試是指在程序運(yùn)行過(guò)程中,通過(guò)各種手段觀察程序的執(zhí)行狀態(tài)、變量值的變化等,以找出程序中存在的錯(cuò)誤或異常的過(guò)程,這篇文章主要介紹了Java入門(mén)指南之IDEA高效調(diào)試與數(shù)組的相關(guān)資料,需要的朋友可以參考下
    2026-05-05
  • java實(shí)現(xiàn)的2048游戲完整實(shí)例

    java實(shí)現(xiàn)的2048游戲完整實(shí)例

    這篇文章主要介紹了java實(shí)現(xiàn)的2048游戲,結(jié)合完整實(shí)例形式分析了java實(shí)現(xiàn)2048游戲功能的相關(guān)數(shù)值運(yùn)算、swing組件布局、事件響應(yīng)等相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • Java中==與equals的區(qū)別小結(jié)

    Java中==與equals的區(qū)別小結(jié)

    這篇文章主要介紹了Java中==與equals的區(qū)別小結(jié),本文總結(jié)結(jié)論:== 與 equals()比較的內(nèi)容是不同的,equals()方式是String類(lèi)中的方法,它用于比較兩個(gè)對(duì)象引用所指的內(nèi)容是否相等,而 == 比較的是兩個(gè)對(duì)象引用的地址是否相等,需要的朋友可以參考下
    2015-06-06
  • Java實(shí)體映射工具M(jìn)apStruct使用方法詳解

    Java實(shí)體映射工具M(jìn)apStruct使用方法詳解

    MapStruct是用于代碼中JavaBean對(duì)象之間的轉(zhuǎn)換,例如DO轉(zhuǎn)換為DTO,DTO轉(zhuǎn)換為VO,或Entity轉(zhuǎn)換為VO等場(chǎng)景,這篇文章主要給大家介紹了關(guān)于Java實(shí)體映射工具M(jìn)apStruct使用的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • 如何使用IDEA新建一個(gè)普通的Javaweb項(xiàng)目

    如何使用IDEA新建一個(gè)普通的Javaweb項(xiàng)目

    今天給大家普及如何使用IDEA新建一個(gè)普通的Javaweb項(xiàng)目及配置tomcat的方法,在文末給大家提到如果不想每次都重啟tomcat,可以設(shè)置快捷方式,對(duì)idea新建Javaweb項(xiàng)目感興趣的朋友一起看看吧
    2021-06-06
  • 淺析Java關(guān)鍵詞synchronized的使用

    淺析Java關(guān)鍵詞synchronized的使用

    Synchronized是java虛擬機(jī)為線(xiàn)程安全而引入的。這篇文章主要為大家介紹一下Java關(guān)鍵詞synchronized的使用與原理,需要的可以參考一下
    2022-12-12
  • 高并發(fā)計(jì)數(shù)器LongAdder 實(shí)現(xiàn)原理與使用場(chǎng)景詳解

    高并發(fā)計(jì)數(shù)器LongAdder 實(shí)現(xiàn)原理與使用場(chǎng)景詳解

    這篇文章主要介紹了高并發(fā)計(jì)數(shù)器LongAdder 實(shí)現(xiàn)原理與使用場(chǎng)景詳解,通過(guò)理解 LongAdder 的設(shè)計(jì)哲學(xué)和實(shí)現(xiàn)細(xì)節(jié),開(kāi)發(fā)者可以在高并發(fā)場(chǎng)景中做出更優(yōu)的技術(shù)選型,在保證線(xiàn)程安全的前提下實(shí)現(xiàn) 5-10 倍的性能提升,需要的朋友可以參考下
    2025-06-06
  • 解決線(xiàn)程池中ThreadGroup的坑

    解決線(xiàn)程池中ThreadGroup的坑

    這篇文章主要介紹了解決線(xiàn)程池中ThreadGroup的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java調(diào)用Creo?2.0讀取/修改模型參數(shù)的實(shí)戰(zhàn)指南

    Java調(diào)用Creo?2.0讀取/修改模型參數(shù)的實(shí)戰(zhàn)指南

    本文詳細(xì)講解了使用Java調(diào)用Creo2.0實(shí)現(xiàn).prt模型參數(shù)讀取與修改的方法,強(qiáng)調(diào)方向大于努力,不可完全依賴(lài)AI;提供實(shí)測(cè)可用代碼、操作步驟及避坑要點(diǎn);涵蓋環(huán)境配置、關(guān)鍵注意事項(xiàng)、執(zhí)行步驟與常見(jiàn)問(wèn)題排查等內(nèi)容,適合Creel.0二次開(kāi)發(fā)新手參考,需要的朋友可以參考下
    2026-05-05

最新評(píng)論

陆丰市| 云林县| 迁西县| 健康| 阿克苏市| 浪卡子县| 汝南县| 镇坪县| 衢州市| 景谷| 昭通市| 山东| 凌源市| 崇阳县| 平谷区| 霍林郭勒市| 思茅市| 和静县| 和平区| 普宁市| 涿州市| 成都市| 高平市| 从化市| 扬中市| 花莲县| 化州市| 大姚县| 永仁县| 松潘县| 黑龙江省| 南和县| 东乡族自治县| 闽侯县| 华蓥市| 伊宁县| 百色市| 阜新市| 库尔勒市| 大庆市| 民权县|