亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解SpringMVC中的@RequestMapping注解

 更新時(shí)間:2023年07月21日 10:09:03   作者:普通網(wǎng)友  
這篇文章主要介紹了SpringMVC中@RequestMapping注解,@RequestMapping注解是一個(gè)用來處理請(qǐng)求地址映射的注解,可用于映射一個(gè)請(qǐng)求或一個(gè)方法,可以用在類或方法上,需要的朋友可以參考下

前言

我們?cè)趯?shí)際的開發(fā)當(dāng)中,一個(gè)控制器中不一定只有一個(gè)方法,而這些方法都是用來處理請(qǐng)求的,那么怎樣才能將請(qǐng)求與處理方法一一對(duì)應(yīng)呢,當(dāng)然是通過 RequestMapping 注解來處理這些映射請(qǐng)求,也就是通過它來指定控制器可以處理哪些URL請(qǐng)求。

@RequestMapping注解是一個(gè)用來處理請(qǐng)求地址映射的注解,可用于映射一個(gè)請(qǐng)求或一個(gè)方法,可以用在類或方法上。

1.@RequestMapping可以標(biāo)注的位置

1.1 標(biāo)注在方法上

  • 用于方法上,表示在類的父路徑下追加方法上注解中的地址將會(huì)訪問到 該方法

@Controller public class RequestMappingController {

@Controller
public class RequestMappingController {
    @RequestMapping("/testRequest")
    public String testRequest(){
        return "success";
    }
}

此時(shí)請(qǐng)求映射所映射的請(qǐng)求的請(qǐng)求路徑為:////localhost:8080/springmvc_study02/testRequest

在這里插入圖片描述

注意:springmvc_study02是項(xiàng)目名稱

1.2 標(biāo)注在類和方法上

  • 用于類上,表示類中的所有響應(yīng)請(qǐng)求的方法都是以該地址作為父路徑。
@Controller 
@RequestMapping(“/hello”) 
public class RequestMappingController {
    @RequestMapping("/testRequest")
    public String testRequest(){
        return "success";
    }
}

此時(shí)請(qǐng)求映射所映射的請(qǐng)求的請(qǐng)求路徑為://localhost:8080/springmvc_study02/hello/testRequest

在這里插入圖片描述

注意:當(dāng)你在類上添加RequestMapping注解后,如果要請(qǐng)求映射,就意味著請(qǐng)求要先映射到標(biāo)注類的位置,然后再映射到該類的方法上。如果不加就會(huì)出現(xiàn)如下錯(cuò)誤

在這里插入圖片描述

2. @RequestMapping的屬性

  • 我們可以先查看一下源碼:按住Ctrl鍵,鼠標(biāo)點(diǎn)擊RequestMapping注解就可以看到下面的界面

在這里插入圖片描述

  • 在源碼中我們可以看到@RequestMapping的所有屬性,那么接下來就一起看一看這些屬性

2.1 @RequestMapping的value屬性*

  • @RequestMapping 的 value 屬性必須設(shè)值;
  • @RequestMapping 的 value 屬性是通過當(dāng)前請(qǐng)求的請(qǐng)求地址來匹配請(qǐng)求;
  • 從上面的源碼中可以看到value屬性是一個(gè)字符串類型的數(shù)組,因此說明可以將多個(gè)請(qǐng)求映射到一個(gè)方法上,只需要給 value 來指定一個(gè)包含多個(gè)路徑的數(shù)組。

設(shè)置value屬性的值:

@Controller
public class RequestMappingController {
    @RequestMapping(value = {"/testRequest","/test"})
    public String testRequest(){
        return "success";
    }
}

在瀏覽器中輸入下面路徑進(jìn)行測(cè)試:

在這里插入圖片描述

在這里插入圖片描述

注意:從上面兩張圖我們能夠看到,這時(shí)的請(qǐng)求映射所映射的請(qǐng)求的請(qǐng)求路徑為選擇value數(shù)組中的任意一個(gè)都可以。

2.2 @RequestMapping的method屬性*

  • @RequestMapping的method屬性是通過當(dāng)前請(qǐng)求的請(qǐng)求方式來匹配請(qǐng)求;
  • 瀏覽器向服務(wù)器發(fā)送請(qǐng)求,請(qǐng)求方式有很多GET、HEAD、POST、PUT、PATCH、DELETE、OPTIONS、TRACE??梢允褂?method 屬性來約束請(qǐng)求方式。

設(shè)置請(qǐng)求方式為get:

@Controller
public class RequestMappingController {
    @RequestMapping(value = "/testRequest",method = RequestMethod.GET)
    public String testRequest(){
        return "success";
    }
}

以post方式請(qǐng)求:

<form th:action="@{/testRequest}" method="post">
    <input type="submit">
</form>

請(qǐng)求結(jié)果:

在這里插入圖片描述

注意:我們?cè)贎RequestMapping注解里加一個(gè)方法限定:method = RequestMethod.GET,則請(qǐng)求必須是get的,否則就會(huì)發(fā)生以上的錯(cuò)誤。

映射方法中明確要求請(qǐng)求方式為get,所以post方式不被允許,只有修改為get,才能夠請(qǐng)求成功,如果要想兩種方式都支持,只需在@RequestMapping注解的method屬性中添加另一種方式即可,中間用英文逗號(hào)隔開。

擴(kuò)展:

@GetMapping:處理get方式請(qǐng)求的映射

@PostMapping:處理post方式請(qǐng)求的映射

@PutMapping:處理put方式請(qǐng)求的映射

@DeleteMapping:處理delete方式請(qǐng)求的映射

@GetMapping就相當(dāng)于@RequestMapping(method=RequestMethod.GET),它會(huì)將get映射到特定的方法上。

