一,问题来源:
昨天晚上在搭建ssm框架时,进行到了配置springMVC支持ajax-json的步骤,按照以前做过的springMVC 3.x 框架进行配置。测试访问时,出现了这样的问题。
二,问题分析:
1,检查Controller中的方法是否添加@ResponseBody。(已添加)
2,检查ajax函数是否没写dataType:’json’。(写上了)
3,检查springMVC.xml关于支持返回json数据的处理。(写上了)
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
application/json; charset=UTF-8value>
text/html; charset=UTF-8value>
list>
property>
bean>
class="org.springframework.http.converter.StringHttpMessageConverter" />
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
list>
property>
bean>
5,又检查了jackson的jar是否添加(已经添加)。
那么问题在哪里呢?
三,深入分析:
通过查阅资料,发现:
1,springMVC3.x 和springMVC4.x所依赖的jackson的jar包有所变更:
3.x:
org.codehaus.jacksongroupId>
jackson-core-lgplartifactId>
1.8.1version>
dependency>
org.codehaus.jacksongroupId>
jackson-mapper-lgplartifactId>
1.8.1version>
dependency>
4.x:将使用全新的jackson-annotations-2.5.0.jar,jackson-core-2.5.0.jar,jackson-databind-2.5.0.jar 原有的jar不再使用
com.fasterxml.jackson.jaxrsgroupId>
jackson-jaxrs-xml-providerartifactId>
2.5.2version>
dependency>
com.fasterxml.jackson.coregroupId>
jackson-coreartifactId>
2.5.2version>
dependency>
com.fasterxml.jackson.coregroupId>
jackson-databindartifactId>
2.5.2version>
dependency>
com.fasterxml.jackson.coregroupId>
jackson-annotationsartifactId>
2.5.2version>
dependency>
2:仔细检查发现:springMVC.xml头文件上的xsi:schemaLocation里版本显示的还是3.x,这里手动改成4.x。
3:spring4.x关于json的配置方式有所变更(重点)
3.x:
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
application/json; charset=UTF-8value>
text/html; charset=UTF-8value>
list>
property>
bean>
class="org.springframework.http.converter.StringHttpMessageConverter" />
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
list>
property>
bean>
4.x :
bean>
bean>
class="org.springframework.http.converter.StringHttpMessageConverter">
text/plain;charset=UTF-8value>
list>
property>
bean>
list>
property>
bean>
四,问题解决:
通过修改以上配置信息后,问题解决。
五,分析总结:
1,头文件信息要与使用的spring版本一致。
2,spring3MVC和spring4MVC对于 处理返回json 所使用的jar包不同。
3,spring3MVC和spring4MVC 对于springMVC.xml中对于处理返回json配置方式不同。
六,感谢:
http://www.zuidaima.com/question/2051293900327936.htm
这里帮我找到了答案。