日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring MVC竟然有5种参数绑定的方式?你知道几种?

發布時間:2023/12/3 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring MVC竟然有5种参数绑定的方式?你知道几种? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自??Spring MVC竟然有5種參數綁定的方式?你知道幾種?

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

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

1. @PathVariable注解

@PathVariable 是用來獲得請求url中的動態參數的,可以將URL中的變量映射到功能處理方法的參數上,其中URL 中的 {xxx} 占位符可以通過@PathVariable(“xxx“) 綁定到操作方法的入參中。

示例代碼:

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

Postman發送請求截圖:

?

發送請求截圖

輸出結果:

通過PathVariable獲取的參數param1=1通過PathVariable獲取的參數param2=2

?

2.@RequestHeader注解

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

示例代碼:

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

Postman發送請求截圖:

發送請求截圖

輸出結果:

通過RequestHeader獲取的參數param1=abc

?

3.@CookieValue注解

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

示例代碼:

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

Postman發送請求截圖:

?

發送請求截圖

輸出結果:

通過CookieValue獲取的參數sessionid=ebef978eef6c46f8a95cc0990d2d360a

?

4.@RequestParam注解

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

@RequestParam注解實質是將Request.getParameter() 中的Key-Value參數Map利用Spring的轉化機制ConversionService配置,轉化成參數接收對象或字段,

get方式中queryString的值,和post方式中body data的值都會被Servlet接受到并轉化到Request.getParameter()參數集中,所以@RequestParam可以獲取的到;

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

示例代碼:

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

Postman發送請求截圖:

?

輸出結果:

通過RequestParam獲取的參數num=10

?

5.@RequestBody注解

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

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

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

示例代碼:

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

Postman發送請求截圖:

?

發送請求截圖

代碼運行結果:

通過RequestBody獲取的參數bodyStr=這是body的內容 作者:Java碎碎念

總結

以上是生活随笔為你收集整理的Spring MVC竟然有5种参数绑定的方式?你知道几种?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。