SpringMVC使用@ResponseBody注解转换json出现406的几种情况

今天在用SpringMVC测试返回json数据时出现了406错误,翻了网上的很多篇文章没有解决,先列举一下比较多数的情况:

一、Jackson包没有正确导入。

我的依赖是已经添加的

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

也有对应的库
在这里插入图片描述

二、SpringMVC版本和Jackson版本不兼容

我使用的SpringMVC版本是4.1.2-RELEASE ,Jackson版本是上面的2.10.0,这个地方是没有问题的。

三、没有配置装载对应HttpMessageConverter

Spring默认六个HttpMessageConverter,要实现json转换需要装载jackson的HttpMessageConverter,如果是单独配置,在springmvc的配置文件添加

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
            </list>
        </property>
</bean>
或者 添加注解驱动标签,一般都是这种方法
<mvc:annotation-driven/>

四、DispatcherServlet的url-pattern以.html结尾

我的web.xml配置是

<servlet>
    <servlet-name>dispatcher</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>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

没有出现这种.html结尾问题,如果有这种问题改掉即可,必须使用.html结尾的话,再添加一个url-pattern

<servlet-mapping>
        <servlet-name>dispatch</servlet-name>
        <url-pattern>*.html</url-pattern>
        <url-pattern>*.json</url-pattern>
 </servlet-mapping>

五、用于转换的类存在问题

这是我的情况,我在为学习前端临时写一个接口时,简易地定义了一个没有get方法的类,于是出现的406的情况。因此只要给类的属性添加上get方法即可。

猜你喜欢

转载自blog.csdn.net/Baibair/article/details/104859190