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

Java @RequestMapping注解功能使用詳解

 更新時(shí)間:2022年11月08日 10:02:32   作者:學(xué)習(xí)使我快樂(lè)T  
通過(guò)@RequestMapping注解可以定義不同的處理器映射規(guī)則,下面這篇文章主要給大家介紹了關(guān)于SpringMVC中@RequestMapping注解用法的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、@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)求路徑的初始信息

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

@Controller
@RequestMapping("/test")
public class TestRequestMappingController {
    //此時(shí)控制器方法所匹配的請(qǐng)求的請(qǐng)求路徑為/test/hello
    @RequestMapping("/hello")
    public String hello() {
        return "success";
    }
}

三、@RequestMapping注解的value屬性

@RequestMapping注解的value屬性通過(guò)請(qǐng)求的請(qǐng)求地址匹配請(qǐng)求映射

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

@RequestMapping注解的value屬性必須設(shè)置,至少通過(guò)請(qǐng)求地址匹配請(qǐng)求映射

測(cè)試映射請(qǐng)求控制器

@Controller
//@RequestMapping("/test")
public class TestRequestMappingController {
    //此時(shí)控制器方法所匹配的請(qǐng)求的請(qǐng)求路徑為/test/hello
    @RequestMapping({"/hello","/abc"})
    public String hello() {
        return "success";
    }
}

index.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymelef.org">
<head>
    <meta charset="UTF-8">
    <title>首頁(yè)</title>
</head>
<body>
    <h1>index.html</h1>
    <a th:href="@{/hello}" rel="external nofollow"  rel="external nofollow" >測(cè)試@RequestMapping注解所標(biāo)識(shí)的位置</a>
    <a th:href="@{/abc}" rel="external nofollow"  rel="external nofollow" >測(cè)試@RequestMapping注解的value屬性</a>
</body>
</html>

success.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymelef.org">
<head>
    <meta charset="UTF-8">
    <title>首頁(yè)</title>
</head>
<body>
  <h1>success.html</h1>
</body>
</html>

結(jié)果:

點(diǎn)超鏈接跳轉(zhuǎn)到下面頁(yè)面

四、@RequestMapping注解的method屬性

@RequestMapping注解的method屬性通過(guò)請(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)錯(cuò) 405:Request method 'POST' not supported

注:

除了表單我們默認(rèn)就是post請(qǐng)求,其他的都是get請(qǐng)求

@Controller
//@RequestMapping("/test")
public class TestRequestMappingController {
    //此時(shí)控制器方法所匹配的請(qǐng)求的請(qǐng)求路徑為/test/hello
    @RequestMapping(
            value = {"/hello","/abc"},
            method = RequestMethod.POST)
    public String hello() {
        return "success";
    }
}
    <h1>index.html</h1>
    <a th:href="@{/hello}" rel="external nofollow"  rel="external nofollow" >測(cè)試@RequestMapping注解所標(biāo)識(shí)的位置</a>
    <a th:href="@{/abc}" rel="external nofollow"  rel="external nofollow" >測(cè)試@RequestMapping注解的value屬性</a>
    <form th:action="@{/hello}" method="post">
        <input type="submit" value="測(cè)試@RequestMapping注解的method屬性">
    </form>

結(jié)果:

除了按鈕可以跳轉(zhuǎn)頁(yè)面,其他的都報(bào)405錯(cuò)誤-方法不允許。因?yàn)楸韱卧O(shè)置了post請(qǐng)求,我們的@RequestMapping注解的method屬性配置的也是post請(qǐng)求

@Controller
//@RequestMapping("/test")
public class TestRequestMappingController {
    //此時(shí)控制器方法所匹配的請(qǐng)求的請(qǐng)求路徑為/test/hello
    @RequestMapping(
            value = {"/hello","/abc"},
            method = {RequestMethod.POST,RequestMethod.GET})
    public String hello() {
        return "success";
    }
}

上面這種方式也可以匹配兩種請(qǐng)求,不過(guò)默認(rèn)的情況下也是匹配兩種請(qǐng)求

注:

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ì)講到

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

@RequestMapping注解的params屬性通過(guò)請(qǐng)求的請(qǐng)求參數(shù)匹配請(qǐng)求映射 @RequestMapping注解的params屬性是一個(gè)字符串類型的數(shù)組,可以通過(guò)四種表達(dá)式設(shè)置請(qǐng)求參數(shù)和請(qǐng)求映射的匹配關(guān)系

params可以使用四種表達(dá)式:

"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

路徑匹配,請(qǐng)求方式也匹配,但是請(qǐng)求參數(shù)不匹配,因?yàn)橐笪覀兊恼?qǐng)求參數(shù)必須有username。報(bào)400錯(cuò)誤請(qǐng)求-Parameter conditions "username" not met for actual request parameters:

請(qǐng)求參數(shù)必須有username,不能有password,年齡必須為20,性別必須不等于女

