• 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> 
  • 相关阅读:
    切片器化繁为简,盘它 !
    微软连续12年成为Gartner分析和BI平台魔力象限的领导者
    2019微软Power BI 每月功能更新系列——2月Power BI 新功能学习
    DAX创建带有过滤器的超链接
    屏蔽flash地区识别
    关于Windows自动化卸载软件的思路
    拒绝后门程序-Alibabaprotect和AliPaladin
    二叉树的三种遍历
    [灯火阑珊] 关于cmd命令里的findstr匹配多个关键词
    递归函数详解——VS调试教你理解透彻递归
  • 原文地址:https://www.cnblogs.com/lycroseup/p/7358367.html
Copyright © 2020-2023  润新知