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

基于SpringMVC @RequestMapping的參數(shù)和用法

 更新時(shí)間:2021年08月11日 15:58:20   作者:流煙默  
這篇文章主要介紹了SpringMVC @RequestMapping的參數(shù)和用法解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

@RequestMapping的參數(shù)和用法

RequestMapping里面的注解包含的參數(shù)如圖:

這里寫圖片描述

RequestMapping是一個(gè)用來處理請求地址映射的注解,可用于類或方法上。用于類上,表示類中的所有響應(yīng)請求的方法都是以該地址作為父路徑。

@RequestMapping 除了修飾方法, 還可來修飾類 :

類定義處:提供初步的請求映射信息。相對(duì)于 WEB 應(yīng)用的根目錄;

方法處:提供進(jìn)一步的細(xì)分映射信息。 相對(duì)于類定義處的 URL。

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

返回ModelAndView時(shí)的url會(huì)根據(jù)你的 @RequestMapping實(shí)際情況組成。

如果類上沒有映射,那么url直接就是方法的映射;否則url為類上+方法上映射路徑組合。

對(duì)應(yīng)項(xiàng)目jsp位置則是一級(jí)路徑對(duì)應(yīng)一級(jí)文件目錄。

如url為/default/index對(duì)應(yīng)項(xiàng)目中webapp/default/index.jsp

RequestMapping注解有六個(gè)屬性,下面我們把她分成三類進(jìn)行說明

【1】value, method

value:指定請求的實(shí)際地址,指定的地址可以是URI Template 模式;

method: 指定請求的method類型, GET、POST、PUT、DELETE等;

【2】consumes,produces

consumes: 指定處理請求的提交內(nèi)容類型(Content-Type),例如application/json, text/html;

produces:指定返回的內(nèi)容類型,僅當(dāng)request請求頭中的(Accept)類型中包含該指定類型才返回;

【3】params,headers

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

headers: 指定request中必須包含某些指定的header值,才能讓該方法處理請求。

測試示例如下:

【1】value||path

  • JSP 頁面
<a href="springmvc/testRequestMapping" rel="external nofollow" >Test RequestMapping</a>
  • controller
    @RequestMapping(value="/testRequestMapping" )
    public String testRequestMapping() {
        System.out.println("testRequestMapping");
        return SUCCESS;
    }

成功返回success.jsp 。

Tips :若 href 屬性值,不等于value值,則將提示404錯(cuò)誤。

value的uri值為以下三類:

A) 可以指定為普通的具體值;

如下:

@RequestMapping("/testRequestMapping")

B) 可以指定為含有某變量的一類值(URI Template Patterns with Path Variables)–restful風(fēng)格;

    @RequestMapping("/testPathVariable/{id}")
    public String testPathVariable(@PathVariable Integer id2) {
        System.out.println("testPathVariable: " + id2);
        return SUCCESS;
    }

除了value還有path,二者效果等同,可以參考源碼如下圖:

這里寫圖片描述

其中關(guān)于@PathVariable 有如下說明:

① 如果路徑中的變量與方法中的變量名一致,可直接使用@PathVariable;

② 如果二者不一致,則使用@PathVariable(Variable)顯示指定要綁定的路徑中的變量 。

@PathVariable只能綁定路徑中的占位符參數(shù),且路徑中必須有參數(shù)。

@PathVariable用法參考路徑參數(shù)綁定參考

    @RequestMapping("/testPathVariable/{id}")
    public String testPathVariable(@PathVariable("id") Integer id2) {
        System.out.println("testPathVariable: " + id2);
        return SUCCESS;
    }
    //路徑中的 id 與 方法中的 id2 綁定

C) 可以指定為含正則表達(dá)式的一類值( URI Template Patterns with Regular Expressions);

  @RequestMapping("/spring-web/{symbolicName:[a-z-]+}-{version:\d\.\d\.\d}.{extension:\.[a-z]}")  
  public void handle(@PathVariable String version, @PathVariable String extension) {      
    // ...  
  }  
}  

