zoukankan      html  css  js  c++  java
  • Spring MVC @RequestBody自动转JSON HTTP415错误解决方法

    转自:http://blog.csdn.net/tiantiandjava/article/details/46125141

    项目中想用@RequestBody直接接收json串转成对象

    网上查了使用方法,看着非常简单,不过经过测试很快发现页面直接报415错误。

    [html] view plain copy
     
    1. <body>  
    2.         <h1>HTTP Status 415 - </h1>  
    3.         <HR size="1" noshade="noshade">  
    4.             <p>  
    5.                 <b>type</b> Status report  
    6.             </p>  
    7.             <p>  
    8.                 <b>message</b>  
    9.                 <u></u>  
    10.             </p>  
    11.             <p>  
    12.                 <b>description</b>  
    13.                 <u>The server refused this request because the request entity is in a format not supported by the requested resource for the requested method.</u>  
    14.             </p>  
    15.          <HR size="1" noshade="noshade">  
    16.             <h3>Apache Tomcat/6.0.41</h3>  
    17. </body>  


    经过一通查,多半的解决方法实说header里的 Content-Type 一定 application/json

    但是问题依然没有解决。

    最后在《spring in Action》里找到一个信息

    有两个前提条件:

    The request’sContent-Typeheader must be set toapplication/json.
    The JacksonJSONlibrary must be available on the application’s classpath. 

    我满足了第一个,所以在classpath中添加了一个jar。问题解决了。

    [html] view plain copy
     
    1.         <dependency>  
    2.             <groupId>com.fasterxml.jackson.core</groupId>  
    3.             <artifactId>jackson-databind</artifactId>  
    4.             <version>2.5.3</version>  
    5.         </dependency>  

    所以如果大家遇到了同样的问题,可以先排除一下这两个因素。

    ------------------------------

    还有一种情况,在以上两个条件都满足的情况下,还是报同样的错误。

    在springmvc的配置文件中必须有:

    [html] view plain copy
     
    1. <!-- 默认的注解映射的支持 -->  
    2. <mvc:annotation-driven />  


    如果没有这个配置也是会报这个错的!

    为什么会引入jackson-databind包呢,因为默认的配置会用到:

    [java] view plain copy
     
    1. com.fasterxml.jackson.databind.ObjectMapper  
    [java] view plain copy
     
      1. <mvc:message-converters>  
      2.             <bean  
      3.                 class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">  
      4.                 <property name="objectMapper">  
      5.                     <bean class="com.fasterxml.jackson.databind.ObjectMapper">  
      6.                         <property name="dateFormat">  
      7.                             <bean class="java.text.SimpleDateFormat">  
      8.                                 <constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" />  
      9.                             </bean>  
      10.                         </property>  
      11.                     </bean>  
      12.                 </property>  
      13.             </bean>  
      14.         </mvc:message-converters> 
  • 相关阅读:
    VOA 2009/11/02 DEVELOPMENT REPORT In Kenya, a Better Life Through Mobile Money
    2009.11.26教育报道在美留学生数量创历史新高
    Java中如何实现Tree的数据结构算法
    The Python Tutorial
    VOA HEALTH REPORT Debate Over New Guidelines for Breast Cancer Screening
    VOA ECONOMICS REPORT Nearly Half of US Jobs Now Held by Women
    VOA ECONOMICS REPORT Junior Achievement Marks 90 Years of Business Education
    VOA 2009/11/07 IN THE NEWS A Second Term for Karzai; US Jobless Rate at 10.2%
    Ant入门
    Python 与系统管理
  • 原文地址:https://www.cnblogs.com/lycroseup/p/7358367.html
Copyright © 2011-2022 走看看