`
AILIKES
  • 浏览: 187199 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring MVC Rest服务 返回json报406错误的解决办法

 
阅读更多

@ResponseBody & @RequestBody

@RequestBody 将 HTTP 请求正文插入方法中,使用适合的HttpMessageConverter将请求体写入某个对象。

@ResponseBody 将内容或对象作为 HTTP 响应正文返回,使用@ResponseBody将会跳过视图处理部分,而是调用适合HttpMessageConverter,将返回值写入输出流。

@ResponseBody可以标注任何对象,由Srping完成对象——协议的转换

我们看到,短短几行配置。使用@ResponseBody注解之后,Controller返回的对象 自动被转换成对应的json数据,在这里不得不感叹SpringMVC的强大。

昨天在做@ResponseBody返回JSON格式的时候,老是报http 406错误,仔细查看了配置文件,原来是出现了两个配置。导致后面那个失效所致,下面给出简单排查和几种解决方案

出错的大致意思是 :

HTTP Status 406 (不接受) 

->无法使用请求的内容特性响应请求的网页。

其中网上很多资料都是说supportedMediaTypes需要添加application/json;charset=UTF-8,但依然出现406 (Not Acceptable)

一:确保applicationContext-configuration.xml配置了<mvc:annotation-driven>

<mvc:annotation-driven>

        <mvc:message-converters>

            <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">

                <property name="supportedMediaTypes">

                    <list>

                        <value>text/plain;charset=utf-8</value>

                        <value>text/html;charset=UTF-8</value>

                        <value>text/json;charset=UTF-8</value>

                        <value>application/json;charset=utf-8</value>

                    </list>

                </property>

                <property name="objectMapper">

                    <bean class="com.fasterxml.jackson.databind.ObjectMapper">

                        <property name="dateFormat">

                            <bean class="java.text.SimpleDateFormat">

                                <constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss"/>

                            </bean>

                        </property>

                    </bean>

                </property>

            </bean>

        </mvc:message-converters>

    </mvc:annotation-driven>

二:原来springMvc使用@ResponseBody,如果返回的是json结果,需要添加jackson的jar包的依赖

<dependency>

    <groupId>org.codehaus.jackson</groupId>

    <artifactId>jackson-core-asl</artifactId>

    <version>1.9.13</version>

</dependency>

    <dependency>

        <groupId>org.codehaus.jackson</groupId>

        <artifactId>jackson-mapper-asl</artifactId>

        <version>1.9.13</version>

    </dependency>

</dependencies>

<dependency>

    <groupId>com.fasterxml.jackson.core</groupId>

    <artifactId>jackson-databind</artifactId>

    <version>2.8.0</version>

</dependency>

三:测试supportedMediaTypes,就算不配置application/json;charset=UTF-8,也可以正常返回结果。

<property name="supportedMediaTypes">

    <list>

        <value>text/plain;charset=utf-8</value>

        <value>text/html;charset=UTF-8</value>

        <value>text/json;charset=UTF-8</value>

        <value>application/json;charset=utf-8</value>

    </list>

 

</property>

注意:在使用@ResponseBody 返回json的时候,方法参数中一定不能他添加   PrintWriter printWriter,这就画蛇添足了,而且程序会报错

 java.lang.IllegalStateException: getWriter() has already been called for this response

 

 

 参考:

https://my.oschina.net/lichhao/blog/172562

https://my.oschina.net/HeliosFly/blog/205343

http://www.cnblogs.com/fangjian0423/p/springMVC-xml-json-convert.html

分享到:
评论

相关推荐

    Spring MVC REST Demo

    Spring MVC 是一个强大的Java框架,用于构建Web应用程序,而REST(Representational State Transfer)是一种软件架构风格,常用于创建Web服务。"Spring MVC REST Demo"是一个示例项目,旨在展示如何在Spring MVC框架...

    spring mvc rest基础学习demo

    通过"spring mvc rest基础学习demo",初学者可以快速掌握如何使用Spring MVC创建RESTful服务,理解HTTP方法与REST原则,以及如何处理请求和响应。这个项目将涵盖基本的控制器设置、REST端点创建、数据交互和错误处理...

    spring mvc rest 小例子

    总结来说,这个“Spring MVC REST小例子”涵盖了如何使用Spring MVC框架构建REST服务的基本概念,包括HTTP方法映射、JSON数据交互以及相关的开发工具。通过学习和实践这个例子,你可以更好地理解和掌握RESTful服务的...

    Spring MVC – Easy REST-Based JSON Services with @ResponseBody

    标题中的“Spring MVC – Easy REST-Based JSON Services with @ResponseBody”是指使用Spring MVC框架构建基于REST的JSON服务,并通过使用`@ResponseBody`注解来简化这一过程。REST(Representational State ...

    使用Spring MVC创建REST服务简单例子

    本教程将通过一个简单的例子,讲解如何利用Spring MVC创建REST服务。 首先,我们需要在项目中引入Spring MVC的相关依赖。通常,这涉及到在Maven或Gradle的配置文件中添加Spring Web和Spring MVC的依赖。例如,如果...

    Spring @MVC REST 实例以及 (同一资源,多种展现:xml,json,html)

    该实例展示了 spring3 REST 的使用方法,以及同一种内容,多种不同方式展示的实现,例如同一 User 信息,可以展示为:xml,json,html三种不同的格式。可以参考这篇文章:http://badqiu.javaeye.com/blog/552806

    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 搭建Rest服务.doc

    在Spring MVC中,我们可以利用其内置的支持轻松地构建REST服务。 首先,要创建REST服务,你需要了解以下几个核心概念: 1. **URI(Uniform Resource Identifier)**:REST中的每个资源都有一个唯一的URI,用于标识...

    Spring RESTful服务接收和返回JSON最佳实践

    本篇文章将深入探讨如何利用Spring创建RESTful服务,并有效地处理JSON数据的接收与返回。 首先,我们需要了解Spring MVC,它是Spring框架的一部分,专门用于构建Web应用。Spring MVC通过DispatcherServlet作为入口...

    使用Spring4 MVC 构建RESTful服务器,输出JSON格式的数据结构

    Spring4 MVC作为Java领域最流行的MVC框架之一,提供了一流的支持来构建RESTful API,尤其适合输出JSON格式的数据结构。本文将深入探讨如何使用Spring4 MVC实现这一目标。 首先,理解REST(Representational State ...

    spring—mvc -json

    5. 测试:现在,当客户端向 `/person` URL发起GET请求时,Spring MVC会将`getPerson`方法返回的`Person`对象自动转换为JSON格式并返回给客户端。 在提供的`JavaJson`压缩包中,可能包含了实现上述步骤的源代码示例...

    Spring mvc实现Restful返回json格式数据实例详解

    开发者只需在控制器方法中返回一个对象,Spring MVC就会自动将其转换成JSON格式数据并返回给客户端。 知识点四:项目依赖管理 在Maven项目中,需要在pom.xml文件中添加对应的依赖声明。如示例中的Spring MVC和...

    spring mvc restful service

    在本文中,我们将深入探讨如何利用Spring MVC创建RESTful服务,这些服务可以处理字符串、JSON和XML数据,并且是用Maven构建的。我们将讨论关键概念、配置、以及如何构建可直接运行的项目。 1. **RESTful服务**:...

    spring mvc 3.2 rest配置 文件

    5. **异常处理** - 在Spring MVC中,可以使用`@ExceptionHandler`注解来处理特定类型的异常,并返回定制的错误响应。 6. **Paging and Sorting** - 如果你需要提供分页和排序功能,可以使用`Pageable`接口和`Page`...

    spring mvc json学习

    在本文中,我们将深入探讨“Spring MVC JSON学习”这一主题,重点关注如何在Spring MVC应用中处理JSON数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁性和易读性而被广泛应用。 ...

    SpringMVC 生成JSON(一)

    生成JSON时,我们不再需要ModelAndView,而是直接在Controller方法中返回一个对象或Map,Spring MVC会自动将其转换为JSON格式。这个过程依赖于Jackson库(默认情况下,Spring MVC已经集成了Jackson)。如果项目中未...

    spring mvc集成webservice

    在本示例中,我们将探讨如何将Spring MVC与Web服务(特别是SOAP Web服务)进行集成,以便于在Spring MVC应用中调用或暴露Web服务。 **一、Spring MVC简介** Spring MVC是Spring框架的一部分,它提供了MVC(Model-...

    springmvc+rest+json交互+接口

    总的来说,Spring MVC结合REST和JSON,使得开发健壮、可扩展的Web服务变得简单而直观。理解这些概念和技术将有助于你构建高质量的Web应用程序,满足现代互联网需求。在实际项目中,你还可以考虑其他方面,如安全性...

    精通Spring MVC4

    Spring MVC通过@RequestMapping的produces和consumes属性,以及@Consumes和@Produces注解,支持构建符合REST原则的服务,能够处理JSON、XML等多种内容类型。 11. **模板引擎集成** Spring MVC可以轻松地与各种...

    第四章 Spring MVC Rest风格的url、静态资源标签

    如果需要返回JSON或XML数据,可以使用`@ResponseBody`结合`@JsonView`或`@XmlRootElement`注解。 总的来说,Spring MVC在实现RESTful服务和管理静态资源方面提供了强大的工具和灵活性。开发者可以根据项目需求进行...

Global site tag (gtag.js) - Google Analytics