@ResponseBody返回json数据报异常
发布日期:2021-07-27 12:52:46 浏览次数:2 分类:技术文章

本文共 2411 字,大约阅读时间需要 8 分钟。

传统的返回JSON格式的AJAX,用的方法一般是:在后台先把数据(Object)封装成JSON数据,再用HttpServletResponse返回。 

本示例中,SpringMVC可直接支持JSON格式数据的返回。具体如下。 
1、JAR包:SPRINGMVC包需的包,另外还需JACKSON的两个包。 
jackson-core-asl-1.9.2.jar 
jackson-mapper-asl-1.9.2.jar

下载地址: 

2、-servlet.xml中加入: 

Java代码   
  1. <!-- 返回JSON模版 -->   
  2. <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >    
  3.     <property name="messageConverters">    
  4.     <list>  
  5.          <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />  
  6.     </list>   
  7.     </property>    
  8. </bean>    
[java]   
  1. <!-- 返回JSON模版 -->   
  2. <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >    
  3.     <property name="messageConverters">    
  4.     <list>  
  5.          <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />  
  6.     </list>   
  7.     </property>    
  8. </bean>    

我们在SPRING的配置中加入了一个新的适配器:AnnotationMethodHandlerAdapter,通过这个适配器,我们配置了一个属性,messageConverters,其中mappingJacksonHttpMessageConverter这个Bean,它就是用来处理json数据转换的。 
注:我的项目中没有乱码现象,这样配即可,若有乱码现象,可以在MappingJacksonHttpMessageConverter的BEAN中配置supportedMediaTypes属性,是用于解决返回的乱码问题。 
3、Controller中的使用 

Java代码   
  1. @Controller  
  2. public class SelectController {  
  3.     @Resource  
  4.     private TypeService typeService;  
  5.   
  6.     @RequestMapping("/type")  
  7.     @ResponseBody  
  8.     public Object type(){  
  9.         List<Type> typelist = this.typeService.getTypeByParentid(Const.TYPE_DAILY);  
  10.         return typelist;  
  11.     }  
  12. }  
[java]   
  1. @Controller  
  2. public class SelectController {  
  3.     @Resource  
  4.     private TypeService typeService;  
  5.   
  6.     @RequestMapping("/type")  
  7.     @ResponseBody  
  8.     public Object type(){  
  9.         List<Type> typelist = this.typeService.getTypeByParentid(Const.TYPE_DAILY);  
  10.         return typelist;  
  11.     }  
  12. }  

在SpringMVC中可以在Controller的某个方法上加@ResponseBody注解,表示该方法的返回结果直接写入HTTP response body中。 
------------------------------------------ 
遇到的问题: 
用上面的controller,访问:http://localhost:8080/demo/type.htm,报406错如下: 
Failed to load resource: the server responded with a status of 406 (Not Acceptable) : The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers () 
查资料表明,不是JAR的版本问题,网友解答描述: 
1、spring 3.2时requestedMediaTypes却为[text/html]的情况报406错误,还有一个原因可能是由于采用的后缀有关,如果使用*.htm,*.html等,默认就会采用[text/html]编码,若改成*.json,*.shtml等就OK 
2、3.2.4 也遇到这个问题。修改ajax 请求的后缀为json 或者其他就可以了。他还是会优先根据url请求的后缀决定请求类型。所以你看到的一直是[text/html] 
所以,将访问路径从http://localhost:8080/demo/type.htm改为http://localhost:8080/demo/type.json即可。 
(如果你只拦截htm开头的链接,可以在web.xml里新增一个url-pattern为*.json的servlet即可。)

转载地址:https://blog.csdn.net/rhx_1989/article/details/65935049 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:JavaWeb解决xss漏洞
下一篇:SpringBoot项目使用pdfobject.js在线预览PDF文档

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年03月29日 02时06分24秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

windows7安dns服务器_如何在windows7上面搭建一个DNS服务器 2019-04-21
cas登录传递的参数_cas自定义登录页面的提交按钮要怎么改 2019-04-21
java多线程为啥一直用的一个线程_【无法接受!!!】一个Java多线程的问题,颠覆了我多年的认知!... 2019-04-21
公众号滑动图代码_教你如何一键提取微信公众号文章的封面图 2019-04-21
mongodb 百万_几种快速优化MongoDB的方法,从此优化不再难! 2019-04-21
arma模型平稳性和可逆性的条件_平稳时间序列分析01---AR模型 2019-04-21
jmeter聚个报告怎么看qps_知网论文查重报告怎么看? 2019-04-21
pytorch yolov3 代码详解_YOLOv3作者JR官方Pytorch检测代码 2019-04-21
catti二级笔译综合能力真题_CATTI韩语二级口译真题及考场回忆版 2019-04-21
攻防世界 适合做桌面_世界杯大冷门,双方实力悬殊,德国队为何输给了韩国队... 2019-04-21
可涂抹什么让指纹加深_手机镀膜是什么?液体玻璃手机镀膜和膜结手机纳米防护的区别... 2019-04-21
node静态服务器优缺点_Node —— BFF 2019-04-21
新风系统风速推荐表_PE管还是PVC管?现场评测新风系统两种管道对比 2019-04-21
华为社招嵌入式软件面试_嵌入式软件面试那点事 2019-04-21
心电图多少为正常范围_一个人的正常尿酸是多少,不管体重多少,不超过这个范围都算正常... 2019-04-21
两个集合相等的例题_人教A版高中数学必修一1.1.集合间的基本关系优质课公开课课件、教案... 2019-04-21
文件 写回硬盘_小猿圈python学习-用Python操作文件 2019-04-21
转图片_PDF转图片怎么转?这个PDF转换器很不错! 2019-04-21
杭州电子科技大学历年真题_2021年杭州电子科技大学851数据结构考研复习资料... 2019-04-21
使用sklearn预测走势_使用python+sklearn实现高斯过程分类(GPC)的概率预测 2019-04-21