关于springmvc json交互产生的406错误

Posted 兴趣使然~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于springmvc json交互产生的406错误相关的知识,希望对你有一定的参考价值。

  产生错误的背景:springmvc使用<mvc:annotation-driven>进行配置,那么只要引入响应的json解析包就可以了。在pom中已经引入了如下:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.8.5</version>
</dependency>

  web.xml配置DispatcherServlet如下:

<servlet>
    <servlet-name>front</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>front</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

  上面的配置是正确的。但是当使用@ResponseBody注解要返回json数据的方法然后进行访问时,就出现了406错误。

  解决方法:错误在于url-pattern。当改为其他后缀时就能成功访问,例如.do、.action。这是因为如果后缀为.html、.htm、.xhtml时,springmvc会将content-type设置为text/html,正确的是application/json,此时返回json对象就出错了。

以上是关于关于springmvc json交互产生的406错误的主要内容,如果未能解决你的问题,请参考以下文章

springmvc怎么返回json数据报406

springmvc @ResponseBody返回json 报406 not acceptable

Spring MVC + JSON = 406 不可接受

spring mvc 不返回 json 内容 - 错误 406

Spring 3 + JSON 的问题:HTTP 状态 406?

http请求后台报406错误