激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 基于SpringMVC @RequestMapping的參數和用法

基于SpringMVC @RequestMapping的參數和用法

2021-11-15 11:01流煙默 Java教程

這篇文章主要介紹了SpringMVC @RequestMapping的參數和用法解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

@requestmapping的參數和用法

requestmapping里面的注解包含的參數如圖:

基于SpringMVC @RequestMapping的參數和用法

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

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

類定義處:提供初步的請求映射信息。相對于 web 應用的根目錄;

方法處:提供進一步的細分映射信息。 相對于類定義處的 url。

若類定義處未標注 @requestmapping,則方法處標記的 url相對于 web 應用的根目錄

返回modelandview時的url會根據你的 @requestmapping實際情況組成。

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

對應項目jsp位置則是一級路徑對應一級文件目錄。

如url為/default/index對應項目中webapp/default/index.jsp

requestmapping注解有六個屬性,下面我們把她分成三類進行說明

【1】value, method

value:指定請求的實際地址,指定的地址可以是uri template 模式;

method: 指定請求的method類型, get、post、put、delete等;

【2】consumes,produces

consumes: 指定處理請求的提交內容類型(content-type),例如application/json, text/html;

produces:指定返回的內容類型,僅當request請求頭中的(accept)類型中包含該指定類型才返回;

【3】params,headers

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

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

測試示例如下:

【1】value||path

  • jsp 頁面
?
1
<a href="springmvc/testrequestmapping" rel="external nofollow" >test requestmapping</a>
  • controller
?
1
2
3
4
5
@requestmapping(value="/testrequestmapping" )
public string testrequestmapping() {
    system.out.println("testrequestmapping");
    return success;
}

成功返回success.jsp 。

tips :若 href 屬性值,不等于value值,則將提示404錯誤。

value的uri值為以下三類:

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

如下:

?
1
@requestmapping("/testrequestmapping")

b) 可以指定為含有某變量的一類值(uri template patterns with path variables)–restful風格;

?
1
2
3
4
5
@requestmapping("/testpathvariable/{id}")
public string testpathvariable(@pathvariable integer id2) {
    system.out.println("testpathvariable: " + id2);
    return success;
}

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

基于SpringMVC @RequestMapping的參數和用法

其中關于@pathvariable 有如下說明:

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

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

@pathvariable只能綁定路徑中的占位符參數,且路徑中必須有參數。

@pathvariable用法參考 路徑參數綁定參考

?
1
2
3
4
5
6
@requestmapping("/testpathvariable/{id}")
public string testpathvariable(@pathvariable("id") integer id2) {
    system.out.println("testpathvariable: " + id2);
    return success;
}
//路徑中的 id 與 方法中的 id2 綁定

c) 可以指定為含正則表達式的一類值( uri template patterns with regular expressions);

?
1
2
3
4
5
  @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 頁面
?
1
2
<a href="springmvc/testmethod" rel="external nofollow" >test method</a>
//href 默認為get 請求。
  • controller–限制接收post 請求。
?
1
2
3
4
5
@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 。

基于SpringMVC @RequestMapping的參數和用法

【狀態碼405表示:請求中指定的方法不被允許。】

將method 改為method = requestmethod.get正常跳轉頁面。

【3】consumes

  • jsp 頁面

仍以testmethod為例,提交表單。

默認contenttype為content-type:application/x-www-form-urlencoded。

?
1
2
3
4
<form action="springmvc/testmethod" method="post">
<input type="text" name="username" value=""/>
<input type="submit" value="submit"/>
</form>

基于SpringMVC @RequestMapping的參數和用法

  • controller–限制接收post 請求以及consumes="application/json"。
?
1
2
3
4
5
@requestmapping(value = "/testmethod", method = requestmethod.post,consumes="application/json")
public string testmethod() {
    system.out.println("testmethod");
    return success;
}
  • result as follows :

基于SpringMVC @RequestMapping的參數和用法

【狀態碼415表示:由于媒介類型不被支持,服務器不會接受請求。。】

去掉 consumes屬性,頁面正常跳轉 !

【4】produces

后臺代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    @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);
    }
  • 瀏覽器請求頭
?
1
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

其中最后一項 : */*;q=0.8。

該項表明可以接收任何類型的,權重系數0.8表明如果前面幾種類型不能正常接收。則使用該項進行自動分析。

application/json 幾種主流瀏覽器都可以自動解析。

【5】params

  • jsp頁面
?
1
2
3
4
5
form action="springmvc/testparamsandheaders" method="post">
<input type="text" name="username" value=""/>
<input type="text" name="age" value=""/>
<input type="submit" value="submit"/>
</form>

參數 username=tom;age = 10;

  • 后臺代碼:

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

?
1
2
3
4
5
@requestmapping(value = "testparamsandheaders", params = { "username","age!=10" })
    public string testparamsandheaders() {
        system.out.println("testparamsandheaders");
        return success;
    }
  • result as follows :

基于SpringMVC @RequestMapping的參數和用法

【狀態碼400表示:服務器未能理解請求。 】

  • 將age 改為其他值,正常跳轉。

基于SpringMVC @RequestMapping的參數和用法

【6】headers

  • 瀏覽器請求頭如下:

基于SpringMVC @RequestMapping的參數和用法

  • 后臺測試代碼如下:
?
1
2
3
4
5
@requestmapping(value = "testparamsandheaders", params = { "username","age!=10" }, headers = { "accept-language=us,zh;q=0.8" })
    public string testparamsandheaders() {
        system.out.println("testparamsandheaders");
        return success;
    }

設定請求頭中第一語言必須為us。

  • result as follows :

基于SpringMVC @RequestMapping的參數和用法

【狀態碼404表示:服務器無法找到被請求的頁面。】

將后臺代碼改為zh-cn。。。

基于SpringMVC @RequestMapping的參數和用法

頁面正常跳轉。

【tips】:

① 服務器首先根據url去找頁面,如果找不到就返回404;

② 如果找到,但是不能正常處理,就會返回 5xx 類型錯誤。

其中在第一步過程中,會根據請求頭進行一系列判斷 !

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://janus.blog.csdn.net/article/details/55193269

延伸 · 閱讀

精彩推薦
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
主站蜘蛛池模板: 中文字幕在线网站 | 91九色免费视频 | 国产精品视频一区二区三区综合 | 国产免费大片视频 | av成人免费观看 | 91久久久久久久久久 | 久草成人在线 | 久久国产精品系列 | 欧美一级黄色影院 | 欧美久久久一区二区三区 | 亚洲成年人免费网站 | 99riav9| 毛片免费观看视频 | 国产亚洲综合精品 | 欧美日韩亚洲成人 | 欧美日韩视频网站 | 日本一区二区高清不卡 | 91网视频 | 99999久久久久久 | 免费一级欧美大片视频 | 久久9999久久| 99在线热播精品免费 | 国产成人网| 国语自产免费精品视频在 | 免费a观看| 久久久久久久午夜 | 久草在线高清视频 | 免费高清一级欧美片在线观看 | 欧美区在线 | www.99久久久 | hdhdhdhd19日本人 | 牛牛碰在线视频 | 国产精品99久久久久久宅女 | 爱操av | 一区二区三区四区高清视频 | 99视频网址 | 91黄瓜视频| 能看的毛片网站 | 久久久久久久久淑女av国产精品 | 狠狠婷婷综合久久久久久妖精 | 国产一精品一av一免费爽爽 |