前言
SpringMVC是目前主流的Web MVC框架之一。
如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/springMVC-introduction.html
现象
本文使用的demo基于maven,是根据入门blog的例子继续写下去的。
我们先来看一看对应的现象。 我们这里的配置文件 *-dispatcher.xml中的关键配置如下(其他常规的配置文件不在讲解,可参考本文一开始提到的入门blog):
(视图配置省略)
<mvc:resources location="/static/" mapping="/static/**"/> <mvc:annotation-driven/> <context:component-scan base-package="org.format.demo.controller"/>
pom中需要有以下依赖(Spring依赖及其他依赖不显示):
<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>
这个依赖是json序列化的依赖。
ok。我们在Controller中添加一个method:
@RequestMapping("/xmlOrJson") @ResponseBody public Map<String, Object> xmlOrJson() { Map<String, Object> map = new HashMap<String, Object>(); map.put("list", employeeService.list()); return map; }
直接访问地址:
我们看到,短短几行配置。使用@ResponseBody注解之后,Controller返回的对象 自动被转换成对应的json数据,在这里不得不感叹SpringMVC的强大。
我们好像也没看到具体的配置,唯一看到的就是*-dispatcher.xml中的一句配置:<mvc:annotation-driven/>。其实就是这个配置,导致了java对象自动转换成json对象的现象。
那么spring到底是如何实现java对象到json对象的自动转换的呢? 为什么转换成了json数据,如果想转换成xml数据,那该怎么办?
源码分析
本文使用的spring版本是4.0.2。
在讲解<mvc:annotation-driven/>这个配置之前,我们先了解下Spring的消息转换机制。@ResponseBody这个注解就是使用消息转换机制,最终通过json的转换器转换成json数据的。
HttpMessageConverter接口就是Spring提供的http消息转换接口。有关这方面的知识大家可以参考"参考资料"中的第二条链接,里面讲的很清楚。
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索json
, 数据
, 对象
, jackson
, responsebody
, springmvc+mysql
, springmvc 高并发
, 配置
, spring json
, java springmvc
, java json 数据转换
, 自动
, springmvc4...
springmvc注解
springmvc json xml、springmvc4 json xml、spring mvc 返回json、spring mvc json、spring mvc 接收json,以便于您获取更多的相关知识。