欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2021年10月22日 11:22:30   作者:凌淵閣  
這篇文章主要介紹了POST方法給@RequestBody傳參數(shù)失敗的解決及原因分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

POST方法給@RequestBody傳參數(shù)失敗

通過ajax給springMVC傳遞參數(shù)時(shí),通過post方法傳遞json字符串時(shí)常用的方式,這時(shí)后端應(yīng)該通過@RequestBody注解配合springMVC中配置的消息轉(zhuǎn)換器來進(jìn)行json字符串的解析。

因?yàn)閜ost方法中的json字符串通常是一個(gè)前端的json對(duì)象轉(zhuǎn)化而成的字符串,所以后端@RequestBody后面可以使用HashMap<String,Object>類型來接收所有參數(shù)。

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

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

這個(gè)時(shí)候你可以檢查下ajax請(qǐng)求的content-type請(qǐng)求頭,因?yàn)樵谂渲肕essageConverter消息轉(zhuǎn)換器的時(shí)候,需要配置其所檢查的請(qǐng)求體類型(content-type),默認(rèn)情況下瀏覽器的ajax會(huì)添加content-type:application/x-www-form-urlencoded的請(qǐng)求頭,但是有的瀏覽器或者有些時(shí)候會(huì)發(fā)送content-type:application/x-www-form-urlencoded;charset:utf-8到后端,導(dǎo)致MappingJackson2HttpMessageConverter漏過對(duì)它的檢查,這個(gè)時(shí)候SpringMVC會(huì)使用其他的MessageConverter來解析request body中的內(nèi)容,這樣肯定是會(huì)解析失敗的。

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

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

@RequestBody參數(shù)映射不上,@RequestBody報(bào)錯(cuò)

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

言歸正傳問題是這樣的

使用postMan 發(fā)送httppost 請(qǐng)求:

最后報(bào)錯(cuò)。

報(bào)錯(cuò)原因

在使用postMan發(fā)送post請(qǐng)求的時(shí)候沒有選擇如下:

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

1.前端做保存操作的時(shí)候提交了很多參數(shù)過來,前端代碼提交的時(shí)候content-type改成application/json,后臺(tái)也配置了一個(gè)針對(duì)spring4的son類型的httpmessageConverter,

@RequsetBody 綁定的數(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上。

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

2,檢查配置文件spring的版本。對(duì)應(yīng)的 spring4 的版本的適配器 對(duì)應(yīng)的:

請(qǐng)用org.springframework.http.converter.json.MappingJacksonHttp2MessageConverter ,選擇的這種配置用的是jackson2.X版本的,用來解析json數(shù)據(jù)。

spring 3.x的對(duì)應(yīng)的版本:

org.springframework.http.converter.json.MappingJacksonHttpMessageConverter 

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

3,必須要在請(qǐng)求頭中聲明數(shù)據(jù)的類型Content-Type,

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

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java對(duì)象Serializable接口實(shí)現(xiàn)詳解

    Java對(duì)象Serializable接口實(shí)現(xiàn)詳解

    這篇文章主要介紹了Java對(duì)象Serializable接口實(shí)現(xiàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • httpclient connect連接請(qǐng)求方法源碼解讀

    httpclient connect連接請(qǐng)求方法源碼解讀

    這篇文章主要為大家介紹了httpclient connect連接請(qǐng)求方法解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • Java并發(fā)編程面試之線程池

    Java并發(fā)編程面試之線程池

    線程池和并發(fā)問題是Java技術(shù)面試中面試官比較喜歡問的問題之一。在這里,從面試的角度列出了大部分重要的問題,感興趣的小伙伴們可以參考一下
    2021-07-07
  • SpringSecurity自定義資源攔截規(guī)則及登錄界面跳轉(zhuǎn)問題

    SpringSecurity自定義資源攔截規(guī)則及登錄界面跳轉(zhuǎn)問題

    這篇文章主要介紹了SpringSecurity自定義資源攔截規(guī)則及登錄界面跳轉(zhuǎn)問題,我們想要自定義認(rèn)證邏輯,就需要?jiǎng)?chuàng)建一些原來不存在的bean,這個(gè)時(shí)候就可以使@ConditionalOnMissingBean注解,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-12-12
  • SpringBoot2.6.3集成quartz的方式

    SpringBoot2.6.3集成quartz的方式

    quartz是java里頭定時(shí)任務(wù)的經(jīng)典開源實(shí)現(xiàn),這里講述一下如何在SpringBoot2.6.3集成quartz,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2022-02-02
  • SpringBoot整合sharding-jdbc實(shí)現(xiàn)分庫分表與讀寫分離的示例

    SpringBoot整合sharding-jdbc實(shí)現(xiàn)分庫分表與讀寫分離的示例

    本文主要介紹了SpringBoot整合sharding-jdbc實(shí)現(xiàn)分庫分表與讀寫分離的示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • SpringBoot(cloud)自動(dòng)裝配bean找不到類型的問題

    SpringBoot(cloud)自動(dòng)裝配bean找不到類型的問題

    這篇文章主要介紹了SpringBoot(cloud)自動(dòng)裝配bean找不到類型的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • java中的forkjoin框架的使用

    java中的forkjoin框架的使用

    這篇文章主要介紹了java中的fork join框架的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • SpringBoot集成Nacos的詳細(xì)教程

    SpringBoot集成Nacos的詳細(xì)教程

    這篇文章主要介紹了SpringBoot集成Nacos的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • swagger?@ApiModel添加實(shí)體類不生效的解決

    swagger?@ApiModel添加實(shí)體類不生效的解決

    這篇文章主要介紹了swagger?@ApiModel添加實(shí)體類不生效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
    2022-01-01

最新評(píng)論