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

SpringMVC 中HttpMessageConverter簡(jiǎn)介和Http請(qǐng)求415 的問(wèn)題

 更新時(shí)間:2016年07月07日 09:59:01   投稿:lqh  
本文介紹且記錄如何解決在SpringMVC 中遇到415 Unsupported Media Type 的問(wèn)題,并且順便介紹Spring MVC的HTTP請(qǐng)求信息轉(zhuǎn)換器HttpMessageConverter

一.問(wèn)題描述:

在SprinvMVC的Web程序中,我在頁(yè)面發(fā)送Ajax 的POST請(qǐng)求,然后在服務(wù)器端利用@requestBody接收請(qǐng)求body中的參數(shù),當(dāng)時(shí)運(yùn)行過(guò)程中,我想服務(wù)器發(fā)送Ajax請(qǐng)求,瀏覽器一直反饋415 Unsupported Media Type或者400的狀態(tài)碼,以為是Ajax寫(xiě)的有問(wèn)題。便查找了半天資料,才發(fā)現(xiàn)spring-mvc.config文件的配置中少了東西,當(dāng)然也有可能是你真的在Ajax中缺少了對(duì)Content-Type參數(shù)的設(shè)置。分析后應(yīng)該是我springMVC-config.xml文件配置有問(wèn)題。
(注):400:(錯(cuò)誤請(qǐng)求) 服務(wù)器不理解請(qǐng)求的語(yǔ)法。 415:(不支持的媒體類型) 請(qǐng)求的格式不受請(qǐng)求頁(yè)面的支持。

二.解決方法: 

 在springMVC-config.xml文件中,增加了一個(gè)StringHttpMessageConverter請(qǐng)求信息轉(zhuǎn)換器,配置片段如下:

<!--- StringHttpMessageConverter bean -->
< bean id = "stringHttpMessageConverter" class = "org.springframework.http.converter.StringHttpMessageConverter"/>
 
<!-- 啟動(dòng)Spring MVC的注解功能,完成請(qǐng)求和注解POJO的映射 -->
< bean class ="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >
 < property name= "messageConverters" >
 < list>
  < ref bean= "mappingJacksonHttpMessageConverter" />
  <!-- 新增的StringMessageConverter bean-->
  < ref bean= "stringHttpMessageConverter" />
  < ref bean= "jsonHttpMessageConverter" /> 
  < ref bean= "formHttpMessageConverter" />
 </ list>
 </ property>
</ bean>

三.HttpMessageConverter請(qǐng)求信息轉(zhuǎn)換器簡(jiǎn)介:

HttpMessageConverter接口指定了一個(gè)可以把Http request信息和Http response信息進(jìn)行格式轉(zhuǎn)換的轉(zhuǎn)換器。通常實(shí)現(xiàn)HttpMessageConverter接口的轉(zhuǎn)換器有以下幾種:
ByteArrayHttpMessageConverter: 負(fù)責(zé)讀取二進(jìn)制格式的數(shù)據(jù)和寫(xiě)出二進(jìn)制格式的數(shù)據(jù);
StringHttpMessageConverter:   負(fù)責(zé)讀取字符串格式的數(shù)據(jù)和寫(xiě)出二進(jìn)制格式的數(shù)據(jù);
 ResourceHttpMessageConverter負(fù)責(zé)讀取資源文件和寫(xiě)出資源文件數(shù)據(jù);
FormHttpMessageConverter:       負(fù)責(zé)讀取form提交的數(shù)據(jù)(能讀取的數(shù)據(jù)格式為 application/x-www-form-urlencoded,不能讀取multipart/form-data格式數(shù)據(jù));負(fù)責(zé)寫(xiě)入application/x-www-from-urlencoded和multipart/form-data格式的數(shù)據(jù);
MappingJacksonHttpMessageConverter:  負(fù)責(zé)讀取和寫(xiě)入json格式的數(shù)據(jù);
SourceHttpMessageConverter:                   負(fù)責(zé)讀取和寫(xiě)入 xml 中javax.xml.transform.Source定義的數(shù)據(jù);
Jaxb2RootElementHttpMessageConverter:  負(fù)責(zé)讀取和寫(xiě)入xml 標(biāo)簽格式的數(shù)據(jù);
AtomFeedHttpMessageConverter:              負(fù)責(zé)讀取和寫(xiě)入Atom格式的數(shù)據(jù);
RssChannelHttpMessageConverter:           負(fù)責(zé)讀取和寫(xiě)入RSS格式的數(shù)據(jù);

更多關(guān)于HttpMessageConverter的信息請(qǐng)看:

http://docs.spring.io/spring/docs/3.0.x/api/org/springframework/http/converter/HttpMessageConverter.html

四.HttpMessageConverter請(qǐng)求信息轉(zhuǎn)換器執(zhí)行流程:

當(dāng)用戶發(fā)送請(qǐng)求后,@Requestbody 注解會(huì)讀取請(qǐng)求body中的數(shù)據(jù),默認(rèn)的請(qǐng)求轉(zhuǎn)換器HttpMessageConverter通過(guò)獲取請(qǐng)求頭Header中的Content-Type來(lái)確認(rèn)請(qǐng)求頭的數(shù)據(jù)格式,從而來(lái)為請(qǐng)求數(shù)據(jù)適配合適的轉(zhuǎn)換器。例如contentType:applicatin/json,那么轉(zhuǎn)換器會(huì)適配MappingJacksonHttpMessageConverter。響應(yīng)時(shí)候的時(shí)候同理,@Responsebody注解會(huì)啟用HttpMessageConverter,通過(guò)檢測(cè)Header中Accept屬性來(lái)適配的響應(yīng)的轉(zhuǎn)換器。
 

