• SpringMVC @ResponseBody 406


      使用@ResponseBody注解可以让Controller返回json格式的数据,在需要传输一个对象信息的时候往往使用这种方式。如果在使用的时候遇到了406,一般原因是:

    • 缺少jar包。转换成json格式的字符串需要第三方jar包如jackson的支持
    • web.xml配置错误。在spring中,.html结尾的请求是不返回json的,如果需要一个请求以json格式返回,需要单独配置一个servlet-mapping
    • Dispatcher servlet 的xml配置文件没有配置注解驱动。

      正确的配置如下。

      Maven配置文件,spring的版本是4.x。

         <!--json解析-->
          <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
          <dependency>
              <groupId>com.fasterxml.jackson.core</groupId>
              <artifactId>jackson-core</artifactId>
              <version>2.9.5</version>
          </dependency>
          <!-- https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-mapper-asl -->
          <dependency>
              <groupId>org.codehaus.jackson</groupId>
              <artifactId>jackson-mapper-asl</artifactId>
              <version>1.9.13</version>
          </dependency>
          <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
          <dependency>
              <groupId>com.fasterxml.jackson.core</groupId>
              <artifactId>jackson-databind</artifactId>
              <version>2.9.8</version>
          </dependency>
          <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
          <dependency>
              <groupId>com.fasterxml.jackson.core</groupId>
              <artifactId>jackson-annotations</artifactId>
              <version>2.9.5</version>
          </dependency>

      web.xml文件中关于servlet-mapping的配置。为Dispatcher-servlet配置多个mapping路径,在需要一个请求返回json的时候,url写成/service/test的形式,不走.html的mapping

    <servlet>
        <servlet-name>smart</servlet-name>
        <servlet-class>
          org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>3</load-on-startup>
      </servlet>
    
      <servlet-mapping>
        <servlet-name>smart</servlet-name>
        <url-pattern>*.html</url-pattern>
      </servlet-mapping>
    
        <servlet-mapping>
            <servlet-name>smart</servlet-name>
            <url-pattern>/service/*</url-pattern>
        </servlet-mapping>

      DispatcherServlet的xml。记得开启注解,并增加相应的命名空间

    <mvc:annotation-driven></mvc:annotation-driven>

      

  • 相关阅读:
    第十三周学习进度
    第二次冲刺阶段每日任务02
    第二次冲刺阶段每日任务01
    构建之法阅读笔记03
    找水王续
    第十二周学习进度
    找水王
    第十一周学习进度
    博客园的用户体验
    找水王1
  • 原文地址:https://www.cnblogs.com/AshOfTime/p/10412672.html
Copyright © 2020-2023  润新知