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

溫馨提示×

溫馨提示×

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

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

@RequestParam、@PathParam、@PathVariable三者有什么區別

發布時間:2021-02-23 16:33:04 來源:億速云 閱讀:1331 作者:Leah 欄目:開發技術

本篇文章為大家展示了@RequestParam、@PathParam、@PathVariable三者有什么區別,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

@RequestParam 和 @PathVariable 注解是用于從request中接收請求的,兩個都可以接收參數,關鍵點不同的是@RequestParam 是從request里面拿取值,而 @PathVariable 是從一個URI模板里面來填充

@RequestParam

看下面一段代碼:

http://localhost:8080/springmvc/hello/101?param1=10&param2=20

根據上面的這個URL,你可以用這樣的方式來進行獲取

public String getDetails(
 @RequestParam(value="param1", required=true) String param1,
  @RequestParam(value="param2", required=false) String param2){
...
}

@RequestParam 支持下面四種參數

defaultValue 如果本次請求沒有攜帶這個參數,或者參數為空,那么就會啟用默認值

name 綁定本次參數的名稱,要跟URL上面的一樣

required 這個參數是不是必須的

value 跟name一樣的作用,是name屬性的一個別名

@PathVariable

這個注解能夠識別URL里面的一個模板,我們看下面的一個URL

http://localhost:8080/springmvc/hello/101?param1=10&param2=20

上面的一個url你可以這樣寫:

@RequestMapping("/hello/{id}")
 public String getDetails(@PathVariable(value="id") String id,
 @RequestParam(value="param1", required=true) String param1,
 @RequestParam(value="param2", required=false) String param2){
.......
}

區別很明顯了

@PathParam

這個注解是和spring的pathVariable是一樣的,也是基于模板的,但是這個是jboss包下面的一個實現,上面的是spring的一個實現,都要導包

@QueryParam

@QueryParam 是 JAX-RS 本來就提供的,和Spring的RequestParam作用一致

@ResponseBody

responseBody表示服務器返回的時候以一種什么樣的方式進行返回, 將內容或對象作為 HTTP 響應正文返回,值有很多,一般設定為json

@RequestBody

一般是post請求的時候才會使用這個請求,把參數丟在requestbody里面

補充:@pathvariable參數_SpringMVC 五種注解參數綁定

@pathvariable參數_SpringMVC 五種注解參數綁定

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

輸出結果:

通過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);
 }

輸出結果:

通過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);
 }

@RequestParam、@PathParam、@PathVariable三者有什么區別

輸出結果:

通過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);
 }

輸出結果:

通過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); }

代碼運行結果:

通過RequestBody獲取的參數bodyStr=這是body的內容

上述內容就是@RequestParam、@PathParam、@PathVariable三者有什么區別,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

云龙县| 米易县| 大同县| 合川市| 龙江县| 长汀县| 石首市| 五河县| 新民市| 临洮县| 醴陵市| 彰化县| 高淳县| 边坝县| 延寿县| 清新县| 武乡县| 徐州市| 临清市| 蓬溪县| 米泉市| 巍山| 时尚| 绥滨县| 乌拉特中旗| 平顺县| 西青区| 大埔区| 柳州市| 栖霞市| 漳浦县| 阿拉善盟| 肥乡县| 新余市| 星座| 南岸区| 岱山县| 宾川县| 新巴尔虎左旗| 扬州市| 古丈县|