程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> SpringMVC 中HttpMessageConverter簡介和Http要求415 的成績

SpringMVC 中HttpMessageConverter簡介和Http要求415 的成績

編輯:關於JAVA

SpringMVC 中HttpMessageConverter簡介和Http要求415 的成績。本站提示廣大學習愛好者:(SpringMVC 中HttpMessageConverter簡介和Http要求415 的成績)文章只能為提供參考,不一定能成為您想要的結果。以下是SpringMVC 中HttpMessageConverter簡介和Http要求415 的成績正文


一.成績描寫:

在SprinvMVC的Web法式中,我在頁面發送Ajax 的POST要求,然後在辦事器端應用@requestBody吸收要求body中的參數,其時運轉進程中,我想辦事器發送Ajax要求,閱讀器一向反應415 Unsupported Media Type或許400的狀況碼,認為是Ajax寫的有成績。便查找了半天材料,才發明spring-mvc.config文件的設置裝備擺設中少了器械,固然也有能夠是你真的在Ajax中缺乏了對Content-Type參數的設置。剖析後應當是我springMVC-config.xml文件設置裝備擺設有成績。
(注):400:(毛病要求) 辦事器不睬解要求的語法。 415:(不支撐的媒體類型) 要求的格局不受要求頁面的支撐。

二.處理辦法: 

 在springMVC-config.xml文件中,增長了一個StringHttpMessageConverter要求信息轉換器,設置裝備擺設片斷以下:

<!--- StringHttpMessageConverter bean -->
< bean id = "stringHttpMessageConverter" class = "org.springframework.http.converter.StringHttpMessageConverter"/>
 
<!-- 啟動Spring MVC的注解功效,完成要求和注解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要求信息轉換器簡介:

HttpMessageConverter接口指定了一個可以把Http request信息和Http response信息停止格局轉換的轉換器。平日完成HttpMessageConverter接口的轉換器有以下幾種:
ByteArrayHttpMessageConverter: 擔任讀取二進制格局的數據和寫出二進制格局的數據;
StringHttpMessageConverter:   擔任讀取字符串格局的數據和寫出二進制格局的數據;
 ResourceHttpMessageConverter:擔任讀取資本文件和寫出資本文件數據;
FormHttpMessageConverter:       擔任讀取form提交的數據(能讀取的數據格局為 application/x-www-form-urlencoded,不克不及讀取multipart/form-data格局數據);擔任寫入application/x-www-from-urlencoded和multipart/form-data格局的數據;
MappingJacksonHttpMessageConverter:  擔任讀取和寫入json格局的數據;
SourceHttpMessageConverter:                   擔任讀取和寫入 xml 中javax.xml.transform.Source界說的數據;
Jaxb2RootElementHttpMessageConverter:  擔任讀取和寫入xml 標簽格局的數據;
AtomFeedHttpMessageConverter:              擔任讀取和寫入Atom格局的數據;
RssChannelHttpMessageConverter:           擔任讀取和寫入RSS格局的數據;

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

四.HttpMessageConverter要求信息轉換器履行流程:

當用戶發送要求後,@Requestbody 注解會讀取要求body中的數據,默許的要求轉換器HttpMessageConverter經由過程獲得要求頭Header中的Content-Type來確認要求頭的數據格局,從而來為要求數據適合營適的轉換器。例如contentType:applicatin/json,那末轉換器會適配MappingJacksonHttpMessageConverter。呼應時刻的時刻同理,@Responsebody注解會啟用HttpMessageConverter,經由過程檢測Header中Accept屬性來適配的呼應的轉換器。
 

總結:

當在應用SpringMVC做辦事器數據吸收時,特別是在做Ajax要求的時刻,特別要留意contentType屬性,和accepte 屬性的設置,在springmvc-config.xml中設置裝備擺設好響應的轉換器。當我們在用SpringMVC做 Ajax 要求的時刻,有的做法用response.getWriter().print()的辦法,還有更好的辦法就是添加@Responsebody注解,直接前往Map類型的數據,轉換器主動轉換為JSON數據類型。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved