文章 > zhuxk > 文章详情
SpringMVC返回json数据的配置方式
Small  zhuxk  发表于 2年前  来自话题 #敏捷#  · 

32697 浏览
摘要:Spring MVC返回json数据的方式有以下几种: (1)直接 PrintWriter 输出 (2)使用 JSP 视图 (3)使用Spring内置的支持 本文说明的是使用Spring内置的功能。

Spring MVC返回json数据的方式有以下几种:


    (1)直接 PrintWriter 输出
    (2)使用 JSP 视图
    (3)使用Spring内置的支持

本文说明的是使用Spring内置的功能。
 
以下为3.1之前的配置:

  1. <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  
  2.  <property name="messageConverters">  
  3.   <list>  
  4.    <bean  
  5.     class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />  
  6.   </list>  
  7.  </property>  
  8. </bean>     
以下为3.1的配置:

spring mvc 3.1之后使用RequestMappingHandlerMappingRequestMappingHandlerAdapter

替代了原有的DefaultMethodHandlerMapping AnnotationMethodHandlerAdapter。

所以,3.1的返回json配置可以使用如下配置:

  1. <bean  
  2. class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"  
  3.         p:ignoreDefaultModelOnRedirect="true" >  
  4.             <property name="messageConverters">  
  5.                 <list>  
  6.                     <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>  
  7.                 </list>  
  8.             </property>  
  9.         </bean>  
     
    // WEB-INF/lib 中添加
    jackson-mapper-asl-1.6.4.jar
    jackson-core-asl-1.6.4.jar
    // Controller 中 使用:@ResponseBody 标注方法,该方返回Java对象(支持复杂对象),
    如:

             @ResponseBody

  1. public User getUser(User u){  
  2.     return u;  
  3. {color:black}}  
     
    MappingJacksonHttpMessageConverter 会将对象转换为 JSON 输出

 

注意:当springMVC-servlet.xml中使用<mvc:annotation-driven />时,如果是3.1之前已经默认注入AnnotationMethodHandlerAdapter,3.1之后默认注入RequestMappingHandlerAdapter,只需加上上面提及的jar包即可!

 

注意:默认情况下MappingJacksonHttpMessageConverter 会设置content为application/json,在IE9下返回会出现提示下载的现象,出现这种情况可以手动指定头信息为"text/html",或者"/"(所有,不确定就设置为这个)。如果是手动注入RequestMappingHandlerAdapter 可以这样设置

 

  1. <bean  
  2.     class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"  
  3.     p:ignoreDefaultModelOnRedirect="true">  
  4.     <property name="messageConverters">  
  5.         <list>  
  6.             <bean  
  7.                 class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"  
  8.                 p:supportedMediaTypes="/" />  
  9.         </list>  
  10.     </property>  
  11. </bean>  
     

 如果是采用mvc:annotation-driven标签 可以这样注入信息

 

  1. <mvc:annotation-driven>  
  2.         <mvc:message-converters register-defaults="true">  
  3.             <bean  
  4.                     class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"  
  5.                     p:supportedMediaTypes="/" />  
  6.         </mvc:message-converters>  
  7.     </mvc:annotation-driven> 
注入的message-converters优先级高于默认注入的json转换器。
需要 后方可回复
如果没有账号可以 一个帐号。

共有1人收藏该文章

文章作者

Normal
回答数 0 · 文章数 3

文档与知识库

产品官方文档和知识库
提供EOS、BPS的文档在线阅读以及超过2073个咨询故障和800+知识点。

反馈与阅读帮助

意见反馈  ·  阅读帮助