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

一篇文章弄懂Spring MVC的參數(shù)綁定

 更新時間:2019年02月14日 11:04:01   作者:java_lover  
這篇文章主要給大家介紹了關于如何通過一篇文章弄懂Spring MVC的參數(shù)綁定,文中通過示例代碼以及圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

前言

參數(shù)綁定,簡單來說就是客戶端發(fā)送請求,而請求中包含一些數(shù)據(jù),那么這些數(shù)據(jù)怎么到達 Controller ?這在實際項目開發(fā)中也是用到的最多的,那么 SpringMVC 的參數(shù)綁定是怎么實現(xiàn)的呢?

下面我們來詳細的講解。

SpringMVC參數(shù)綁定,簡單來說就是將客戶端請求的key/value數(shù)據(jù)綁定到controller方法的形參上,然后就可以在controller中使用該參數(shù)了

下面通過5個常用的注解演示下如何進行參數(shù)綁定:

1. @PathVariable注解

@PathVariable 是用來獲得請求url中的動態(tài)參數(shù)的,可以將URL中的變量映射到功能處理方法的參數(shù)上,其中URL 中的 {xxx} 占位符可以通過@PathVariable(“xxx“) 綁定到操作方法的入?yún)⒅小?/p>

示例代碼:

 @ResponseBody
 @RequestMapping("/testUrlPathParam/{param1}/{param2}")
 public void testUrlPathParam(HttpServletRequest request, @PathVariable String param1,
     @PathVariable String param2) {
 System.out.println("通過PathVariable獲取的參數(shù)param1=" + param1);
 System.out.println("通過PathVariable獲取的參數(shù)param2=" + param2);
 }

Postman發(fā)送請求截圖:

輸出結果:

通過PathVariable獲取的參數(shù)param1=1
通過PathVariable獲取的參數(shù)param2=2

2.@RequestHeader注解

@RequestHeader 注解,可以把Request請求header部分的值綁定到方法的參數(shù)上。

示例代碼:

 @ResponseBody
 @RequestMapping("/testHeaderParam")
 public void testHeaderParam(HttpServletRequest request, @RequestHeader String param1) {
 System.out.println("通過RequestHeader獲取的參數(shù)param1=" + param1);
 }

Postman發(fā)送請求截圖:

輸出結果:

通過RequestHeader獲取的參數(shù)param1=abc

3.@CookieValue注解

@CookieValue 可以把Request header中關于cookie的值綁定到方法的參數(shù)上。

示例代碼:

 @ResponseBody
 @RequestMapping("/testCookieParam")
 public void testCookieParam(HttpServletRequest request, HttpServletResponse response,
         @CookieValue String sessionid) {
  System.out.println("通過CookieValue獲取的參數(shù)sessionid=" + sessionid);
 }

Postman發(fā)送請求截圖:

輸出結果:

通過CookieValue獲取的參數(shù)sessionid=ebef978eef6c46f8a95cc0990d2d360a

4.@RequestParam注解

@RequestParam注解用來處理Content-Type: 為 application/x-www-form-urlencoded編碼的內(nèi)容。提交方式為get或post。(Http協(xié)議中,form的enctype屬性為編碼方式,常用有兩種:application/x-www-form-urlencoded和multipart/form-data,默認為application/x-www-form-urlencoded);

@RequestParam注解實質是將Request.getParameter() 中的Key-Value參數(shù)Map利用Spring的轉化機制ConversionService配置,轉化成參數(shù)接收對象或字段,
get方式中queryString的值,和post方式中body data的值都會被Servlet接受到并轉化到Request.getParameter()參數(shù)集中,所以@RequestParam可以獲取的到;

該注解有三個屬性: value、required、defaultValue; value用來指定要傳入值的id名稱,required用來指示參數(shù)是否必錄,defaultValue表示參數(shù)不傳時候的默認值。

示例代碼:

 @ResponseBody
 @RequestMapping("/testRequestParam")
 public void testRequestParam(HttpServletRequest request,
         @RequestParam(value = "num", required = true, defaultValue = "0") int num) {
  System.out.println("通過RequestParam獲取的參數(shù)num=" + num);
 }

Postman發(fā)送請求截圖:


輸出結果:

通過RequestParam獲取的參數(shù)num=10

5.@RequestBody注解

@RequestBody注解用來處理HttpEntity(請求體)傳遞過來的數(shù)據(jù),一般用來處理非Content-Type: application/x-www-form-urlencoded編碼格式的數(shù)據(jù);

GET請求中,因為沒有HttpEntity,所以@RequestBody并不適用;

POST請求中,通過HttpEntity傳遞的參數(shù),必須要在請求頭中聲明數(shù)據(jù)的類型Content-Type,SpringMVC通過使用HandlerAdapter配置的HttpMessageConverters來解析HttpEntity中的數(shù)據(jù),然后綁定到相應的bean上。

示例代碼:

 @ResponseBody
 @RequestMapping("/testRequestBody")
 public void testRequestBody(HttpServletRequest request, @RequestBody String bodyStr){
  System.out.println("通過RequestBody獲取的參數(shù)bodyStr=" + bodyStr);
 }

Postman發(fā)送請求截圖:

代碼運行結果:

通過RequestBody獲取的參數(shù)bodyStr=這是body的內(nèi)容

總結

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

最新評論

嘉荫县| 舒城县| 临洮县| 清河县| 千阳县| 永仁县| 民权县| 大石桥市| 竹山县| 枞阳县| 华阴市| 陈巴尔虎旗| 盐亭县| 绥宁县| 天峻县| 太湖县| 自治县| 鹿邑县| 达尔| 乳山市| 万全县| 樟树市| 金阳县| 乌拉特后旗| 贺州市| 阿克| 洛南县| 来凤县| 察隅县| 苍南县| 治县。| 屯昌县| 馆陶县| 库伦旗| 杨浦区| 蓬莱市| 江津市| 乌苏市| 台南县| 南木林县| 赤峰市|