pring mvc如何返回json 数据的,大概有如下几种:
Spring MVC 3.0 返回JSON数据的方法
1. 直接 PrintWriter 输出
2. 使用 JSP 视图
3. 使用Spring内置的支持
以下为3.1之前的配置:
-
<beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
-
<propertyname="messageConverters">
-
<list>
-
<bean
-
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
-
</list>
-
</property>
-
</bean>
重点来了!
以下为3.1的配置:
spring mvc 3.1之后使用RequestMappingHandlerMapping和RequestMappingHandlerAdapter
替代了原有的DefaultMethodHandlerMapping和AnnotationMethodHandlerAdapter,
所以,3.1的返回json配置可以使用如下配置:
-
<bean
-
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"
-
p:ignoreDefaultModelOnRedirect="true">
-
<propertyname="messageConverters">
-
<list>
-
<beanclass="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
-
</list>
-
</property>
-
</bean>
// WEB-INF/lib 中添加
jackson-mapper-asl-1.6.4.jar
jackson-core-asl-1.6.4.jar
// Controller 中使用:@ResponseBody 标注方法,该方法返回 Java对象(支持复杂对象),
如:
-
public@ResponseBodyUsergetUser(Useru){
-
returnu;
-
}
MappingJacksonHttpMessageConverter 会将对象转换为 JSON 输出
注意:当springMVC-servlet.xml中使用<mvc:annotation-driven />时,如果是3.1之前已经默认注入AnnotationMethodHandlerAdapter,3.1之后默认注入RequestMappingHandlerAdapter只需加上上面提及的jar包即可!
注意:默认情况下MappingJacksonHttpMessageConverter 会设置content为application/json,在IE9下返回会出现提示下载的现象,出现这种情况可以手动指定头信息为"text/html",或者"*/*"(所有,不确定就设这个)
如果是手动注入RequestMappingHandlerAdapter 可以这样设置
-
<bean
-
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"
-
p:ignoreDefaultModelOnRedirect="true">
-
<propertyname="messageConverters">
-
<list>
-
<bean
-
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"
-
p:supportedMediaTypes="*/*"/>
-
</list>
-
</property>
-
</bean>
如果是采用mvc:annotation-driven标签 可以这样注入信息
-
<mvc:annotation-driven>
-
<mvc:message-convertersregister-defaults="true">
-
<bean
-
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"
-
p:supportedMediaTypes="*/*"/>
-
</mvc:message-converters>
-
</mvc:annotation-driven>
4. 自定义
-
//配置BeanNameViewResolver
-
<beanclass="org.springframework.web.servlet.view.BeanNameViewResolver">
-
<propertyname="order"value="1"/>
-
</bean>
-
<beanid="jsonView"class="test.TestJsonView"/>
-
//实现TestJsonView
-
publicclassTestJsonViewextendsAbstractView{
-
@Override
-
protectedvoidrenderMergedOutputModel(Map<String,Object>model,HttpServletRequestrequest,
-
HttpServletResponseresponse)throwsException{
-
JsonBuilderjb=newJsonBuilder();
-
PrintWriterout=response.getWriter();
-
out.print(jb.encode(model));
-
}
-
}
-
//Controller中可以这样写:
-
ModelAndViewmav=newModelAndView("jsonView");
-
//mav.addObject...
-
returnmav;
来源:http://yjflfliulei.iteye.com/blog/1755134
分享到:
相关推荐
Spring MVC下彻底解决@ResponseBody转义html特殊字符问题,解决包括尖角号(),单引号('),双引号("),按位与(&),反斜杠(\)。
主要介绍了Springmvc 4.x利用@ResponseBody返回Json数据的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
-- @ResponseBody() spring-mvc 3 xml 配置--> <!--处理 @ResponseBody 中文乱码问题 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> ...
NULL 博文链接:https://coocaobo.iteye.com/blog/2410629
主要介绍了spring boot @ResponseBody转换JSON 时 Date 类型处理方法,主要给大家介绍Jackson和FastJson两种方式,每一种方法给大家介绍的都非常详细,需要的朋友可以参考下
主要给大家介绍了关于spring Mvc配置xml使ResponseBody返回Json的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
访问数据模型:@SessionAttributes 一场由@SessionAttributes引发的血案... 如何避免@SessionAttributes引发的血案 目录 Spring MVC如何解析视图 视图解析器类型 基于协商的视图解析器 目录 本地化:基础原理...
NULL 博文链接:https://nethub2.iteye.com/blog/2329387
访问数据模型:@SessionAttributes 一场由@SessionAttributes引发的血案... 如何避免@SessionAttributes引发的血案 目录 Spring MVC如何解析视图 视图解析器类型 基于协商的视图解析器 目录 本地化:基础原理 本地化:...
常用注解:@Controller @RestController(Controller+ResponseBody) @Service @Transactional @Mapper @AutoWired @RequestMapping--路由 @RequestParam--参数绑定(不同名参数或Map<Object,String>) @...
springmvc进行Jason数据封装转化时可以即使用也是@responsebody对数据进行封装的时候需要的工具类
本篇文章主要介绍了springMvc注解之@ResponseBody和@RequestBody详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
@ResponseBody 和 @RequestBody 注解的区别 1 前言 在详述 @ResponseBody 和 @RequestBody 注解之前,咱先了解一下 @RequestMapping 注解,@RequestMapping 是一个用来处理请求地址映射的注解,可用于类或方法上。...
比较全面的MVC源码分享。用户只要轻松使用几个注解就能完成使用。其中: @Controller:表示控制器; @RequestMapping:映射url路径的控制器; @RequestParam:表示请求时传递...@ResponseBody:表示方法返回json数据。
注解包含: 拦截器 , 过滤器 , 序列化 , @After , @AfterReturning , @AfterThrowing , @annotation , @Around , @Aspect , @Autowired , @Bean , @Before , @Component , @ComponentScan , @ComponentScans , @...
基于spring mvc注解开发的ajax项目实例,通过对注解@ResponseBody的应用,实现ajax局部刷新功能,java代码端返回Map,Integer,User,List等对象,在jsp页面通过$.each(data,function(index,entity) { });...
下面小编就为大家分享一篇spring+mybatis 通过@ResponseBody返回结果中文乱码的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
注解 (annotations) 列表 @SpringBootApplication : 包含了 @ComponentScan、@Configuration 和 @EnableAutoConfiguration 注解。 其中 @ComponentScan 让 spring Boot 扫描到 Configuration 类并把它加入到程序上...
1)spring MVC 中@ResponseBody需要的所有JAR包 2)性能还不错的模板引擎jetbrick-template-2.x 2.x的所需的所有jar包 3)日志jar包:slf4j和logback 所有 4)阿里 druid 连接池jar包 5)mysql数据库链接驱动jar包 6...