中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringMVC中@RequestMapping參數如何使用

發布時間:2021-08-12 10:54:25 來源:億速云 閱讀:145 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關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 頁面

<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錯誤。

value的uri值為以下三類:

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

如下:

@RequestMapping("/testRequestMapping")

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

@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用法參考路徑參數綁定參考

@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);

  @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 默認為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 。

SpringMVC中@RequestMapping參數如何使用

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

將method 改為method = RequestMethod.GET正常跳轉頁面。

【3】consumes
  • JSP 頁面

仍以testMethod為例,提交表單。

默認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>

SpringMVC中@RequestMapping參數如何使用

  • 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 :

SpringMVC中@RequestMapping參數如何使用

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

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

【4】produces

后臺代碼如下:

@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

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

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

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

【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>

參數 username=tom;age = 10;

  • 后臺代碼:

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

@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參數如何使用

  • 后臺測試代碼如下:

@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 類型錯誤。

看完上述內容,你們對SpringMVC中@RequestMapping參數如何使用有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高要市| 汨罗市| 新乐市| 濮阳市| 龙岩市| 忻州市| 铜梁县| 偃师市| 阿坝| 南靖县| 五台县| 灌阳县| 辽中县| 信宜市| 墨玉县| 将乐县| 长宁县| 安塞县| 布尔津县| 天长市| 柳州市| 汉中市| 贡嘎县| 昭苏县| 庆城县| 游戏| 富蕴县| 商都县| 健康| 峨山| 江永县| 日照市| 赞皇县| 贺州市| 临沭县| 晋州市| 乐山市| 济源市| 西藏| 巨野县| 萨迦县|