spring web 4.1处理json

Spring mvc处理json,我们都知道使用@ResponseBody,处理xml也是用此注解。如果想spring mvc的使用@ResponseBody注解处理json,我们需要加入一些处理bean,也可以使用默认spring提供的。

通过spring源码RequestMappingHandlerAdapter类,我们知道初始化的时候这些注解已经被加载进来,如下RequestMappingHandlerAdapter类的代码如下:argumentResolvers和returnValueHandlers一个接受一个返回各自装载很多处理,有兴趣可以研究源码。

Java代码  

  1. @Override
  2. public void afterPropertiesSet() {
  3. if (this.argumentResolvers == null) {
  4. List<HandlerMethodArgumentResolver> resolvers = getDefaultArgumentResolvers();
  5. this.argumentResolvers = new HandlerMethodArgumentResolverComposite().addResolvers(resolvers);
  6. }
  7. if (this.initBinderArgumentResolvers == null) {
  8. List<HandlerMethodArgumentResolver> resolvers = getDefaultInitBinderArgumentResolvers();
  9. this.initBinderArgumentResolvers = new HandlerMethodArgumentResolverComposite().addResolvers(resolvers);
  10. }
  11. if (this.returnValueHandlers == null) {
  12. List<HandlerMethodReturnValueHandler> handlers = getDefaultReturnValueHandlers();
  13. this.returnValueHandlers = new HandlerMethodReturnValueHandlerComposite().addHandlers(handlers);
  14. }
  15. initControllerAdviceCache();
  16. }

言归正传,下面介绍处理json

spring配置文件如下:

Java代码  

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
  4. xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:aop="http://www.springframework.org/schema/aop"
  6. xsi:schemaLocation="
  7. http://www.springframework.org/schema/beans
  8. http://www.springframework.org/schema/beans/spring-beans.xsd
  9. http://www.springframework.org/schema/tx
  10. http://www.springframework.org/schema/tx/spring-tx.xsd
  11. http://www.springframework.org/schema/mvc
  12. http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
  13. http://www.springframework.org/schema/context
  14. http://www.springframework.org/schema/context/spring-context.xsd
  15. http://www.springframework.org/schema/aop
  16. http://www.springframework.org/schema/aop/spring-aop.xsd"
  17. default-lazy-init="false">
  18. <!-- mvc:annotation-driven使用注解功能 -->
  19. <mvc:annotation-driven>
  20. <mvc:message-converters register-defaults="true">
  21. <!--json处理-->
  22. <bean
  23. class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
  24. <property name="supportedMediaTypes">
  25. <list>
  26. <value>application/json;charset=UTF-8</value>
  27. <value>text/html;charset=UTF-8</value>
  28. </list>
  29. </property>
  30. </bean>
  31. </mvc:message-converters>
  32. </mvc:annotation-driven>
  33. <!-- 只扫描Controller 注解 -->
  34. <context:component-scan base-package="com.zx.web"
  35. use-default-filters="false">
  36. <context:include-filter type="annotation"
  37. expression="org.springframework.stereotype.Controller" />
  38. </context:component-scan>
  39. <!-- 动态资源访问,默认使用其他handlerAdapter解析 -->
  40. <mvc:resources mapping="/images/**" location="/images/" />
  41. <mvc:resources mapping="/js/**" location="/js/" />
  42. <mvc:resources mapping="/css/**" location="/css/" />
  43. <!-- jsp视图 -->
  44. <bean id="jspViewResolver"
  45. class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  46. <property name="viewClass"
  47. value="org.springframework.web.servlet.view.JstlView" />
  48. <property name="prefix" value="/jsp/" />
  49. <property name="suffix" value=".jsp" />
  50. <property name="order" value="0" />
  51. </bean>
  52. </beans>

我使用的是spring自带的类MappingJackson2HttpMessageConverter处理,在spring4.1以前都是使用MappingJacksonHttpMessageConverter类处理,在spring4.1以后都是用MappingJackson2HttpMessageConverter处理,然而换了类,自然依赖的jackson也进行升级了,spring4,1以后使用jackson-annotations-2.5.0.jar,jackson-core-2.5.0.jar,jackson-databind-2.5.0.jar

Controller层代码如下:

Java代码  

  1. package com.zx.web;
  2. import org.springframework.web.bind.annotation.RequestMapping;
  3. import org.springframework.web.bind.annotation.ResponseBody;
  4. import com.zx.entity.User;
  5. @org .springframework.web.bind.annotation.RestController
  6. public class RestController {
  7. @RequestMapping("/rest")
  8. @ResponseBody
  9. public User getUser()
  10. {
  11. User user = new User();
  12. user.setName("nihao");
  13. user.setAddress("anhui");
  14. user.setAge("89");
  15. user.setWork("软件");
  16. return user;
  17. }
  18. }

