SpringMVC中的Controller返回JSON问题
①配置JSON解析器
②使用注解@ResponseBody返回的是json,没有使用该注解,则会进行页面跳转。
方案一
<!-- 自动扫描且只扫描@Controller -->
<context:component-scan base-package="com.it.mds,com.it.mds.ik.web" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
<context:include-filter type="annotation"
expression="org.springframework.web.bind.annotation.ControllerAdvice"/>
</context:component-scan>
<!-- 使用annotation 自动注册bean, 并保证@Required、@Autowired的属性被注入 -->
<context:component-scan base-package="com.it.mds,org.iweb,com.it.mds.metadata.mybatis.service,com.it.mds.metadata.caches.redis,com.it.cloud,com.it.support.web">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
<context:exclude-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/>
</context:component-scan>
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<!-- 将StringHttpMessageConverter的默认编码设为UTF-8 -->
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8"/>
</bean>
<!-- 将Jackson2HttpMessageConverter的默认格式化输出设为true -->
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="prettyPrint" value="false"/>
</bean>
</mvc:message-converters>
<mvc:argument-resolvers>
<bean class="com.it.mds.iweb.datatable.handler.IWebHandlerMethodArgumentResolver"/>
<bean class="com.it.mds.mvc.RequestArgumentResolver"/>
</mvc:argument-resolvers>
</mvc:annotation-driven>
方案二.
1、导入第三方的jackson包,jackson-mapper-asl-xxx.jar和jackson-core-asl-xxx.jar。
2、spring配置文件添加
<mvc:annotation-driven/>
<!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="mappingJacksonHttpMessageConverter" /><!-- json转换器 -->
</list>
</property>
</bean>
方案三:
导入第三方的fastjson包,fastjson-1.1.34.jar
2、Spring配置文件添加
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
<bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
方案四:
1.需要导入 jackson-annotations-*.jar,jackson-core-.jar,jackson-databind-.jar
2、在spring中添加配置
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html; charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html; charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>
参考:
1.SpringMVC杂记(十七) HandlerMethodArgumentResolver接口应用example
2.spring入门(七)【springMVC返回json串】
4.<context:component-scan>使用说明