在SpringMVC框架的使用中常常会使用@ResponseBody注解,修饰“处理器”(Controller的方法),这样在处理器在返回完毕后,就不走逻辑视图,而是将返回的对象转成JSON字符串响应给客户端,但这种操作有时会出现406错误。

引入问题

我们通过浏览器访问一个处理器,该处理器返回一个JSON字符串,但是我们访问后报406错误。

处理器代码

        @RequestMapping("/cart/update/num/{itemId}/{itemNum}")@ResponseBodypublic User updateItemNum(@PathVariable("itemId") Long itemId, @PathVariable("itemNum") Integer itemNum,HttpServletRequest request, HttpServletResponse response) {return new User("张三",10);}

出现406问题的可能原因:

原因一:

      该项目并没有导入jackson的相关jar包

Maven工程的依赖:

<!-- Jackson Json处理工具包 -->
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId>
</dependency>

原因二:

请求后缀为.html,浏览器默认将相应体的内容当做html资源,但实际上相应的并不是Html资源,而是一个JSON。此时就会报406错误。

 解决方案一:

   第一步: 为前端控制器的拦截方式添加一种新的形式

 第二步:在需要返回JSON数据的请求时使用.action结尾的URL进行访问

 解决方案二:

      如果由于某种原因不能更改前端控制器的拦截方式,那么我们可以在处理器中将需要返回的对象,手动通过第三方JSON转换工具转换成字符串(这里使用fastjson),然后直接返回字符串。此时我们通过.html结尾的URL访问处理器就不会报406错误了

     处理器代码:

        @RequestMapping("/cart/update/num/{itemId}/{itemNum}")@ResponseBodypublic String updateItemNum(@PathVariable("itemId") Long itemId, @PathVariable("itemNum") Integer itemNum,HttpServletRequest request, HttpServletResponse response) {return JSON.toJSONString(new User("张三",10));}

     请求的结果:

此种方法之所以可以解决问题,是因为我们直接返回字符串,Http相应的ContentType就变成了html/text格式了,而在我们返回一个对象时,SpringMVC框架将对象转换成JSON对象时,Http相应的ContentType类型为application/json。

SpringMVC在返回JSON数据时出现406错误解决方案相关推荐

  1. java调用远程 接口_java通过url调用远程接口返回json数据

    java通过url调用远程接口返回json数据,有用户名和密码验证, 转自 https://blog.csdn.net/wanglong1990421/article/details/78815856 ...

  2. java学习笔记——众筹项目练习——项目中的忘记密码(密码找回)与记住我(自动登录)功能 和 返回json数据低版本浏览器显示下载问题的解决、众筹系统架构重构

                                          忘记密码(密码找回) 忘记密码(密码找回)这个功能可以说是目前所有为别人提供服务的软件系统都具备的基础功能啦!很普遍,因为总 ...

  3. 浅谈Struts2的命名空间及以传统形式返回json数据

    为什么80%的码农都做不了架构师?>>>    Struts2中在B/S传统应用中使用时需要配置struts.xml文件, 那么Struts2以传统形式 返回json 数据到客户端同 ...

  4. 深入了解Struts2返回JSON数据的原理及具体应用范例

    来源:http://yshjava.iteye.com/blog/1333104 早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具体应用了,但苦于一 ...

  5. (配置消息转换器)解决后台返回json数据到前台时页面时中文显示乱码问题

    (配置消息转换器)解决后台返回json数据到前台时页面时中文显示乱码问题 SpringMVC.xml中加 <!-- 配置消息转换器(解决中文乱码问题)--><mvc:annotati ...

  6. idea+springmvc+spring+mybatis+maven整合返回json数据web api-

    本人大三,第一次写博客,还有许多不懂得地方,如果有不当的地方 欢迎各位指教 项目地址:https://github.com/qq571831158/Springmvc-spring-mybatisDe ...

  7. 解决springmvc返回json数据IE出现文件下载和json数据中文乱码问题

    总结一下使用springmvc时经常会遇到的一个问题. springmvc返回json数据在IE浏览器中访问,会出现文件下载现象,这是因为IE10以下不支持application/json格式的Res ...

  8. (SpringMVC)Controller返回JSON数据

    文章目录 Controller返回JSON数据 1. 测试使用 2. 代码优化 3. 测试集合输出 4. 输出时间对象 5. 抽取为工具类 6. FastJson Controller返回JSON数据 ...

  9. SpringMVC响应使用案例(带数据页面跳转,快捷访问路径,返回json数据)

    页面跳转 转发(默认) @RequestMapping("/showPage1") public String showPage1() {System.out.println(&q ...

  10. spring MVC之返回JSON数据(Spring3.0 MVC+Jackson+AJAX)

    参考: http://angelbill3.iteye.com/blog/1985075 问题:在进行springmvc返回json数据的时候报如下错误:用上面的controller,访问:http: ...

最新文章

  1. 关于meta便签详解
  2. CAN总线电平(隐性与显性)
  3. 关于udelay(); mdelay(); ndelay(); msleep();
  4. C语言的5种存储类以及关键字volatile、restrict
  5. Mysql登录时出现Access denied for user ‘root‘@‘localhost‘ (using password YES)无法打开的解决方法
  6. access 跳过一次for循环_Java中的循环结构
  7. [转帖] 豆丁文档下载器v20100529绿色免费版_豆丁网文档下载工具
  8. CycleGAN网络详解
  9. foxmail邮箱修改服务器,foxmail基本设置方法.foxmail使用技巧
  10. 美的华为鸿蒙,董明珠万没想到,格力终将被美的超越,华为鸿蒙“功不可没”...
  11. CSS把图片设置为背景
  12. 什么是推挽输出,开漏输出?
  13. 华工【数字信号处理】(DSP)实验二 数字信号处理应用实例
  14. ESP32 Ubuntu开发环境搭建
  15. bzoj 3007 拯救小云公主
  16. 2012过年的时间 2012过年放假时间 2012年什么时间过年 2012过年 2012年什么时候过年
  17. 【HTCVR】VRTK插件功能
  18. zha男/女的三种境界
  19. 百度地图 Error inflating class com.baidu.mapapi.map.MapView 错误
  20. 围棋布局启蒙(系统学围棋,打实理论基础)

热门文章

  1. xp系统打印机服务器报错,win10系统连接xp系统共享打印机报错0x000004的具体方法...
  2. 查看服务器的外网IP
  3. QTimer::singleShot
  4. 微信小程序表单必填项设置
  5. Python学习(列表)
  6. 【CodeVS4093】EZ的间谍网络
  7. Apple PUSH Notication Service (APNS) 配置攻略
  8. 计算机算法基础_如何自学计算机专业
  9. Thoughtworks笔试
  10. 广告召回率是什么意思_广告中召回和粗排的评价标准