使用方式:@GetMapping(value = "/testRequest")

2.3 @RequestMapping的params屬性

@RequestMapping的params屬性是通過當(dāng)前請(qǐng)求的請(qǐng)求參數(shù)來匹配請(qǐng)求;

@RequestMapping的params屬性是一個(gè)字符串類型的數(shù)組,可以通過下面四種表達(dá)是來設(shè)置匹配關(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 參數(shù)的值必須為 value
  • “param!=value”: 要求請(qǐng)求映射的請(qǐng)求是必須包含 param 的請(qǐng)求參數(shù),其值不能為 value。

設(shè)置params的屬性值為username:

@RequestMapping(value = "/test",params = "username")
    public String test(){
        return "success";
    }

請(qǐng)求結(jié)果:

在這里插入圖片描述

注意:我們?cè)O(shè)置了params屬性,就意味著該請(qǐng)求映射的請(qǐng)求必須包含username才能夠請(qǐng)求成功。

當(dāng)我們傳入?yún)?shù)用//localhost:8080/springmvc_study02/test?username路徑來訪問,我們來看看結(jié)果:

在這里插入圖片描述

當(dāng)給params屬性設(shè)置多個(gè)屬性值時(shí),必須同時(shí)滿足才能夠請(qǐng)求成功,否則會(huì)出現(xiàn)下面的錯(cuò)誤

在這里插入圖片描述

2.4 @RequestMapping的headers屬性

@RequestMapping的headers屬性是通過當(dāng)前請(qǐng)求的請(qǐng)求頭信息來匹配請(qǐng)求;

@RequestMapping的headers屬性是一個(gè)字符串類型的數(shù)組,可以通過下面四種表達(dá)是來設(shè)置匹配關(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

設(shè)置請(qǐng)求頭信息:

 @RequestMapping(value = "/test",headers = "Host = localhost:8081")
    public String test(){
        return "success";
    }

請(qǐng)求結(jié)果:

在這里插入圖片描述

注意:如果當(dāng)前請(qǐng)求不滿足headers屬性,此時(shí)頁面就會(huì)顯示404錯(cuò)誤,即資源未找到。

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

相關(guān)文章

  • 最新版IDEA配置 Tomcat的詳細(xì)過程

    最新版IDEA配置 Tomcat的詳細(xì)過程

    本文介紹如何在IDEA中配置Tomcat服務(wù)器,并創(chuàng)建Web項(xiàng)目,首先檢查Tomcat是否安裝完成,然后在IDEA中創(chuàng)建Web項(xiàng)目并添加Web結(jié)構(gòu),接著,配置編譯輸出路徑和依賴,將Tomcat的jar包復(fù)制到項(xiàng)目中,最后,配置Tomcat服務(wù)器并運(yùn)行項(xiàng)目,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2025-01-01
  • Mybatis動(dòng)態(tài)sql中@Param使用詳解

    Mybatis動(dòng)態(tài)sql中@Param使用詳解

    這篇文章主要介紹了Mybatis動(dòng)態(tài)sql中@Param使用詳解,當(dāng)方法的參數(shù)為非自定義pojo類型,且使用了動(dòng)態(tài)sql,那么就需要在參數(shù)前加上@Param注解,需要的朋友可以參考下
    2023-10-10
  • Spring的@Value注入復(fù)雜類型(通過@value注入自定義類型)

    Spring的@Value注入復(fù)雜類型(通過@value注入自定義類型)

    Spring的@Value可以注入復(fù)雜類型嗎?今天教你通過@value注入自定義類型。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • @JsonProperty和@JSONField注解的區(qū)別解析(最新)

    @JsonProperty和@JSONField注解的區(qū)別解析(最新)

    Jackson是一款優(yōu)秀的JSON解析庫,添加了依賴之后就可以使用對(duì)應(yīng)的注解,讓我們能夠自由的將Java對(duì)象和JSON做轉(zhuǎn)換,這篇文章主要介紹了@JsonProperty和@JSONField注解的區(qū)別,需要的朋友可以參考下
    2024-04-04
  • java為何不能多繼承的原因詳解

    java為何不能多繼承的原因詳解

    多重繼承是一個(gè)子類從多個(gè)父類中繼承屬性和方法。C++, Common Lisp是時(shí)下支持多重繼承的流行語言。那java為何不能多繼承呢,下面小編帶大家來一起學(xué)習(xí)一下吧
    2019-06-06
  • Serializable接口的作用_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Serializable接口的作用_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了java中Serializable接口的作用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 阿里開源Java診斷工具神器使用及場(chǎng)景詳解

    阿里開源Java診斷工具神器使用及場(chǎng)景詳解

    這篇文章主要為大家介紹了阿里開源Java診斷工具神器使用及場(chǎng)景詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Java跨模塊調(diào)用方式

    Java跨模塊調(diào)用方式

    這篇文章主要介紹了Java跨模塊調(diào)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 從0構(gòu)建Oauth2Server服務(wù)之Refreshing-access-tokens

    從0構(gòu)建Oauth2Server服務(wù)之Refreshing-access-tokens

    這篇文章主要為大家介紹了從0構(gòu)建Oauth2Server服務(wù)之Refreshing-access-tokens刷新令牌示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • java并發(fā)編程之ThreadLocal詳解

    java并發(fā)編程之ThreadLocal詳解

    在鎖的使用中會(huì)導(dǎo)致運(yùn)行效率降低,ThreadLocal的使用徹底避免對(duì)共享資源的競(jìng)爭(zhēng),同時(shí)又可以不影響效率。本文詳細(xì)講解了ThreadLocal,需要了解的小伙伴可以看一看這篇文章
    2021-08-08

最新評(píng)論