SpringMVC:json消息處理器

<mvc:annotation-driven/>初始化7個轉換器
html

  • ByteArrayHttpMessageConverter spring

  • StringHttpMessageConverter json

  • ResourceHttpMessageConverter mvc

  • SourceHttpMessageConverter app

  • XmlAwareFormHttpMessageConverter 函數

  • Jaxb2RootElementHttpMessageConverter spa

  • MappingJacksonHttpMessageConvertercode


對於json的解析就是經過MappingJacksonHttpMessageConverter轉換器完成的。orm

只添加<mvc:annotation-driven />還不行,須要在classpath環境中能找到Jackson包xml

Jackson包Maven配置

<dependency>
  <groupId>org.codehaus.jackson</groupId>
  <artifactId>jackson-core-asl</artifactId>
  <version>1.9.13</version>
</dependency>
<dependency>
  <groupId>org.codehaus.jackson</groupId>
  <artifactId>jackson-mapper-asl</artifactId>
  <version>1.9.13</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.4.4</version>
</dependency>

以前看資料有說過spring4.x以後就須要配置MappingJackson2HttpMessageConverter而不是默認的MappingJacksonHttpMessageConverter。而相應的jar包也須要使用對應的2.x版本

<mvc:annotation-driven>  
        <mvc:message-converters register-defaults="true">  
         <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">             <property name="supportedMediaTypes">
                <list>
                    <value>application/json;charset=UTF-8</value>
                    <value>text/html;charset=UTF-8</value>
                </list>
            </property>
         </bean> 
        </mvc:message-converters>
        <!--注入的message-converters優先級高於默認注入的json轉換器-->
</mvc:annotation-driven>

注意:默認狀況下MappingJacksonHttpMessageConverter 會設置content爲application/json,在IE9下返回會出現提示下載的現象,出現這種狀況能夠手動指定頭信息爲"text/html",或者"/"(全部,不肯定就設置爲這個)。

當只設置了"text/html"時,我試驗的時候Ajax回調函數接收json值的時候不行,確實是傳遞過來了,可是也許是轉換出了問題,因此在上面還加了個「application/json」就能夠了。。。。。


固然也能夠用fastjson,不過依賴的jar包就不同了,並且配置消息處理器的方式也是須要本身添加的。

相關文章
相關標籤/搜索