@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 是一个强大的Java框架,用于构建Web应用程序,而REST(Representational State Transfer)是一种软件架构风格,常用于创建Web服务。"Spring MVC REST Demo"是一个示例项目,旨在展示如何在Spring MVC框架...
通过"spring mvc rest基础学习demo",初学者可以快速掌握如何使用Spring MVC创建RESTful服务,理解HTTP方法与REST原则,以及如何处理请求和响应。这个项目将涵盖基本的控制器设置、REST端点创建、数据交互和错误处理...
总结来说,这个“Spring MVC REST小例子”涵盖了如何使用Spring MVC框架构建REST服务的基本概念,包括HTTP方法映射、JSON数据交互以及相关的开发工具。通过学习和实践这个例子,你可以更好地理解和掌握RESTful服务的...
标题中的“Spring MVC – Easy REST-Based JSON Services with @ResponseBody”是指使用Spring MVC框架构建基于REST的JSON服务,并通过使用`@ResponseBody`注解来简化这一过程。REST(Representational State ...
本教程将通过一个简单的例子,讲解如何利用Spring MVC创建REST服务。 首先,我们需要在项目中引入Spring MVC的相关依赖。通常,这涉及到在Maven或Gradle的配置文件中添加Spring Web和Spring MVC的依赖。例如,如果...
该实例展示了 spring3 REST 的使用方法,以及同一种内容,多种不同方式展示的实现,例如同一 User 信息,可以展示为:xml,json,html三种不同的格式。可以参考这篇文章:http://badqiu.javaeye.com/blog/552806
在本示例中,我们将深入探讨如何利用Spring MVC框架构建RESTful API,主要涉及`employeeDS.java`这个可能的数据服务类以及与`rest_spring_mvc`、`spring_mvc`和`spring_rest`相关的概念。`spring-rest.rar`是一个...
在Spring MVC中,我们可以利用其内置的支持轻松地构建REST服务。 首先,要创建REST服务,你需要了解以下几个核心概念: 1. **URI(Uniform Resource Identifier)**:REST中的每个资源都有一个唯一的URI,用于标识...
本篇文章将深入探讨如何利用Spring创建RESTful服务,并有效地处理JSON数据的接收与返回。 首先,我们需要了解Spring MVC,它是Spring框架的一部分,专门用于构建Web应用。Spring MVC通过DispatcherServlet作为入口...
Spring4 MVC作为Java领域最流行的MVC框架之一,提供了一流的支持来构建RESTful API,尤其适合输出JSON格式的数据结构。本文将深入探讨如何使用Spring4 MVC实现这一目标。 首先,理解REST(Representational State ...
5. 测试:现在,当客户端向 `/person` URL发起GET请求时,Spring MVC会将`getPerson`方法返回的`Person`对象自动转换为JSON格式并返回给客户端。 在提供的`JavaJson`压缩包中,可能包含了实现上述步骤的源代码示例...
开发者只需在控制器方法中返回一个对象,Spring MVC就会自动将其转换成JSON格式数据并返回给客户端。 知识点四:项目依赖管理 在Maven项目中,需要在pom.xml文件中添加对应的依赖声明。如示例中的Spring MVC和...
在本文中,我们将深入探讨如何利用Spring MVC创建RESTful服务,这些服务可以处理字符串、JSON和XML数据,并且是用Maven构建的。我们将讨论关键概念、配置、以及如何构建可直接运行的项目。 1. **RESTful服务**:...
5. **异常处理** - 在Spring MVC中,可以使用`@ExceptionHandler`注解来处理特定类型的异常,并返回定制的错误响应。 6. **Paging and Sorting** - 如果你需要提供分页和排序功能,可以使用`Pageable`接口和`Page`...
在本文中,我们将深入探讨“Spring MVC JSON学习”这一主题,重点关注如何在Spring MVC应用中处理JSON数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁性和易读性而被广泛应用。 ...
生成JSON时,我们不再需要ModelAndView,而是直接在Controller方法中返回一个对象或Map,Spring MVC会自动将其转换为JSON格式。这个过程依赖于Jackson库(默认情况下,Spring MVC已经集成了Jackson)。如果项目中未...
在本示例中,我们将探讨如何将Spring MVC与Web服务(特别是SOAP Web服务)进行集成,以便于在Spring MVC应用中调用或暴露Web服务。 **一、Spring MVC简介** Spring MVC是Spring框架的一部分,它提供了MVC(Model-...
总的来说,Spring MVC结合REST和JSON,使得开发健壮、可扩展的Web服务变得简单而直观。理解这些概念和技术将有助于你构建高质量的Web应用程序,满足现代互联网需求。在实际项目中,你还可以考虑其他方面,如安全性...
Spring MVC通过@RequestMapping的produces和consumes属性,以及@Consumes和@Produces注解,支持构建符合REST原则的服务,能够处理JSON、XML等多种内容类型。 11. **模板引擎集成** Spring MVC可以轻松地与各种...
如果需要返回JSON或XML数据,可以使用`@ResponseBody`结合`@JsonView`或`@XmlRootElement`注解。 总的来说,Spring MVC在实现RESTful服务和管理静态资源方面提供了强大的工具和灵活性。开发者可以根据项目需求进行...