一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - POST方法給@RequestBody傳參數失敗的解決及原因分析

POST方法給@RequestBody傳參數失敗的解決及原因分析

2022-02-25 00:52凌淵閣 Java教程

這篇文章主要介紹了POST方法給@RequestBody傳參數失敗的解決及原因分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

POST方法給@RequestBody傳參數失敗

通過ajax給springMVC傳遞參數時,通過post方法傳遞json字符串時常用的方式,這時后端應該通過@RequestBody注解配合springMVC中配置的消息轉換器來進行json字符串的解析。

因為post方法中的json字符串通常是一個前端的json對象轉化而成的字符串,所以后端@RequestBody后面可以使用HashMap<String,Object>類型來接收所有參數。

通過這種方式可以非顯式的傳送大量的參數到后端,并且和具體參數無關,便于以后對參數進行擴展,對于不確定參數的場合,這種方式解除了與具體參數的耦合。但是由于簡單的過程實際上經歷了許多SpringMVC的操作,所以經常會遇到各種奇怪問題。

其中post方法請求體中的json字符串無法成功通過SpringMVC中配置的MessageConverter(一般是MappingJackson2HttpMessageConverter)轉換為@RequestBody注解的HashMap對象,是可以見到的問題。

這個時候你可以檢查下ajax請求的content-type請求頭,因為在配置MessageConverter消息轉換器的時候,需要配置其所檢查的請求體類型(content-type),默認情況下瀏覽器的ajax會添加content-type:application/x-www-form-urlencoded的請求頭,但是有的瀏覽器或者有些時候會發送content-type:application/x-www-form-urlencoded;charset:utf-8到后端,導致MappingJackson2HttpMessageConverter漏過對它的檢查,這個時候SpringMVC會使用其他的MessageConverter來解析request body中的內容,這樣肯定是會解析失敗的。

如果遇到這種情況,比較好的解決方式,可能是在ajax的post請求中強制注明 contentType:application/json,并將application/json 和application/json;charset=utf-8兩種MediaType(MimeType)添加到MappingJackson2HttpMessageConverter對象的檢查列表中。

這樣就可以保證post方法的請求體中的json字符串被MappingJackson2HttpMessageConverter對象檢查并解析。

 

@RequestBody參數映射不上,@RequestBody報錯

最近代碼遇見了一個springmvc中的小問題,算是很基礎的東西,同事問我后我有有些迷惑上網找了一些資料后弄清楚了。特此記錄一下springmvc注解@requestbody來傳遞參數映射一個對象。

POST方法給@RequestBody傳參數失敗的解決及原因分析

言歸正傳問題是這樣的

使用postMan 發送httppost 請求:

POST方法給@RequestBody傳參數失敗的解決及原因分析

最后報錯。

報錯原因

在使用postMan發送post請求的時候沒有選擇如下:

POST方法給@RequestBody傳參數失敗的解決及原因分析

也就是下面說的需要注意的地方需要注意的地方是:

1.前端做保存操作的時候提交了很多參數過來,前端代碼提交的時候content-type改成application/json,后臺也配置了一個針對spring4的son類型的httpmessageConverter,

@RequsetBody 綁定的數據類型 :

一般用來處理非Content-Type: application/x-www-form-urlencoded編碼格式的數據。

GET請求中,因為沒有HttpEntity,所以@RequestBody并不適用。POST請求中,通過HttpEntity傳遞的參數,必須要在請求頭中聲明數據的類型Content-Type,SpringMVC通過使用HandlerAdapter 配置的HttpMessageConverters來解析HttpEntity中的數據,然后綁定到相應的bean上。

1,使用@RequestBody 前后端參數要匹配個數不能少。字段名字要一樣

2,檢查配置文件spring的版本。對應的 spring4 的版本的適配器 對應的:

請用org.springframework.http.converter.json.MappingJacksonHttp2MessageConverter ,選擇的這種配置用的是jackson2.X版本的,用來解析json數據。

POST方法給@RequestBody傳參數失敗的解決及原因分析

spring 3.x的對應的版本:

org.springframework.http.converter.json.MappingJacksonHttpMessageConverter 

這種配置用的是jackson1.X版本的

3,必須要在請求頭中聲明數據的類型Content-Type,

4,前端json數據和后端json數據 首字母不要大寫,首字母大寫映射不上,以駝峰格式命名。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/zw3413/article/details/85257270

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产免费小视频在线观看 | 国产亚洲精品一区二区在线观看 | 国产色资源 | 国产福利不卡 | 日本激情网站 | 四虎永久成人免费 | 色综合久久中文字幕 | 亚洲精品久久玖玖玖玖 | 日本嫩交| 欧美日韩一区二区三区在线视频 | 国产精品网页 | 深夜草莓视频 | 色播影音先锋 | 日韩精品亚洲专区在线影视 | 亚洲mm色国产网站 | 欧美日韩国产在线一区 | 乌克兰少妇大胆大BBW | 5151hh四虎国产精品 | 亚洲啊v| 国色天香社区在线 | 日韩美毛片 | 把内裤拔到一边高h1v1 | 91精品大神国产在线播放 | 亚洲精品一区二区久久这里 | 亚洲国产精品婷婷久久久久 | 被老头肉至怀孕小说 | 肉文高h调教 | 全日爱韩国视频在线观看 | 国产成人免费片在线视频观看 | 美女无内裤下部黄 | 黑人巨大vs北条麻妃在线 | 91看片淫黄大片在看 | 四虎成人永久地址 | 日韩欧美国产综合精品 | 99久久综合| 精品国产品香蕉在线观看 | 日韩天堂网 | 丝袜护士强制脚足取精 | 成人欧美一区二区三区黑人 | 超级乱淫伦小说1女多男 | 国产精品久久久久这里只有精品 |