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

spring web 4.1处理json

    博客分类:
  • Java
阅读更多

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


通过spring源码RequestMappingHandlerAdapter类,我们知道初始化的时候这些注解已经被加载进来,如下RequestMappingHandlerAdapter类的代码如下:argumentResolvers和returnValueHandlers一个接受一个返回各自装载很多处理,有兴趣可以研究源码。
@Override
	public void afterPropertiesSet() {
		if (this.argumentResolvers == null) {
			List<HandlerMethodArgumentResolver> resolvers = getDefaultArgumentResolvers();
			this.argumentResolvers = new HandlerMethodArgumentResolverComposite().addResolvers(resolvers);
		}
		if (this.initBinderArgumentResolvers == null) {
			List<HandlerMethodArgumentResolver> resolvers = getDefaultInitBinderArgumentResolvers();
			this.initBinderArgumentResolvers = new HandlerMethodArgumentResolverComposite().addResolvers(resolvers);
		}
		if (this.returnValueHandlers == null) {
			List<HandlerMethodReturnValueHandler> handlers = getDefaultReturnValueHandlers();
			this.returnValueHandlers = new HandlerMethodReturnValueHandlerComposite().addHandlers(handlers);
		}
		initControllerAdviceCache();
	}

言归正传,下面介绍处理json
spring配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans 
		http://www.springframework.org/schema/beans/spring-beans.xsd 
		http://www.springframework.org/schema/tx 
		http://www.springframework.org/schema/tx/spring-tx.xsd 
	    http://www.springframework.org/schema/mvc
         http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
		http://www.springframework.org/schema/context 
		http://www.springframework.org/schema/context/spring-context.xsd
		http://www.springframework.org/schema/aop
		http://www.springframework.org/schema/aop/spring-aop.xsd"
	default-lazy-init="false">

	<!-- mvc:annotation-driven使用注解功能 -->
	<mvc:annotation-driven>
		<mvc:message-converters register-defaults="true">
			<!--json处理-->
			<bean
				class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
				<property name="supportedMediaTypes">
					<list>
						<value>application/json;charset=UTF-8</value>
						<value>text/html;charset=UTF-8</value>
					</list>
				</property>
			</bean>
		</mvc:message-converters>
	</mvc:annotation-driven>

	<!-- 只扫描Controller 注解 -->
	<context:component-scan base-package="com.zx.web"
		use-default-filters="false">
		<context:include-filter type="annotation"
			expression="org.springframework.stereotype.Controller" />
	</context:component-scan>

	<!-- 动态资源访问,默认使用其他handlerAdapter解析 -->
	<mvc:resources mapping="/images/**" location="/images/" />
	<mvc:resources mapping="/js/**" location="/js/" />
	<mvc:resources mapping="/css/**" location="/css/" />


	<!-- jsp视图 -->
	<bean id="jspViewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="viewClass"
			value="org.springframework.web.servlet.view.JstlView" />
		<property name="prefix" value="/jsp/" />
		<property name="suffix" value=".jsp" />
		<property name="order" value="0" />
	</bean>


</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层代码如下:
package com.zx.web;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.zx.entity.User;

@org.springframework.web.bind.annotation.RestController
public class RestController {
	
	@RequestMapping("/rest")
	@ResponseBody
	public User getUser()
	{
		User user = new User();
		user.setName("nihao");
		user.setAddress("anhui");
		user.setAge("89");
		user.setWork("软件");
		
		return user;
	}
}


结果如下:



项目spring-web代码如下,有兴趣的可以load,自己研究吧,绝对可以运行
  • 大小: 10.1 KB
2
2
分享到:
评论
3 楼 郑州蘑菇云 2015-07-09  
zx_code 写道
郑州蘑菇云 写道

为什么必须要加入呢?直接使用<mvc:annotation-driven /> 不就可以启用spring 提供的默认json处理类了吗?

你确定可以,你试了吗?

试过 我们现在就这样弄的啊
2 楼 zx_code 2015-07-09  
郑州蘑菇云 写道

为什么必须要加入呢?直接使用<mvc:annotation-driven /> 不就可以启用spring 提供的默认json处理类了吗?

你确定可以,你试了吗?
1 楼 郑州蘑菇云 2015-07-09  

为什么必须要加入呢?直接使用<mvc:annotation-driven /> 不就可以启用spring 提供的默认json处理类了吗?

