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

SpringMVC中的@RequestMapping注解解析

 更新時(shí)間:2023年12月19日 09:59:05   作者:GeGe&YoYo  
這篇文章主要介紹了SpringMVC中的@RequestMapping注解解析,SpringMVC使用@RequestMapping注解為控制器指定可以處理哪些?URL?請(qǐng)求,在控制器的類定義及方法定義處都可標(biāo)注@RequestMapping,需要的朋友可以參考下

1. RequestMapping 概念

SpringMVC使用@RequestMapping注解為控制器指定可以處理哪些 URL 請(qǐng)求。

在控制器的類定義及方法定義處都可標(biāo)注 @RequestMapping。

① 標(biāo)記在類上:提供初步的請(qǐng)求映射信息。相對(duì)于 WEB 應(yīng)用的根目錄

② 標(biāo)記在方法上:提供進(jìn)一步的細(xì)分映射信息。相對(duì)于標(biāo)記在類上的 URL。

若類上未標(biāo)注 @RequestMapping,則方法處標(biāo)記的 URL 相對(duì)于 WEB 應(yīng)用的根目錄 。

作用:DispatcherServlet 截獲請(qǐng)求后,就通過(guò)控制器上 @RequestMapping 提供的映射信息確定請(qǐng)求所 對(duì)應(yīng)的處理方法。

2. RequestMapping源碼

package org.springframework.web.bind.annotation;
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
	String[] value() default {};
	RequestMethod[] method() default {};
	String[] params() default {};
	String[] headers() default {};
	String[] consumes() default {};
	String[] produces() default {};
}

參數(shù)說(shuō)明

  • value:定義處理方法的請(qǐng)求的 URL 地址。(重點(diǎn))
  • method:定義處理方法的 http method 類型,如 GET、POST 等。(重點(diǎn))
  • params:定義請(qǐng)求的 URL 中必須包含的參數(shù)?;蛘卟话承﹨?shù)。(了解)
  • headers:定義請(qǐng)求中 Request Headers 必須包含的參數(shù)?;蛘卟话承﹨?shù)。(了解)

3. RequestMapping 用法

@RequestMapping 有兩種標(biāo)注方式,一種是標(biāo)注在類級(jí)別上,一種是標(biāo)注在方法級(jí)別上。標(biāo)注在方法上時(shí),value 表示訪問(wèn)該方法的 URL 地址。標(biāo)注在類上時(shí),value 相當(dāng)于一個(gè)命名空間,即訪問(wèn)該 Controller 下的任意方法都需要帶上這個(gè)命名空間。

value屬性

@Controller
@RequestMapping("/example")
public class ExampleController {
    @RequestMapping
    public String execute(){
        return "example_page";
    }
    @RequestMapping("/todo")
    public String doSomething(){
        return "example_todo_page";
    }
}
  • /example.action:執(zhí)行的是 execute() 方法。execute() 方法的 @RequestMapping 注解缺省 value 值,在這種情況下,當(dāng)訪問(wèn)命名空間時(shí)默認(rèn)執(zhí)行的是這個(gè)方法。方法級(jí)別上的 @RequestMapping 標(biāo)注是必須的,否則方法無(wú)法被正確訪問(wèn)。
  • /example/todo.action執(zhí)行的是 doSomething() 方法。類級(jí)別上的 @RequestMapping 標(biāo)注不是必須的,在不寫的情況下,方法上定義的 URL 都是絕對(duì)地址,否則,方法上定義的 URL 都是相對(duì)于它所在的 Controller 的。

method屬性

指定請(qǐng)求的method類型,可以接受GET,POST,PUT,DELETE等,默認(rèn)是可以接收GET請(qǐng)求和POST請(qǐng)求

@RequestMapping(value = "/register", method = RequestMethod.GET)
public String register1(){
    return "example_register_get_page";
}
@RequestMapping(value = "/register", method = RequestMethod.POST)
public String register2(){
    return "example_register_post_page";
} 
@RequestMapping({"/test02_01","/test02_02"})
public ModelAndView test02(){
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.addObject("hello", "test01");
    modelAndView.setViewName("hello");
    return modelAndView;
}
  • 可以為多個(gè)方法映射相同的 URI,不同的 http method 類型,Spring MVC 根據(jù)請(qǐng)求的 method 類型是可以區(qū)分開這些方法的。當(dāng) /example/register.action 是以 GET 的方式提交的時(shí)候,Spring MVC 調(diào)用 register1() 來(lái)處理請(qǐng)求;若是以 POST 的方式提交,則調(diào) register2() 來(lái)處理提交的請(qǐng)求。
  • method 若是缺省沒(méi)指定,并不是說(shuō)它默認(rèn)只處理 GET 方式的請(qǐng)求,而是它可以處理任何方式的 http method 類型的請(qǐng)求。指定 method 是為了細(xì)化映射 ( 縮小處理方法的映射范圍 ),在 method 沒(méi)有指定的情況下,它的映射范圍是最大的。

params屬性

params:指定request中必須包含某些參數(shù)值,才讓該方法處理

   @RequestMapping(value = "/test04",params = "id")
    public ModelAndView test04(){
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("hello", "test04");
        modelAndView.setViewName("hello");
        return modelAndView;
    }

