亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

前言

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

下面我們來詳細(xì)的講解。

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

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

1. @PathVariable注解

@PathVariable 是用來獲得請(qǐng)求url中的動(dòng)態(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ā)送請(qǐng)求截圖:

輸出結(jié)果:

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

2.@RequestHeader注解

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

示例代碼:

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

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

輸出結(jié)果:

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

3.@CookieValue注解

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

示例代碼:

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

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

輸出結(jié)果:

通過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,默認(rèn)為application/x-www-form-urlencoded);

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

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

示例代碼:

 @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ā)送請(qǐng)求截圖:


輸出結(jié)果:

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

5.@RequestBody注解

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

GET請(qǐng)求中,因?yàn)闆]有HttpEntity,所以@RequestBody并不適用;

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

示例代碼:

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

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

代碼運(yùn)行結(jié)果:

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

總結(jié)

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

相關(guān)文章

  • sentinel整合ribbon與fallback流程分步講解

    sentinel整合ribbon與fallback流程分步講解

    這篇文章主要介紹了sentinel整合ribbon與fallback分步流程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • SpringMVC如何獲取表單數(shù)據(jù)(radio和checkbox)

    SpringMVC如何獲取表單數(shù)據(jù)(radio和checkbox)

    這篇文章主要介紹了SpringMVC如何獲取表單數(shù)據(jù)(radio和checkbox)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • spring中時(shí)間格式化的兩種方法示例講解

    spring中時(shí)間格式化的兩種方法示例講解

    這篇文章主要介紹了spring中時(shí)間格式化的兩種方法,方法一自己格式化,方法二通過配置,結(jié)合實(shí)例代碼講解的非常詳細(xì),文中補(bǔ)充介紹了Spring項(xiàng)目中時(shí)間格式化的方法,需要的朋友可以參考下
    2023-08-08
  • spring boot項(xiàng)目生成docker鏡像并完成容器部署的方法步驟

    spring boot項(xiàng)目生成docker鏡像并完成容器部署的方法步驟

    這篇文章主要介紹了spring boot項(xiàng)目生成docker鏡像并完成容器部署的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • RabbitMQ實(shí)現(xiàn)消息可靠性傳遞過程講解

    RabbitMQ實(shí)現(xiàn)消息可靠性傳遞過程講解

    消息的可靠性傳遞是指保證消息百分百發(fā)送到消息隊(duì)列中去,這篇文章主要介紹了RabbitMQ實(shí)現(xiàn)消息可靠性傳遞過程,感興趣想要詳細(xì)了解可以參考下文
    2023-05-05
  • java實(shí)現(xiàn)簡(jiǎn)易版圖形界面計(jì)算器

    java實(shí)現(xiàn)簡(jiǎn)易版圖形界面計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)易版圖形界面計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Java的包裝類特性總結(jié)

    Java的包裝類特性總結(jié)

    這篇文章主要介紹Java的包裝類的一些特性,包裝類的作用,哪些類屬于包裝類等,文中有詳細(xì)的代碼示例,對(duì)我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-05-05
  • 使用ObjectMapper解析json不用一直new了

    使用ObjectMapper解析json不用一直new了

    這篇文章主要為大家介紹了使用ObjectMapper解析json不用一直new了的方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 詳解Java面向?qū)ο缶幊讨鄳B(tài)

    詳解Java面向?qū)ο缶幊讨鄳B(tài)

    這篇文章主要為大家介紹了Java面向?qū)ο缶幊讨鄳B(tài),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • spring boot項(xiàng)目fat jar瘦身的實(shí)現(xiàn)

    spring boot項(xiàng)目fat jar瘦身的實(shí)現(xiàn)

    這篇文章主要介紹了spring boot項(xiàng)目fat jar瘦身的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06

最新評(píng)論