Spring WebMVC 4.1返回json时导致的 406(Not Acceptable)问题

本文介绍了解决在使用Tomcat7+Spring4.1.3时遇到的406 Not Acceptable错误的方法。该错误发生在返回JSON字符串时,并提供了一个具体的代码示例。通过调整依赖库版本及引入新的jar包,最终解决了此问题。
1.问题现象Tomcat7+Spring4.1.3,返回json字符串时发生406错误

[quote]POST http://localhost:8080/ARP/resouces/publishRes.do 406 (Not Acceptable)
[color=green][b]The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers[/b][/color]
[/quote]

所用服务器:
[color=red][b]Apache Tomcat/7.0.54[/b][/color]

2.具体实现

@RequestMapping(value ="/publishRes",method= RequestMethod.POST)
@ResponseBody
public AjaxResultVO publishRes(HttpServletRequest request){

AjaxResultVO resultVo = new AjaxResultVO();

resultVo.setSuccess(false);
resultVo.setErrCode("500");
resultVo.setExecMsg("查询成功");
return resultVo;
}


3.网上调查
按照问题现象在网上搜了一下类似问题不少,代表性的有以下几篇:

The resource identified by this request is only capable of generating responses with characteristics
Spring MVC + JSON = 406 Not Acceptable
Spring 3 MVC And JSON Example

4.0.9使用了网上所说的:

<dependency>  
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.10</version>
</dependency>


\spring-webmvc-4.0.9.RELEASE-sources\org\springframework\web\servlet\view\json\MappingJacksonJsonView.Java

import org.codehaus.jackson.JsonEncoding;  
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig;


而4.1.0开始,使用了:

<dependency>  
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.1</version>
</dependency>


spring-webmvc-4.1.0.RELEASE-sources\org\springframework\web\servlet\view\json\AbstractJackson2View.java

import com.fasterxml.jackson.annotation.JsonView;  
import com.fasterxml.jackson.core.JsonEncoding;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;


6.解决问题
引入fasterxml的jar包,改回spring4.1.4,问题解决。
7.后记:就在要发表文章的时候,在下方预览中看到一篇
Spring MVC 4.1.4 RESTFUL风格返回JSON数据406错误处理

参考:http://blog.youkuaiyun.com/kingof007/article/details/44237043

在spring4.X中删除了啊MappingJacksonHttpMessageConverter类文件,可以使用MappingJackson2HttpMessageConverter替换但是启动仍然会报异常
Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingException 解决办法是在pom文件中引入一下jar包

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.1</version>
</dependency>


参考:http://blog.youkuaiyun.com/guying4875/article/details/50314397
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值