springMVC浏览器接受json报406错误的解决方法
2016-08-23 17:42
567 查看
这个错误还真难搞,头一次遇见还真没有什么好办法解决,上网找了很多资料,一一试过也不能很好的解决,最后经过朋友,同事一起努力,终于征服了.留下笔记,供大家参考:
1.我后台测试代码如下:
在浏览器访问这两个方法时,只有json正确,而json2就报406,说明spring没有处理好对象序列化成json的问题,最后我通过log4j打印的日志,也清晰的看到他返回的格式并非json格式.
既然格式错误了,浏览器当然接受不了数据,原因就在此了
2.知道了原因,于是就上网搜了.网上有人说mvc的xml没有加这个配置
但是我项目早就有了,固然不是问题答案
另外一种是说要配置json模板,觉得这个靠谱,于是乎就学着配置.....终于掉进坑里了
于是配置了一下,启动项目就报错了,缺包缘故,于是上网找jar包,这又遇到版本问题这个还真不容易,晚上资料却没说版本不同要找不到jar
这里我特意说明下
spring 4.0或一下的,一般都找jackson 1.x的版本
spring 4.1或以上的.就要找jackson2.x以上了
我的项目引用的就是spring 4.1.2的版本,一开始不清楚状况,盲目按网上的人配置,引用jackson版本比较低,到头来问题没解决,还引来一堆别的问题,头痛的要死,死去活来.....
哎......不堪回头...好吧,回归主题
以下是spring 4.1.2版本的正确配置
<----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------->
4.1.2的
引入三个jackson2.4版本
如下:
jackson-core-2.4.1.jar
jackson-annotations-2.4.1.jar
jackson-databind-2.4.1.jar
问题就解决了,不在报406了,json数据出来了
1.我后台测试代码如下:
@RequestMapping("/json") public @ResponseBody String json() { return "this is json"; } @RequestMapping("/json2") public @ResponseBody List<User> json2() { List<User> users = new ArrayList<User>(); User u = new User(); u.setAccount("aa"); users.add(u); return users; }
在浏览器访问这两个方法时,只有json正确,而json2就报406,说明spring没有处理好对象序列化成json的问题,最后我通过log4j打印的日志,也清晰的看到他返回的格式并非json格式.
既然格式错误了,浏览器当然接受不了数据,原因就在此了
2.知道了原因,于是就上网搜了.网上有人说mvc的xml没有加这个配置
<!-- 开启注解 --> <mvc:annotation-driven />
但是我项目早就有了,固然不是问题答案
另外一种是说要配置json模板,觉得这个靠谱,于是乎就学着配置.....终于掉进坑里了
<!-- 避免IE执行AJAX时,返回JSON出现下载文件 --> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <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>
于是配置了一下,启动项目就报错了,缺包缘故,于是上网找jar包,这又遇到版本问题这个还真不容易,晚上资料却没说版本不同要找不到jar
这里我特意说明下
spring 4.0或一下的,一般都找jackson 1.x的版本
spring 4.1或以上的.就要找jackson2.x以上了
我的项目引用的就是spring 4.1.2的版本,一开始不清楚状况,盲目按网上的人配置,引用jackson版本比较低,到头来问题没解决,还引来一堆别的问题,头痛的要死,死去活来.....
哎......不堪回头...好吧,回归主题
以下是spring 4.1.2版本的正确配置
<----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------->
4.1.2的
<!-- 避免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>
引入三个jackson2.4版本
如下:
jackson-core-2.4.1.jar
jackson-annotations-2.4.1.jar
jackson-databind-2.4.1.jar
问题就解决了,不在报406了,json数据出来了
相关文章推荐
- springMVC浏览器接受json报406错误的解决方法
- springMVC浏览器接受json报406错误的解决方法
- springMVC浏览器接受json报406错误的解决方法
- springMVC之浏览器接受json数据报406错误的解决方法
- springMVC浏览器接受json报406错误的解决方法
- SpringMVC 利用@ResponseBody注解返回Json时,出现406 not acceptable 错误的解决方法。
- SpringMVC 生成json报 HTTP Status 406.错误的解决方法
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
- Spring4.0 MVC请求json数据报406错误的解决方法
- SpringMVC ajax传递json数组到后台报406错误的解决办法
- 解决springmvc 返回JSON报406错误
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
- spring mvc json @ResponseBody 出现406错误 not acceptable ,解决方法,亲测可行
- springMvc中406错误解决,springMvc使用json出现406 (Not Acceptable)
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
- SSM框架返回JSON数据,报405、406错误的解决方法
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法