spring-MVC 3.1后的 返回json配置

配置如下:

<bean  class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"  

        p:ignoreDefaultModelOnRedirect="true" >  

            <property name="messageConverters">  

                <list>  

                    <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>  

                </list>  

            </property>  

</bean>  

 

// WEB-INF//lib 中添加

  jacson-mapper-asl-1.6.4.jar

  jacson-core-asl-1.6.4.jar

 

// Controller 中  使用:@ResponseBody 标注方法,该方法返回Java对象(支持复杂对象):

   如: 

         @ResponseBody

         public User getUser(User user){

                   return user;

          }

    MappingJacksonHttpMessageConverter 会将对象转换为JSON输出

 

注意:当springMVC-servlet.xml中使用<mvc:annotation-driven />时,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">  

    <property name="messageConverters">  

        <list>  

            <bean  

                class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"  

                p:supportedMediaTypes="/" />  

        </list>  

    </property>  

</bean>  

 

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

<mvc:annotation-driven>  

        <mvc:message-converters register-defaults="true">  

            <bean  

                    class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"  

                    p:supportedMediaTypes="/" />  

        </mvc:message-converters>  

 </mvc:annotation-driven> 

   注入的message-converters优先级高于默认注入的json转换器。

posted @ 2017-11-28 18:39  人类能走多远  阅读(410)  评论(0)    收藏  举报