免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
關于SpringMvc中的@RequestBody和@RequestParam到底有什么用

緣起

在此之前,我一直搞不清楚@RequestBody和@RequestParam到底有什么作用,在很多時候我發(fā)現(xiàn)即使我在controller中設置@RequestBody和@RequestParam或者不設置這些,依然能夠接收到請求參數(shù),但在某些情況下他們又行不通。所以本文旨在深入講解我們到底在什么情況下使用@RequestBody和@RequestParam,什么情況下不能使用@RequestBody和@RequestParam

關于http

在說上面問題之前,你需要了解HTTP的基本信息。用戶的瀏覽器訪問網(wǎng)站以及我們通過ajax請求的時候都是HTTP請求。http分為請求頭和請求體,在http請求頭里面有個參數(shù)叫Content-Type
Content-Type有三種取值情況

  1. application/json
  2. application/x-www-form-urlencoded
  3. multipart/form-data

關于這三種情況的詳細解釋可以參考我的另一篇文章
關于HTTP的其他參數(shù)的詳細解釋也可以參考我的另一篇文章

如果你只是要了解spring mvc中的@RequestBody和@RequestParam到底怎么用,那么你無需詳細看我們的那兩篇文章,看本文就可以

關于Content-Type與@RequestBody的故事

content-type實際上是代表了你要給服務器發(fā)送的數(shù)據(jù)格式是什么

application/json

比如的你的content-type為application/json。那么你給后臺的請求就必須是一個json數(shù)據(jù),你的數(shù)據(jù)可能類似于

{    "name": "張三",    "age": "22"}

而這種情況你的方法接收地方如果想用JavaBean接收必須使用@RequestBody。否則你將無法接收數(shù)據(jù)。同時你可能需要在你的spring mvc中配置json解析器。但一般情況下你公司的大牛已經幫你配置好,你無需配置。你的controller類似如下這樣

public Result updateAuditComment(@RequestBody TestDTO test) {}

其中TestDTO為你自己DTO.你需要在TestDTO中寫入與你的請求參數(shù)一致的屬性,并包含get set方法。

當然你也可以不通過JavaBean接收,那么你可以在你的controller中定義你需要的參數(shù),你可以使用@RequestParam,也可以不使用,例如對于如上請求你可以這么寫你的controlle

public Result updateAuditComment(String name,String age) {}

也可以這么寫

public Result updateAuditComment(@RequestParam String name,@RequestParam String age) {}

x-www-form-urlencoded

而比如你的content-type為x-www-form-urlencoded,這也是大多數(shù)情況下的設置,如果你沒有設置任何content-type。那么它默認就是這個。當content-type為x-www-form-urlencoded時證明你的數(shù)據(jù)格式需要為key=value&key=value的形式,例如

name = 張三 & age = 22

而這種情況你的方法的接收地方就不能使用@RequestBody。因為這個注解的作用是把得到的報文轉換成json.而你發(fā)送的并非json格式。所有不能使用這個注解,否則可能報錯Content type ‘application/x-www-form-urlencoded;charset=UTF-8’ not supported。你的controller類似如下這樣

public Result updateAuditComment(TestDTO test) {}

類似的,你也可以不通過JavaBean接收,那么你可以在你的controller中定義你需要的參數(shù),你可以使用@RequestParam,也可以不使用,例如對于如上請求你可以這么寫你的controlle

public Result updateAuditComment(String name,String age) {}

也可以這么寫

public Result updateAuditComment(@RequestParam String name,@RequestParam String age) {}

關于@RequestParam作用

通過上訴可以看出實際上@RequestParam并不會影響到參數(shù)的接收,它存在的意義僅僅是你可以通過它來設置默認值,設置別名,設置是否必須。關于@RequestParam加與不加的區(qū)別可以參考這篇文章

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
 POST、GET、@RequestBody和@RequestParam區(qū)別
springmvc接收前臺(可以是ajax)傳來的數(shù)組list,map,set等集合,復雜對象集合等圖文詳解
一篇文章搞定SpringMVC參數(shù)綁定
Http請求中Content
springMvc直接接收json數(shù)據(jù)自動轉化為Map<String,String>
***spring mvc3提高生產力之——利用annotation使前后臺數(shù)據(jù)交互更透明
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服