@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
相关推荐
该实例展示了 spring3 REST 的使用方法,以及同一种内容,多种不同方式展示的实现,例如同一 User 信息,可以展示为:xml,json,html三种不同的格式。可以参考这篇文章:http://badqiu.javaeye.com/blog/552806
使用Spring4 MVC 构建RESTful服务器,输出JSON格式的数据结构
NULL 博文链接:https://nethub2.iteye.com/blog/2329387
Spring-MVC-REST-GET-单元测试 Spring MVC REST JSON获取请求单元测试示例。 有关更多详细信息,请参考
《Spring MVC 3.0实战指南》,参考《Spring 3.x企业应用开发实战》。 内容简介: 1、Spring MVC框架简介 2、HTTP请求地址映射 3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及解析器 7...
spring-rest2ts-generator从Spring MVC开始,但是我们注意到它也很容易支持JAX-RS注释,并且在1.2.4版本中添加了这种支持。 在版本1.2.4中,我们还添加了对支持, 是用于JSON API的轻型Angular2 +适配器 特征 从...
测试Spring MVC REST发布请求的示例代码。
SpringMVC4.X Spring MVC 4.X REST JSON example 本示例使用Spring 4.1.4搭建 SpringMVC RESTful Service。
Spring MVC 框架简介 Spring Web model-view-controller (MVC)框架是围绕 DispatcherServlet 设计的,并分发请求到处理程序(handler),Spring MVC支持可配置的处理程序映射(handler mapping),视图解析(view ...
《Spring MVC 3.0实战指南》,参考《Spring 3.x企业应用开发实战》。 内容简介: 1、Spring MVC框架简介 2、HTTP请求地址映射 3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及...
Spring MVC - REST Web 服务 对于相同的域对象,RestController 通过接受 application/json 或 application/xml 生成相应的响应。 设置标题 接受:application/json,或 接受:应用程序/xml 并将 GET 请求发送到
本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,现在这一篇补上。下面开始贴代码。 文中用的框架版本:spring 3,hibernate 3,没有的,自己上网下。 先说...
前端基于Angular,lodash和requirejs,后端由基于Spring MVC / JPA的JSON REST Web服务组成,并通过Spring Security进行保护。 在此上查看该应用程序的进一步说明。 安装依赖 以下依赖项是必需的: Java 8 节点...
完成了一个名为HplussApp的String MVC应用程序,可帮助您在公司的库存中查找产品。... 前端:JSP,CSS,Spring表单标签。后端:Java,SpringBoot,Spring MVC,JPA,Hibernate。... Spring MVC REST控制器。
spring_lab 作者:拉斐尔·丰塞卡(Rafael Fonseca) 技术:JSP,JPA,JSON,Spring,JUnit 简介: spring_lab Crud构建和部署打开命令行,然后导航到该项目的根目录。 键入以下命令来构建和部署归档文件: mvn ...
将数据发送回Rest Client本演示使用的Maven依赖关系spring-webmvc-MVC和REST集成jackson-databind-json转换器javax.servlet-api-配置分派器Servlet初始化程序服务器使用的服务器是TomCat-9.0api端点/ spring-rest-...
技术栈依赖注入:Spring 4.2.1.RELEASE REST控制器:Spring Web MVC 4.2.1.RELEASE JSON转换:Jackson 2.4.6 验证:Hibernate Validator 5.1.3.Final在本地运行要启动Web应用程序,请执行mvn这将干净地构建应用程序...
9.4 用REST服务发布JSON 372 9.4.1 问题 372 9.4.2 解决方案 372 9.4.3 工作原理 372 9.5 访问具有复杂XML响应的REST服务 375 9.5.1 问题 375 9.5.2 解决方案 375 9.5.3 工作原理 375 9.6 小结 ...
Spring MVC + REST + Spring Data JPA + Hibernate 为跨域资源共享(CORS)添加了CORSFilter,从其他服务器访问Service Server。 添加了对 JSON + XML 的响应支持,根据请求类型和接受标头值。
用于ReST服务的Spring MVC; Spring MVC将数据转换为JSON; Spring Data访问数据库; Spring Data,用于将数据初始加载到数据库; 带有Bootstrap的JSP进行布局; 具有JQuery的JSP调用ReST服务; Servlet容器...