在這里插入圖片描述

請(qǐng)求路徑?jīng)]有id則報(bào)錯(cuò)

在這里插入圖片描述

params還可以指定請(qǐng)求中屬性值必須為多少

在這里插入圖片描述

headers屬性

headers 的作用也是用于細(xì)化映射。只有當(dāng)請(qǐng)求的 Request Headers 中包含與 heanders 值相匹配的參數(shù),處理方法才會(huì)被調(diào)用。

@RequestMapping(value = "/specify", headers = "accept=text/*")
public String specify(){
	return "example_specify_page";
}

請(qǐng)求的 Request Headers 中 Accept 的值必須匹配 text/* ( 如 text/html ),方法才會(huì)被調(diào)用。

4. RequestMapping支持Ant風(fēng)格的通配符

通配符說(shuō)明示例
?匹配一個(gè)任意字符/a/?b 可以匹配/a/ab;/a/cb。但不能匹配/a/acb之類
*匹配任意長(zhǎng)度的字符/a/ *b可以匹配/a/cb;/a/acb。但不能匹配/a/cb/vb
**匹配多層路徑可以匹配/a/ab;/a/acb;/a/ab/abc/…/…

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

相關(guān)文章

  • Java將本地項(xiàng)目部署到Linux服務(wù)器的實(shí)踐

    Java將本地項(xiàng)目部署到Linux服務(wù)器的實(shí)踐

    本文主要介紹了Java將本地項(xiàng)目部署到Linux服務(wù)器的實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧<BR>
    2022-06-06
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(44)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(44)

    下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你
    2021-07-07
  • 一文教會(huì)你cmd命令運(yùn)行java程序

    一文教會(huì)你cmd命令運(yùn)行java程序

    這篇文章主要給大家介紹了關(guān)于如何使用cmd命令運(yùn)行java程序的相關(guān)資料,這是一個(gè)非常有用的技能,特別是當(dāng)您需要在沒(méi)有集成開發(fā)環(huán)境(IDE)的情況下編寫和運(yùn)行Java代碼時(shí),需要的朋友可以參考下<BR>
    2024-06-06
  • Spring Data + Thymeleaf 3 + Bootstrap 4 實(shí)現(xiàn)分頁(yè)器實(shí)例代碼

    Spring Data + Thymeleaf 3 + Bo

    本篇文章主要介紹了Spring Data + Thymeleaf 3 + Bootstrap 4 實(shí)現(xiàn)分頁(yè)器實(shí)例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-05-05
  • Java中遍歷Map集合的5種方式總結(jié)

    Java中遍歷Map集合的5種方式總結(jié)

    這篇文章主要給大家介紹了關(guān)于Java中遍歷Map集合的5種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Java將Word轉(zhuǎn)換成PDF的常用用法

    Java將Word轉(zhuǎn)換成PDF的常用用法

    Java開發(fā)人員在處理文檔轉(zhuǎn)換時(shí),常常需要將Word或Excel文檔轉(zhuǎn)換為PDF格式,以便于更好地保持格式一致性、便于分發(fā)和打印,這篇文章主要給大家介紹了關(guān)于Java將Word轉(zhuǎn)換成PDF的常用用法,需要的朋友可以參考下
    2024-08-08
  • JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)劃分原理詳解

    JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)劃分原理詳解

    這篇文章主要介紹了JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)劃分原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Maven中引入 springboot 相關(guān)依賴的方式(最新推薦)

    Maven中引入 springboot 相關(guān)依賴的方式(最新推薦)

    這篇文章主要介紹了Maven中引入 springboot 相關(guān)依賴的方式(最新推薦),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2025-04-04
  • SpringBoot之Profile的兩種使用方式詳解

    SpringBoot之Profile的兩種使用方式詳解

    當(dāng)在不同的環(huán)境下,想通過(guò)修改配置文件來(lái)連接不同的數(shù)據(jù)庫(kù),比如在開發(fā)過(guò)程中啟動(dòng)項(xiàng)目時(shí),想連接開發(fā)環(huán)境對(duì)應(yīng)的數(shù)據(jù)庫(kù),可以在配置文件中指定environment=dev,其他環(huán)境類似,此時(shí)就需要用到Spring為我們提供的Profile功能,本文給大家介紹了SpringBoot之Profile的兩種使用方式
    2024-10-10
  • java 基于maven多模塊合并打包部署的操作過(guò)程

    java 基于maven多模塊合并打包部署的操作過(guò)程

    這篇文章主要介紹了java 基于maven多模塊合并打包部署的操作過(guò)程,本文通過(guò)實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02

最新評(píng)論

贞丰县| 柞水县| 道孚县| 宜昌市| 和田县| 宣化县| 香格里拉县| 佳木斯市| 得荣县| 定安县| 麟游县| 泰和县| 南开区| 内江市| 黄大仙区| 乌什县| 乌兰察布市| 泊头市| 本溪| 沾化县| 海伦市| 利辛县| 宁陵县| 太康县| 扎鲁特旗| 颍上县| 嘉义县| 榆中县| 深圳市| 永顺县| 连平县| 沁阳市| 古浪县| 镇远县| 吴川市| 宜兴市| 松阳县| 敦煌市| 涡阳县| 河津市| 庆城县|