【2】method

  • JSP 頁面
<a href="springmvc/testMethod" rel="external nofollow" >Test Method</a>
//href 默認(rèn)為get 請求。
  • controller–限制接收post 請求。
    @RequestMapping(value = "/testMethod", method = RequestMethod.POST)
    public String testMethod() {
        System.out.println("testMethod");
        return SUCCESS;
    }
  • result as follows :

HTTP Status 405 - Request method ‘GET' not supported 。

這里寫圖片描述

【狀態(tài)碼405表示:請求中指定的方法不被允許?!?/p>

將method 改為method = RequestMethod.GET正常跳轉(zhuǎn)頁面。

【3】consumes

  • JSP 頁面

仍以testMethod為例,提交表單。

默認(rèn)contentType為Content-Type:application/x-www-form-urlencoded。

<form action="springmvc/testMethod" method="POST">
<input type="text" name="username" value=""/>
<input type="submit" value="submit"/>
</form>

這里寫圖片描述

  • controller–限制接收post 請求以及consumes="application/json"。
    @RequestMapping(value = "/testMethod", method = RequestMethod.POST,consumes="application/json")
    public String testMethod() {
        System.out.println("testMethod");
        return SUCCESS;
    }
  • result as follows :

這里寫圖片描述

【狀態(tài)碼415表示:由于媒介類型不被支持,服務(wù)器不會(huì)接受請求。?!?/p>

去掉 consumes屬性,頁面正常跳轉(zhuǎn) !

【4】produces

后臺(tái)代碼如下:

    @RequestMapping(value = "/testMethod", method = RequestMethod.POST,produces="application/json")
    public void testMethod2(HttpServletRequest request,HttpServletResponse response,Model model) 
    throws IOException {
        request.getHeader("Accept");
        System.out.println(request.getHeader("Accept"));
//      response.setContentType("application/json");
        String username = request.getParameter("username");
        System.out.println("testMethod..."+username);
        model.addAttribute("user", username);
        Object jsonString =  "{'name': 'helloworlda'}";
        JSONObject jsonobj=JSONObject.fromObject(jsonString);
        PrintWriter out = response.getWriter();
        out.print(jsonobj);
    }
  • 瀏覽器請求頭
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

