`
xsylang
  • 浏览: 20289 次
文章分类
社区版块
存档分类
最新评论

Spring MVC HTTP Status 406 - 解决方法

阅读更多

 用的Spring版本是4.2.4,在用@ResponseBody标注返回json格式时候遇到这样的错误:“The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers.”。字面意思很明显,产生的格式跟能接受的格式不符,对不上眼。但是各种google、stackoverflow之后,大多数答案都只是说要加上json的相关依赖之类的,试了都无用。于是跟踪代码,发现Spring默认ContentNegotiationManager使用org.springframework.web.accept.ServletPathExtensionContentNegotiationStrategy解析可接受的media type,这貌似是Spring 3哪个版本以后开始的特性,因为我的的url-pattern 是*.htm格式的,于是解析出来能accept的media type只有text/html,自然报错。而另一个HeaderContentNegotiationStrategy根本没发挥作用。

  一个可行的解决方案:

  在spring-servelt中添加

<bean   class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>

    <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>

这两个bean处理请求映射的,在bean中默认会创建一个使用HeaderContentNegotiationStrategy的ContentNegotiationManager,这样就能解析htttp请求头Accept中的类型了。但要注意的是,上述两个bean要定义在<mvc:annotation-driven/>之前。为什么呢?因为<mvc:annotation-driven/>会注册RequestMappingHandlerMapping, RequestMappingHandlerAdapter以及 ExceptionHandlerExceptionResolver等等的东西,如果上述两个bean定义放在<mvc:annotation-driven/>之后就不起作用了。

  

  

 

 

分享到:
评论
1 楼 wu383359408 2018-09-18  
点赞   ,解决了我的问题,但是还需要增加如下的包配置
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.8.11.2</version>
</dependency>

相关推荐

    Spring mvc 教程

    ### Spring MVC 教程知识点详解 #### Spring Web MVC 框架简介 Spring Web MVC 是 Spring Framework 的一个重要组成部分,主要用于构建基于 Java 的 Web 应用程序。它提供了一个灵活且强大的 MVC 实现,使得开发者...

    spring mvc的简单单元测试

    Spring MVC 是一个强大的Java web开发框架,用于构建可维护、可扩展的Web应用程序。单元测试是软件开发过程中不可或缺的一部分,它允许开发者独立地测试代码的各个部分,确保它们按照预期工作。Spring MVC 提供了对...

    最全的Spring MVC注解例子,异步请求,错误处理

    Spring MVC 是一个强大的Java Web开发框架,用于构建高效、可维护和模块化的Web应用程序。它在Spring框架的基础上,提供了一种优雅的方式来处理HTTP请求和响应。在这个“最全的Spring MVC注解例子”中,我们将深入...

    spring-mvc-error-handling-example:Spring MVC错误处理示例

    Spring Boot & Spring MVC 异常处理的N种方法 参考文档: Spring Boot 1.5.4.RELEASE Spring framework 4.3.9.RELEASE 默认行为 根据Spring Boot官方文档的说法: For machine clients it will produce a JSON ...

    spring MVC简易框架

    结合jQuery或其他JavaScript库,Spring MVC可以通过@ResponseStatus和@ResponseBody注解轻松实现Ajax请求的处理。 9. **RESTful API设计** Spring MVC 可以方便地构建RESTful风格的API,通过HTTP动词(GET、POST...

    Spring MVC--6.RESTful SpringMVC CRUD

    在RESTful服务中,每个URL代表一个资源,通过HTTP方法(GET、POST、PUT、DELETE)来操作这些资源。 1. **创建(Create)**:在Spring MVC中,我们通常使用`@PostMapping`注解来处理创建新资源的请求。客户端发送POST...

    spring-rest.rar_DEMO_employeeDS.java_rest spring mvc_spring mvc_

    在本示例中,我们将深入探讨如何利用Spring MVC框架构建RESTful API,主要涉及`employeeDS.java`这个可能的数据服务类以及与`rest_spring_mvc`、`spring_mvc`和`spring_rest`相关的概念。`spring-rest.rar`是一个...

    Spring MVC--7.REST风格 CRUD

    然后,为每个CRUD操作创建相应的方法,使用`@RequestMapping`及其子注解(`@GetMapping`, `@PostMapping`, `@PutMapping`, `@DeleteMapping`)来指定URL路径和HTTP方法。 例如,创建用户的方法可能如下所示: ```...

    基于注解配置和使用spring AOP(spring mvc框架)

    在SpringMVCTest项目中,你可以创建一个简单的Spring MVC应用程序,定义一些带有业务逻辑的服务方法,然后创建相应的切面来实现日志记录、异常处理或事务管理。通过运行和测试这些方法,你可以直观地看到AOP在实际...

    Json-RPC & Spring MVC 集成

    集成JSON-RPC和Spring MVC,可以让JSON-RPC作为Spring MVC的一个服务端点,允许客户端通过JSON-RPC协议调用服务器上的方法。这样做有以下优势: 1. **简洁的接口定义**:JSON-RPC的调用方式简洁,只需要指定方法名...

    spring-mvc-rest-get-unit-testing:Spring MVC REST JSON获取请求单元测试示例

    `@RequestMapping`注解用来定义HTTP方法(如GET、POST等)和URL路径。对于GET请求,我们可以使用`@GetMapping`注解。在处理JSON数据时,我们会用到`@ResponseBody`和`@RequestBody`注解,前者用于将方法返回值转换为...

    RESTful_Spring3MVC

    3. 状态转移(State Transfer):客户端通过HTTP方法(GET、POST、PUT、DELETE等)来改变服务器上的资源状态。 在Spring 3 MVC中,我们可以使用注解来定义RESTful控制器。例如,`@RestController`注解用于标记一个...

    Spring MVC非注解测试

    Spring MVC 是一个强大的Java web应用程序框架,用于构建可维护、模块化且高度可测试的Web应用程序。非注解测试在Spring MVC中是指不依赖于Java注解如`@Test`,`@Controller`等进行的测试,而是通过XML配置文件来...

    非常便捷的Spring mvc更新持久对象数据方法

    Spring MVC会自动将请求参数绑定到方法参数上,这得益于`@ModelAttribute`注解。例如,我们有一个User对象,更新用户信息的控制器方法可能如下所示: ```java @PostMapping("/users/{id}") public String update...

    spring mvc注释文档

    本文介绍了Spring MVC在Spring 2.5版本中引入的基于注解的配置方式,包括使用`@Controller`、`@RequestMapping`等注解来定义Controller及其处理方法,以及如何配置DispatcherServlet等关键组件。通过使用这些注解,...

    Spring mvc 资料

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建Web应用程序提供了一种模型-视图-控制器(MVC)架构。Spring框架的核心组件之一,Spring MVC使得开发人员可以方便地处理HTTP请求,实现业务逻辑,并将结果...

    spring-mvc-rest-post-unit-testing:Spring MVC REST JSON发布请求单元测试示例

    Spring MVC通过控制器(Controller)来接收HTTP请求,然后根据请求类型(如POST)和URL映射来调用相应的处理方法。这些方法通常会返回一个ModelAndView对象或直接返回一个视图名,或者在处理REST请求时,返回一个...

    spring mvc step by step

    ### Spring MVC Step by Step知识点详解 #### 概览 本文档详细介绍了如何使用Spring Framework MVC框架逐步构建一个完整的Web应用程序。文档版本为2.5,由Thomas Risberg、Rick Evans和Portia Tung共同编著,版权...

Global site tag (gtag.js) - Google Analytics