我使用的spring version:4.3.4
1、为什么出现双引号?
主要是因为在返回的字符串不是json格式,同时又被默认org.springframework.http.converter.json.MappingJackson2HttpMessageConverter 处理,所以就导致了双引号
2、怎么解决?(三种配置都可以解决)
在当前spring version 下 配置一 (这是使用spring 默认的配置)
<mvc:annotation-driven/>
配置二
<mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.StringHttpMessageConverter"/> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/> </mvc:message-converters> </mvc:annotation-driven>
配置三
<mvc:annotation-driven/> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.StringHttpMessageConverter"/> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/> </list> </property> </bean>
配置二和配置三等效的
配置一和配置二的区别: 配置一converter 有很多都是spring 默认加载的, 配置二就只有你配置的两个converter
3、为什么这样就能解决? spring 会根据你配置converter来处理的你返回值,当返回的字符串同时又不是json 格式时,能够被org.springframework.http.converter.StringHttpMessageConverter 处理,就不会出现双引号,以上三种都可以解决这个问题
4、总结 只要保证我们的返回值被合适的converter处理就能得到我们想要的效果,具体可以查看org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter,这个类装配了很多处理单元。
如有错误,还望不吝赐教!
参考:http://blog.csdn.net/keketrtr/article/details/65442869