本项目中用的的版本号分别是:
spring 3.2.3.RELEASE
hibernate 4.2.5.Final
本来搭建框架的时候用的是spring 3.1.4.RELEASE web.xml中拦截的请求地址为 访问正常没有什么问题
<filter-mapping>
<filter-name>safetyFilter</filter-name>
<url-pattern>*.htm</url-pattern>
</filter-mapping>
但是 因为项目中要用到mockMvc测试 它要求的spring版本必须是3.2以上 所以对spring进行升级 升级之后访问一般的请求没有问题 但是只要是访问ajax请求 就报406错误
上网找了很多内容,都不能解决问题(配置,注解都没有问题),也不是jackson版本的问题,最后发现是因为版本的原因引起的.spring 3.2时requestedMediaTypes为[text/html] 不是要求的json格式,默认会将.htm、.html采用[text/html]编码。
解决方法:
将.htm、.html换成.do或者其他的
修改之后:
<filter-mapping>
<filter-name>safetyFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
若配置了安全过滤器 对应的请求也需要修改:
<filter>
<filter-name>safetyFilter</filter-name>
<filter-class>com.pengtu.gsj.utils.filter.SafetyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>safetyFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>