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 }

转载于:https://www.cnblogs.com/1315925303zxz/p/7404299.html

原文地址:https://www.cnblogs.com/it-deepinmind/p/11804476.html

时间: 2024-08-14 11:46:00

SpringMVC注解@RequestMapping之produces属性导致的406错误的相关文章

springmvc注解@RequestMapping

springmvc注解@RequestMapping 1.处理器.controller的url 2)跟路径+子路径. 3)限定提交方法 @RequestMapping的属性method: 1.RequestMehtod.Get 2.RequestMethod.POST 常用的两个. 原文地址:https://www.cnblogs.com/meiLinYa/p/8761328.html

通过springmvc的RequestMapping的headers属性的使用

直接上图: springmvc中可以通过@RequestMapping注解折配置headers属性,也就是通过headers属性来配置请求头信息,从而通过这个属性值来映射请求,因为不同浏览器的Accept-Encoding等请求头信息可能有不同,所以利用这点我们就可以使同一个访问路径(同一个http请求,但是响应不同,即返回不同的信息).例如以上的图中分别是chrome和Edge两个浏览器,他们的请求头信息就不太一样,同样的url,返回的结果却不一样. url为:http://localhost

Ajax Post提交事例及SpringMVC注解@RequestMapping取不到参数值解决办法

var xmlHttp; //定义变量,用来创建xmlHttp对象 function ajaxfunction(url,onreadystatechangMethod,param){ // 创建xmlHttp,ajax开始     if(window.XMLHttpRequest){//非IE浏览器及IE7(7.0及以上版本),用xmlHttp对象创建         xmlHttp=new XMLHttpRequest();     }else if(window.ActiveXObject)

SpringMVC注解@RequestMapping全面解析---打酱油的日子

1 @RequestMapping("/publication/{publicationType}/{specifyPublisherId}/{specifyPublisherType}/{isPar}") public void queryPublicationList(@PathVariable String publicationType, @PathVariable String specifyPublisherId, @PathVariable String specifyP

SpringMVC中 -- @RequestMapping的作用及用法

一.@RequestMapping 简介 在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置 <servlet> <servlet-name>servletName</servlet-name> <servlet-class>ServletClass</servlet-class> </servlet> <ser

springMVC 注解版

关于Spring MVC注解 @Transactional 事务标签 @InitBinder 标签 分类: Java开发 源代码分享2012-06-14 10:59 7721人阅读 评论(2) 收藏 举报 springmvcjavaemailpathstring 主要用到了spring-aop-2.5.6.jar的AOP支持包! 之前我们在AccountService中加入了注解@Transactional标签,但是要想要真正发挥事务作用,还需要一些配置. 主要需要调整dao.xml文件 dao

初学springMVC注解大全

请求路径上有个id的变量值,可以通过@PathVariable来获取 @RequestMapping(value = "/page/{id}", method = RequestMethod.GET) @RequestParam用来获得静态的URL请求入参 spring注解时action里用到. 简介: handler method 参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类:(主要讲解常用类型) A.处理requet uri 部分(这里指uri tem

SpringMVC注解使用2

1.@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示.在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestP

SpringMVC在@RequestMapping配置两个相同路径

这篇博客来自这个问题: 在SpringMVC中@RequestMapping可以配置两个相同的url路径吗. 首先,这个问题会点SpringMVC的人可能都知道答案,但是上次面试中我就回答了可以...可以..Spicy Chicken!!! 参考文章: http://lgbolgger.iteye.com/blog/2105108 这个问题要从 RequestMappingHandlerMapping 和 RequestMappingHandlerAdapter 讲起了. 首先,在配置文件中声明