相关推荐

    springMVC4-rest-jackson-jsonview-annotation.zip

    Spring4.1开始直接支持@JsonView注解。要使用@JsonView,首先我们需要定义视图,我们可以定义多个视图。一个视图定义可以继承其他视图定义。我们的POJO使用@JsonView注解属性传递已经定义的视图。在Spring的...

    Spring攻略(第二版 中文高清版).part1

    7.1 用Spring Web Flow管理简单的UI流程 238 7.1.1 问题 238 7.1.2 解决方案 239 7.1.3 工作原理 239 7.2 用不同状态类型建立Web流程模型 246 7.2.1 问题 246 7.2.2 解决方案 246 7.2.3 工作原理 ...

    springMongodb参考文档中文版

    4.1。支持 4.1.1。社区论坛 4.1.2。专业支持 4.2。发展之后 5.新&值得注意的 5.1。Spring Data MongoDB 2.1中的新特性 5.2。Spring Data MongoDB 2.0中的新特性 5.3。Spring Data MongoDB 1.10中的新特性 5.4。...

    Spring.3.x企业应用开发实战(完整版).part2

    4.1 Spring配置概述 4.1.1 Spring容器高层视图 4.1.2 基于XML的配置 4.2 Bean基本配置 4.2.1 装配一个Bean 4.2.2 Bean的命名 4.3 依赖注入 4.3.1 属性注入 4.3.2 构造函数注入 4.3.3 工厂方法注入 4.3.4 选择注入...

    Spring攻略(第二版 中文高清版).part2

    7.1 用Spring Web Flow管理简单的UI流程 238 7.1.1 问题 238 7.1.2 解决方案 239 7.1.3 工作原理 239 7.2 用不同状态类型建立Web流程模型 246 7.2.1 问题 246 7.2.2 解决方案 246 7.2.3 工作原理 ...

    Spring3.x企业应用开发实战(完整版) part1

    4.1 Spring配置概述 4.1.1 Spring容器高层视图 4.1.2 基于XML的配置 4.2 Bean基本配置 4.2.1 装配一个Bean 4.2.2 Bean的命名 4.3 依赖注入 4.3.1 属性注入 4.3.2 构造函数注入 4.3.3 工厂方法注入 4.3.4 选择注入...

    javaweb项目常用jar包

    spring-webmvc-portlet-4.1.6.RELEASE.jar spring-websocket-4.1.6.RELEASE.jar struts2-core-2.3.20.jar struts2-json-plugin-2.3.20.jar struts2-sitemesh-plugin-2.0.14.jar struts2-spring-plugin-2.3.20....

    Advanced.Java.EE.Development.with.WildFly.1783288906

    Title: Advanced Java EE Development with WildFly Author: Deepak Vohra ... Using Spring MVC 4.1 Chapter 9. Using JAX-RS 2.0 in Java EE 7 with RESTEasy Chapter 10. Processing JSON with Java EE 7

    .Advanced.Java.EE.Development.with.WildFly.1783288906

    Title: Advanced Java EE Development with WildFly Author: Deepak Vohra ... Using Spring MVC 4.1 Chapter 9. Using JAX-RS 2.0 in Java EE 7 with RESTEasy Chapter 10. Processing JSON with Java EE 7

    低清版 大型门户网站是这样炼成的.pdf

    3.7.4 基于json插件的ajax实现 185 3.8 小结 190 第4章 orm中间件名流hibernate 3接管持久层 191 4.1 orm简介 191 4.1.1 持久化与持久层 191 4.1.2 jdbc劣势 192 4.1.3 实体域模型与关系数据模型 193 4.1.4 ...

    t淘淘商城项目 商城项目 视频和源码教程 详细

    -- Jackson Json处理工具包 --&gt; &lt;groupId&gt;com.fasterxml.jackson.core&lt;/groupId&gt; &lt;artifactId&gt;jackson-databind ${jackson.version} &lt;!-- httpclient --&gt; &lt;groupId&gt;org.apache....

    Grails 中文参考手册

    4.1 创建Gant脚本 4.2 可复用的Grails脚本 4.3 脚本中的事件 4.4 Ant和Maven 5. 对象关系映射(GORM) 5.1 快速指南 5.1.1 基本的CRUD 5.2 在GORM中进行领域建模 5.2.1 GORM中的关联 5.2.1.1 一对一 5.2.1.2 一对多 ...

    Struts2 in action中文版

    4.1 为什么要拦截请求 61 4.1.1 清理MVC 61 4.1.2 从拦截器受益 63 4.1.3 开发拦截器 64 4.2 拦截器的工作原理 64 4.2.1 总指挥ActionInvocation 64 4.2.2 如何触发拦截器 64 4.3 研究内建的Struts 2拦截器 67 4.3.1...

    基于springboot,采用mybatis和mapper3插件,基于shiro的sso cookies单机实现+源代码+文档说

    ORM插件支持: **mapper3.3**、**PageHelp4.1** 分页 权限支持:**shiro1.2.5** 访问接口支持: **swagger2** JSON支持:**fastjson** 连接池支持:**druid** 缓存支持:**ehcache** 、**guava** 参数验证支持:*...

    Java学习笔记-个人整理的

    {4.1}\ttfamily java.util.ArrayList}{80}{section.4.1} {4.2}\ttfamily java.util.LinkedList}{81}{section.4.2} {4.3}贪吃蛇案例}{82}{section.4.3} {4.4}散列表与HashMap}{83}{section.4.4} {4.4.1}java....

Global site tag (gtag.js) - Google Analytics