其中最后一項(xiàng) : */*;q=0.8。

該項(xiàng)表明可以接收任何類型的,權(quán)重系數(shù)0.8表明如果前面幾種類型不能正常接收。則使用該項(xiàng)進(jìn)行自動(dòng)分析。

application/json 幾種主流瀏覽器都可以自動(dòng)解析。

【5】params

  • JSP頁面
form action="springmvc/testParamsAndHeaders" method="POST">
<input type="text" name="username" value=""/>
<input type="text" name="age" value=""/>
<input type="submit" value="submit"/>
</form>

參數(shù) username=tom;age = 10;

  • 后臺(tái)代碼:

設(shè)定必須包含username 和age兩個(gè)參數(shù),且age參數(shù)不為10 (可以有多個(gè)參數(shù))。

@RequestMapping(value = "testParamsAndHeaders", params = { "username","age!=10" })
    public String testParamsAndHeaders() {
        System.out.println("testParamsAndHeaders");
        return SUCCESS;
    }
  • result as follows :

這里寫圖片描述

【狀態(tài)碼400表示:服務(wù)器未能理解請求。 】

  • 將age 改為其他值,正常跳轉(zhuǎn)。

這里寫圖片描述

【6】headers

  • 瀏覽器請求頭如下:

這里寫圖片描述

  • 后臺(tái)測試代碼如下:
@RequestMapping(value = "testParamsAndHeaders", params = { "username","age!=10" }, headers = { "Accept-Language=US,zh;q=0.8" })
    public String testParamsAndHeaders() {
        System.out.println("testParamsAndHeaders");
        return SUCCESS;
    }

設(shè)定請求頭中第一語言必須為US。

  • result as follows :

這里寫圖片描述

【狀態(tài)碼404表示:服務(wù)器無法找到被請求的頁面?!?/p>

將后臺(tái)代碼改為zh-CN。。。

這里寫圖片描述

頁面正常跳轉(zhuǎn)。

【Tips】:

① 服務(wù)器首先根據(jù)URL去找頁面,如果找不到就返回404;

② 如果找到,但是不能正常處理,就會(huì)返回 5XX 類型錯(cuò)誤。

其中在第一步過程中,會(huì)根據(jù)請求頭進(jìn)行一系列判斷 !

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • spring mvc使用@InitBinder標(biāo)簽對(duì)表單數(shù)據(jù)綁定的方法

    spring mvc使用@InitBinder標(biāo)簽對(duì)表單數(shù)據(jù)綁定的方法

    這篇文章主要介紹了spring mvc使用@InitBinder標(biāo)簽對(duì)表單數(shù)據(jù)綁定的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • JAVA內(nèi)部類示例詳解及練習(xí)

    JAVA內(nèi)部類示例詳解及練習(xí)

    這篇文章主要為大家詳細(xì)介紹了Java的內(nèi)部類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • springmvc+shiro自定義過濾器的實(shí)現(xiàn)代碼

    springmvc+shiro自定義過濾器的實(shí)現(xiàn)代碼

    這篇文章主要介紹了springmvc+shiro自定義過濾器的實(shí)現(xiàn)方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-10-10
  • Java生成由時(shí)間組成的訂單號(hào)方式

    Java生成由時(shí)間組成的訂單號(hào)方式

    這篇文章主要介紹了Java生成由時(shí)間組成的訂單號(hào)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 一文帶你掌握SpringBoot中常見定時(shí)任務(wù)的實(shí)現(xiàn)

    一文帶你掌握SpringBoot中常見定時(shí)任務(wù)的實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了Spring?Boot中定時(shí)任務(wù)的基本用法、高級(jí)特性以及最佳實(shí)踐,幫助開發(fā)人員更好地理解和應(yīng)用定時(shí)任務(wù),提高系統(tǒng)的穩(wěn)定性和可靠性,需要的可以參考下
    2024-03-03
  • Mybatis關(guān)于動(dòng)態(tài)排序 #{} ${}問題

    Mybatis關(guān)于動(dòng)態(tài)排序 #{} ${}問題

    這篇文章主要介紹了Mybatis關(guān)于動(dòng)態(tài)排序 #{} ${}問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • SpringCloud?Gateway實(shí)現(xiàn)API接口加解密

    SpringCloud?Gateway實(shí)現(xiàn)API接口加解密

    這篇文章主要為大家介紹了SpringCloud?Gateway如何實(shí)現(xiàn)API接口加解密的,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定的幫助,需要的可以參考一下
    2022-06-06
  • Java?9?中的模塊Module系統(tǒng)

    Java?9?中的模塊Module系統(tǒng)

    Java?9?引入的模塊是在Java包(package)的基礎(chǔ)上又引入的一個(gè)新的抽象層,基于package這一點(diǎn)很重要,這里需要強(qiáng)調(diào)一下,接下來通過本文給大家介紹Java?9?中的模塊Module系統(tǒng),感興趣的朋友一起看看吧
    2022-03-03
  • java如何不通過構(gòu)造函數(shù)創(chuàng)建對(duì)象(Unsafe)

    java如何不通過構(gòu)造函數(shù)創(chuàng)建對(duì)象(Unsafe)

    這篇文章主要介紹了java如何不通過構(gòu)造函數(shù)創(chuàng)建對(duì)象(Unsafe)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Java中switch的三種用法方式小結(jié)

    Java中switch的三種用法方式小結(jié)

    這篇文章主要介紹了Java中switch的三種用法方式小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評(píng)論