總結(jié):

當(dāng)在使用SpringMVC做服務(wù)器數(shù)據(jù)接收時(shí),尤其是在做Ajax請(qǐng)求的時(shí)候,尤其要注意contentType屬性,和accepte 屬性的設(shè)置,在springmvc-config.xml中配置好相應(yīng)的轉(zhuǎn)換器。當(dāng)我們?cè)谟肧pringMVC做 Ajax 請(qǐng)求的時(shí)候,有的做法用response.getWriter().print()的方法,還有更好的方法就是添加@Responsebody注解,直接返回Map類型的數(shù)據(jù),轉(zhuǎn)換器自動(dòng)轉(zhuǎn)換為JSON數(shù)據(jù)類型。

相關(guān)文章

  • java?9大性能優(yōu)化經(jīng)驗(yàn)總結(jié)

    java?9大性能優(yōu)化經(jīng)驗(yàn)總結(jié)

    這篇文章主要介紹了java?9大性能優(yōu)化經(jīng)驗(yàn)總結(jié),包括:Java代碼優(yōu)化,數(shù)據(jù)庫(kù)優(yōu)化,分布式緩存,異步化,Web前段,搜索引擎優(yōu)化等需要的朋友可以參考下
    2023-02-02
  • 詳解Java的Spring框架中bean的定義以及生命周期

    詳解Java的Spring框架中bean的定義以及生命周期

    這篇文章主要介紹了Java的Spring框架中bean的定義以及生命周期,bean的實(shí)例化是Java web開(kāi)發(fā)中的重要基礎(chǔ),需要的朋友可以參考下
    2015-12-12
  • springboot中縮短一個(gè)url鏈接的實(shí)現(xiàn)

    springboot中縮短一個(gè)url鏈接的實(shí)現(xiàn)

    縮短 URL 是現(xiàn)代應(yīng)用程序中常見(jiàn)的需求,通常用于減少長(zhǎng) URL 的長(zhǎng)度,使其更易于分享,URL 縮短服務(wù)的核心思路是將長(zhǎng) URL 映射到一個(gè)唯一的短代碼,本文主要介紹了springboot中縮短一個(gè)url鏈接的實(shí)現(xiàn),感興趣的可以了解一下
    2024-09-09
  • SpringCloud Zuul網(wǎng)關(guān)功能實(shí)現(xiàn)解析

    SpringCloud Zuul網(wǎng)關(guān)功能實(shí)現(xiàn)解析

    這篇文章主要介紹了SpringCloud Zuul網(wǎng)關(guān)功能實(shí)現(xiàn)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • SpringMVC 使用JSR-303進(jìn)行校驗(yàn) @Valid示例

    SpringMVC 使用JSR-303進(jìn)行校驗(yàn) @Valid示例

    本篇文章主要介紹了SpringMVC 使用JSR-303進(jìn)行校驗(yàn) @Valid示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • 在Java中自由塊的執(zhí)行順序

    在Java中自由塊的執(zhí)行順序

    java中的自由塊分為靜態(tài)的自由塊和非靜態(tài)的自由塊。非靜態(tài)自由塊的執(zhí)行時(shí)間是:在執(zhí)行構(gòu)造函數(shù)之前。靜態(tài)自由塊的執(zhí)行時(shí)間是:class文件加載時(shí)執(zhí)行。
    2013-04-04
  • Java多種方式動(dòng)態(tài)生成doc文檔

    Java多種方式動(dòng)態(tài)生成doc文檔

    這篇文章主要為大家詳細(xì)介紹了Java動(dòng)態(tài)生成doc文檔的多種方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • SpringBoot生成PDF的五種實(shí)現(xiàn)方法總結(jié)

    SpringBoot生成PDF的五種實(shí)現(xiàn)方法總結(jié)

    這篇文章主要介紹了SpringBoot生成PDF的五種實(shí)現(xiàn)方法,在開(kāi)發(fā)中經(jīng)常會(huì)遇到需要進(jìn)行對(duì)一些數(shù)據(jù)進(jìn)行動(dòng)態(tài)導(dǎo)出PDF文件,然后讓用戶自己選擇是否需要打印出來(lái),這篇文章我們來(lái)介紹五種實(shí)現(xiàn)方法,需要的朋友可以參考下
    2024-10-10
  • Maven項(xiàng)目引用第三方j(luò)ar包找不到類ClassNotFoundException

    Maven項(xiàng)目引用第三方j(luò)ar包找不到類ClassNotFoundException

    這篇文章主要為大家介紹了Maven項(xiàng)目引用第三方j(luò)ar包找不到類ClassNotFoundException解決及原因分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • IDEA如何在當(dāng)前類中查找方法快捷鍵

    IDEA如何在當(dāng)前類中查找方法快捷鍵

    這篇文章主要介紹了IDEA如何在當(dāng)前類中查找方法快捷鍵問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評(píng)論

光山县| 江安县| 沈丘县| 红原县| 平遥县| 聂荣县| 长葛市| 石台县| 盈江县| 信宜市| 太原市| 南阳市| 满城县| 惠安县| 高清| 无极县| 瑞金市| 平乐县| 长武县| 武陟县| 铜鼓县| 新竹市| 家居| 龙泉市| 义乌市| 永康市| 临颍县| 含山县| 常山县| 崇阳县| 嘉禾县| 仪陇县| 大竹县| 思南县| 甘谷县| 个旧市| 克东县| 万盛区| 曲周县| 榕江县| 金堂县|