SpringMVC注解@RequestMapping之produces属性导致的406错误
时间:2022-04-24
本文章向大家介绍SpringMVC注解@RequestMapping之produces属性导致的406错误,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
废话不多说,各位,直接看图说话,敢吗?这个问题网上解决的办法写的狠是粗糙,甚至说这次我干掉它完全是靠巧合,但是也不否认网上针对406错误给出的解决方式,可能是多种情况下出现的406吧?我这次的流程就是集成了MyBatis的分页插件,简单实现了一个分页功能,最后将数据返回给浏览器,就因为我的随手一粘贴,才引发了这场406,别忘了各位看图说话。
我首先说说我的惨痛经历吧,一直对spring框架的AOP原理狠是模糊,就在上周五自己想好好研究一下,但是很多美好的事情都不是那么一路绿灯,磕磕绊绊总算是差不多了,但是在最后给我返回一个406错误,这可是我第一次碰到这种傻逼错误,真的,对于我这个2年的猿来说确实有点手忙错乱,最后我靠着网上的一些指点凭直觉把它干掉了,在这里给分为分享一下。
在使用SpringMVC的@RequestMapping注解时注意,如果你为了解决http请求响应的乱码问题,执意在@RequestMapping注解上使用produces属性来快速解决,那么这时候你可要注意了,假如你给浏览器返回一个对象并且使用@ResponseBody注解自动转成json数据返回的同时并且使用了produces属性来解决乱码问题,那么情况就不是太理想了,406随之而来。
1 @RequestMapping(value="/itemsPage",method=RequestMethod.GET,produces = "text/plain;charset=UTF-8")
2 @ResponseBody
3 public List<Item> itemsPage(String currentPage,String pageSize){
4 return itemService.findItemByPage(Integer.parseInt(currentPage), Integer.parseInt(pageSize));
5 }
这种错误我理解还不是狠透彻,但是我暂时把解决方式给各位分享一下,如果后期能得到高人的指点,会继续完善这篇博文,解决这种问题的方式有俩种:一是直接将produces属性去掉,万一出现了乱码则在配置文件或编解码的方式处理,二是先将对象转成json数据,然后可以使用produces属性解决乱码问题。
解决方式一:
1 @RequestMapping(value="/itemsPage",method=RequestMethod.GET)
2 @ResponseBody
3 public List<Item> itemsPage(String currentPage,String pageSize){
4 return itemService.findItemByPage(Integer.parseInt(currentPage), Integer.parseInt(pageSize));
5 }
解决方式二:
1 @RequestMapping(value="/itemsPage",method=RequestMethod.GET,produces = "text/plain;charset=UTF-8")
2 @ResponseBody
3 public String itemsPage(String currentPage,String pageSize){
4 List<Item> PageItems = itemService.findItemByPage(Integer.parseInt(currentPage), Integer.parseInt(pageSize));
5 return JsonUtil.object2Json(PageItems);
6 }
- 【Go 语言社区】POJ 1047 Round and Round We Go 循环数新解
- 【Go 语言社区】删除redis所有KEY
- 【Go 语言社区】Golang 动态实例化结构体
- 【Go 语言社区】Go 错误处理
- 【Go 语言社区】Go 语言范围(Range)
- 【Go 语言社区】JS 相关---Window Location
- 【Go 语言社区】Go 语言Map(集合)
- 【Go 语言社区】JavaScript Date(日期)对象
- UWP基础教程 - XAML类型转换器
- Oracle 12c Data Guard搭建(一) (r10笔记第57天)
- 【Go 语言社区】Go语言 Cookie的使用
- 【Go 语言社区】HTML5 Geolocation(地理定位)-转
- Oracle 12c PDB迁移(一)(r10笔记第56天)
- 【Go 语言社区】Go worker线程池
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释