@Controller
//@RequestMapping("/test")
public class TestRequestMappingController {
    //此時(shí)控制器方法所匹配的請(qǐng)求的請(qǐng)求路徑為/test/hello
    @RequestMapping(
            value = {"/hello","/abc"},
            method = {RequestMethod.POST,RequestMethod.GET},
            params = {"username","!password","age=20","gender!=女"}
    )
    public String hello() {
        return "success";
    }
}
    <a th:href="@{/hello?username=admin}" rel="external nofollow" >測(cè)試@RequestMapping注解的params屬性</a><br>
    <a th:href="@{/hello(username='admin')}" rel="external nofollow" >測(cè)試@RequestMapping注解的params屬性</a><br>

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

@RequestMapping注解的headers屬性通過(guò)請(qǐng)求的請(qǐng)求頭信息匹配請(qǐng)求映射 @RequestMapping注解的headers屬性是一個(gè)字符串類型的數(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)求滿足@RequestMapping注解的value和method屬性,但是不滿足headers屬性,此時(shí)頁(yè)面 顯示404錯(cuò)誤,即資源未找到

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

?:表示任意的單個(gè)字符

*:表示任意的0個(gè)或多個(gè)字符

**:表示任意層數(shù)的任意目錄

注意:在使用**時(shí),只能使用/**/xxx的方式

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

原始方式:/deleteUser?id=1

rest方式:/user/delete/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="@{test/rest/admin/1}" rel="external nofollow" >測(cè)試@RequestMapping注解的value屬性中的占位符</a>
    @RequestMapping("/test/username/{username}/{id}")
    public String testRest(@PathVariable("id") Integer id,@PathVariable("username") String username) {
        System.out.println("id:" + id + ",username:" + username);
        return "success";
    }
}

到此這篇關(guān)于Java @RequestMapping注解功能使用詳解的文章就介紹到這了,更多相關(guān)Java @RequestMapping內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java語(yǔ)言Consistent Hash算法學(xué)習(xí)筆記(代碼示例)

    Java語(yǔ)言Consistent Hash算法學(xué)習(xí)筆記(代碼示例)

    這篇文章主要介紹了Java語(yǔ)言Consistent Hash算法學(xué)習(xí)筆記(代碼示例),分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • 詳解Java線性結(jié)構(gòu)中的鏈表

    詳解Java線性結(jié)構(gòu)中的鏈表

    除了一些算法之外,我們還有掌握一些常見的數(shù)據(jù)結(jié)構(gòu),比如數(shù)組、鏈表、棧、隊(duì)列、樹等結(jié)構(gòu),所以接下來(lái)就給大家詳細(xì)講解一下線性結(jié)構(gòu)中的鏈表,需要的朋友可以參考下
    2023-07-07
  • 詳解Java中Period類的使用方法

    詳解Java中Period類的使用方法

    Period類通過(guò)年、月、日相結(jié)合來(lái)描述一個(gè)時(shí)間量,最高精度是天。本文將通過(guò)示例詳細(xì)為大家講講Period類的使用,需要的可以參考一下
    2022-05-05
  • JAVA垃圾收集器與內(nèi)存分配策略詳解

    JAVA垃圾收集器與內(nèi)存分配策略詳解

    這篇文章介紹了JAVA垃圾收集器與內(nèi)存分配策略,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2015-07-07
  • SpringMVC MVC架構(gòu)原理及實(shí)現(xiàn)方法詳解

    SpringMVC MVC架構(gòu)原理及實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了SpringMVC MVC架構(gòu)原理及實(shí)現(xiàn)方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • java 內(nèi)部類的詳解及實(shí)例

    java 內(nèi)部類的詳解及實(shí)例

    這篇文章主要介紹了 java 內(nèi)部類的詳解及實(shí)例的相關(guān)資料,這里提供了兩種內(nèi)部類的實(shí)現(xiàn)方法,并給出實(shí)例,需要的朋友可以參考下
    2017-08-08
  • idea復(fù)制module(項(xiàng)目)并在一個(gè)窗口展示的教程詳解

    idea復(fù)制module(項(xiàng)目)并在一個(gè)窗口展示的教程詳解

    這篇文章主要介紹了idea復(fù)制module(項(xiàng)目)并在一個(gè)窗口展示的方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Java并發(fā)之條件阻塞Condition的應(yīng)用代碼示例

    Java并發(fā)之條件阻塞Condition的應(yīng)用代碼示例

    這篇文章主要介紹了Java并發(fā)之條件阻塞Condition的應(yīng)用代碼示例,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • Java中的UrlDecoder 和 UrlEncoder_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java中的UrlDecoder 和 UrlEncoder_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    HTML 格式編碼的實(shí)用工具類。該類包含了將 String 轉(zhuǎn)換為 application/x-www-form-urlencoded MIME 格式的靜態(tài)方法。下文通過(guò)實(shí)例代碼給大家介紹Java中的UrlDecoder 和 UrlEncoder知識(shí),感興趣的的朋友一起看看吧
    2017-07-07
  • SpringBoot自動(dòng)裝配原理以及分析

    SpringBoot自動(dòng)裝配原理以及分析

    這篇文章主要介紹了SpringBoot自動(dòng)裝配原理以及分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評(píng)論