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

聊聊@RequestParam,@PathParam,@PathVariable等注解的區(qū)別

 更新時間:2021年02月23日 10:50:52   作者:一年e度的夏天  
這篇文章主要介紹了聊聊@RequestParam,@PathParam,@PathVariable等注解的區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

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

@RequestParam

看下面一段代碼:

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

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

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

@RequestParam 支持下面四種參數(shù)

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

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

required 這個參數(shù)是不是必須的

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){
.......
}

區(qū)別很明顯了

@PathParam

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

@QueryParam

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

@ResponseBody

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

@RequestBody

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

補充:@pathvariable參數(shù)_SpringMVC 五種注解參數(shù)綁定

@pathvariable參數(shù)_SpringMVC 五種注解參數(shù)綁定

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

輸出結果:

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

輸出結果:

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

輸出結果:

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

4.@RequestParam注解

@RequestParam注解用來處理Content-Type: 為 application/x-www-form-urlencoded編碼的內容。提交方式為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);
 }

輸出結果:

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

代碼運行結果:

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

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關文章

  • 使用sharding-jdbc實現(xiàn)水平分表的示例代碼

    使用sharding-jdbc實現(xiàn)水平分表的示例代碼

    本文主要介紹了sharding-jdbc實現(xiàn)水平分表,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 基于Java回顧之JDBC的使用詳解

    基于Java回顧之JDBC的使用詳解

    本篇文章是對Java中JDBC的使用進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • springmvc Rest風格介紹及實現(xiàn)代碼示例

    springmvc Rest風格介紹及實現(xiàn)代碼示例

    這篇文章主要介紹了springmvc Rest風格介紹及實現(xiàn)代碼示例,rest風格簡潔,分享了HiddenHttpMethodFilter 的源碼,通過Spring4.0實現(xiàn)rest風格源碼及簡單錯誤分析,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • 多模字符串匹配算法原理及Java實現(xiàn)代碼

    多模字符串匹配算法原理及Java實現(xiàn)代碼

    這篇文章主要介紹了多模字符串匹配算法原理及Java實現(xiàn)代碼,涉及算法背景,原理,構建過程簡單介紹幾Java代碼實現(xiàn)等相關內容,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Spring中的@Resource源碼解析

    Spring中的@Resource源碼解析

    這篇文章主要介紹了Spring中的@Resource源碼解析,這個注解加載的時候經(jīng)過的類是CommonAnnotationBeanPostProcessor和Autowired一樣,也是postProcessProperties()方法,需要的朋友可以參考下
    2023-09-09
  • 解決版本不兼容Jar包沖突問題

    解決版本不兼容Jar包沖突問題

    在和三方對接的過程中,我們可能會不斷引入一些三方jar包,但這個時候就有可能出現(xiàn)一個項目需要依賴兩個版本不同且功能不兼容的jar包,本文主要介紹了解決版本不兼容Jar包沖突問題,感興趣的可以了解一下
    2023-10-10
  • IDEA左側項目結構被隱藏如何實現(xiàn)顯示

    IDEA左側項目結構被隱藏如何實現(xiàn)顯示

    這篇文章主要介紹了IDEA左側項目結構被隱藏如何實現(xiàn)顯示問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-08-08
  • Java try catch finally異常處理組合詳解

    Java try catch finally異常處理組合詳解

    這篇文章主要介紹了Java try catch finally異常處理組合詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • java分布式面試系統(tǒng)限流最佳實踐

    java分布式面試系統(tǒng)限流最佳實踐

    這篇文章主要介紹了java分布式面試系統(tǒng)限流最佳實踐場景分析解答,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-03-03
  • MySQL性能優(yōu)化之配置參數(shù)過程

    MySQL性能優(yōu)化之配置參數(shù)過程

    優(yōu)化MySQL配置:調整連接數(shù)、超時時間及緩沖區(qū)大小,提升性能,建議修改back_log為128-512,interactive_timeout為7200,合理設置InnoDB參數(shù)及緩存策略
    2025-09-09

最新評論

南京市| 武定县| 西昌市| 陆丰市| 大安市| 安康市| 宁安市| 谷城县| 临猗县| 诸城市| 华容县| 古浪县| 包头市| 平湖市| 阳信县| 应城市| 镇远县| 岱山县| 嘉鱼县| 龙游县| 铁力市| 台湾省| 得荣县| 修武县| 广昌县| 济源市| 铜山县| 社会| 新和县| 三亚市| 黎川县| 新巴尔虎左旗| 辽宁省| 河北省| 黄梅县| 高碑店市| 读书| 平远县| 无极县| 淮滨县| 广灵县|