结果如下:

时间: 2024-08-02 05:24:59

spring web 4.1处理json的相关文章

Spring Web MVC框架(八) 配置Spring Web MVC

这一篇文章对应于Spring参考文档 Configuring Spring MVC,讲的是Spring Web MVC各部分的配置方法,包括Java代码配置和XML文件配置以及MVC命名空间的使用方法. 启用MVC Java配置和XML命名空间 默认配置 要启用MVC Java配置(@Controller等各种注解)和XML命名空间,如果使用的是Java配置,在配置类上再添加@EnableWebMvc注解即可. @Configuration @EnableWebMvc public class

Spring 接收转换 jquery ajax json数组字符串

1.ajax发送json字符串 </pre><p>组建对象</p><p></p><pre code_snippet_id="449843" snippet_file_name="blog_20140813_2_7927326" name="code" class="javascript">var student = new Object(); studen

Spring Boot——2分钟构建spring web mvc REST风格HelloWorld

之前有一篇<5分钟构建spring web mvc REST风格HelloWorld>介绍了普通方式开发spring web mvc web service.接下来看看使用spring boot如何快速构建一个. Spring Boot使我们更容易去创建基于Spring的独立和产品级的可以”即时运行“的应用和服务.支持约定大于配置,目的是尽可能快地构建和运行Spring应用. 之前我们创建基于Spring的项目需要考虑添加哪些Spring依赖和第三方的依赖.使用Spring Boot后,我们可

(Spring文档翻译)Part V, the Web 17.1 Spring Web MVC framework介绍

指南文档的这个部分涵盖了Spring框架对表现层(特别是基于Web的表现层)以及WebSocket消息风格的web应用的支持. Spring框架拥有自己的web框架,Spring Web MVC,包含在前面几个章节.之后的几章是关于Spring框架对其他web技术的集成支持,像JSF等. 再之后是Spring框架的MVC porlet 框架. Spring 的MVC框架围绕着DispatcherServlet设计,DispatcherServlet将请求转发给handler,用可配置的handl

spring boot 解决后台返回 json 到前台中文乱码之后出现返回json数据报错 500:no convertter for return value of type

问题描述 spring Boot 中文返回给浏览器乱码 解析成问号?? fastJson jackJson spring boot 新增配置解决后台返回 json 到前台中文乱码之后,出现返回json数据报错:no convertter for return value of type 注释掉解决中文乱码的问题之后返回对象json正常 Failed to write HTTP message: org.springframework.http.converter.HttpMessageNotWr

Spring web Flow2学习笔记

想抽时间研究一下Spring web Flow2,能够找到的唯一电子书是<深入解析Spring+MVC与Web Flow>,我现在摘录本书的一段内容如下,通过这一段,大家可以想象中文背景的程序员具有多大的先天劣势,还可以看到流畅的翻译对一本书来说有多重要! 不多吐槽了,下面是正文. 首先要区分工作流workflow和webflow,webflow是试图层的概念,用于实现一组页面交互逻辑,类似于.Net的wizard组件:workflow一般是业务层的设计,可能包括主管审核.定时器.施工反馈等业

Web Api 中返回JSON的正确做法

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 在使用Web Api的时候,有时候只想返回JSON:实现这一功能有多种方法,本文提供两种方式,一种传统的,一种作者认为是正确的方法. JSON in Web API – the formatter based approach 只支持JSON最

Spring Framework------&gt;version4.3.5.RELAESE-----&gt;Reference Documentation学习心得-----&gt;Spring Framework中的spring web MVC模块

spring framework中的spring web MVC模块 1.概述 spring web mvc是spring框架中的一个模块 spring web mvc实现了web的MVC架构模式,可以被用于开发web网站 spring web mvc 实现web网站的原理,如下图: 2.使用spring web mvc开发web应用的步骤 step1:在自己的工程中引入spring web mvc模块 step2:配置spring web mvc模块 中的DispatcherServlet,告

Spring Web应用的最大瑕疵

众所周知, 现在的Spring框架已经成为构建企业级Java应用事实上的标准了,众多的企业项目都构建在Spring项目及其子项目之上,特别是Java Web项目,很多都使用了Spring并且遵循着Web.Service.Dao这样的分层原则,下层向上层提供服务:不过Petri Kainulainen在其博客中却指出了众多Spring Web应用的最大瑕疵,请继续阅读看看文中所提到的问题是否也出现在你的项目当中. 使用Spring框架构建应用的开发者很乐于谈论依赖注入的好处.但遗憾的是,他们很多人