当前位置: 首页 > news >正文

Spring MVC数据绑定和响应——数据回写(二)JSON数据的回写

        项目中已经导入了Jackson依赖,可以先调用Jackson的JSON转换的相关方法,将对象或集合转换成JSON数据,然后通过HttpServletResponse将JSON数据写入到输出流中完成回写,具体步骤如下。

        1、修改文件DataController.java,在DataController类中新增showDataByJSON()方法,用于将对象转换成JSON数据并写入输出流中完成回写。

@RequestMapping("showDataByJSON")
public void showDataByJSON(HttpServletResponse response)  {try {	ObjectMapper om = new ObjectMapper();User user = new User();user.setUsername("heima");	user.setPassword("666");String ujson = om.writeValueAsString(user);response.getWriter().print(ujson);} catch (IOException e) {	 e.printStackTrace();	}}

        2、启动chapter12项目,在浏览器中访问地址http://localhost:8080/chapter12/showDataByJSON。访问地址后,执行了showDataByJSON()方法,方法执行后将User对象的数据转换成JSON格式的数据输出到请求页面中了。

一、@ResponseBody注解的使用范围

        @ResponseBody注解可以标注在方法和类上,当标注在类上时,表示该类中的所有方法均应用@ResponseBody注解。如果需要当前类中的所有方法均应用@ResponseBody注解,也可以使用@RestController注解。

二、@ResponseBody注解的2个使用要求

        使用@ResponseBody注解,项目至少需要符合2个要求,分别如下所示。

•    项目中有转换JSON相关的依赖。
•    可以配置转换JSON数据的消息类型转换器。

        针对上述两个要求,chapter12项目都已经满足,项目的pom.xml文件中引入了Jackson相关的依赖,可以用于转换JSON;Spring MVC的配置文件中配置的<mvc:annotation-driven />元素默认注册了Java数据转JSON数据的消息转换器。

        接下来通过一个案例演示使用@ResponseBody注解回写JSON格式的对象数据和集合数据,案例具体实现步骤如下。

1、修改文件DataController.java,在DataController类中新增getUser()方法,用于返回JSON类型的User信息;新增addProducts()方法用于返回JSON类型的Product列表信息。

@RequestMapping("showDataByJSON")public void showDataByJSON(HttpServletResponse response) {try {ObjectMapper om = new ObjectMapper();User user = new User();user.setUsername("heima");user.setPassword("666");String ujson = om.writeValueAsString(user);response.getWriter().print(ujson);} catch (IOException e) {e.printStackTrace();}}

        2、创建一个商品添加页面product_add.jsp,在product_add.jsp中创建一个表格,用于显示用户信息和添加商品信息。product_add.jsp的部分代码如下所示。

<script type="text/javascript">// 添加商品function addProducts() {var url="${pageContext.request.contextPath }/addProducts";$.get(url,function (products) {//将处理器返回的商品列表信息添加到表格中for (var i=0;i<products.length;i++) {
$("#products").append("<tr><td>"+products[i].proId+"</td><td>“+products[i].proName+”</td></tr>");	} })	}
</script>

        3、启动chapter12项目,在浏览器中访问商品添加页面product_add.jsp,访问地址为http://localhost:8080/chapter12/product_add.jsp。页面加载完,页面异步将用户的信息显示在单元格中,成功回写了User对象信息对应的JSON数据。

        4、单击product_add.jsp页面显示效果图所示的“添加多个商品”按钮。单击“添加多个商品”按钮,程序成功回写了List对应的JSON数据。

http://www.lryc.cn/news/389278.html

相关文章:

  • 怎么快速给他人分享图片?扫描二维码看图的简单做法
  • 【UML用户指南】-26-对高级行为建模-状态图
  • 解决VSCode无法用ssh连接远程服务器的问题
  • 【区块链+基础设施】银联云区块链服务 | FISCO BCOS应用案例
  • Java SE入门及基础(61) 死锁 死锁发生条件
  • 简单爬虫案例——爬取快手视频
  • 42、nginx之nginx.conf
  • 高薪程序员必修课-java为什么要用并发编程
  • postgreSQL学习
  • 【3】系统标定
  • 网安小贴士(3)网安协议
  • 大数据面试题之HBase(1)
  • git回退commit的方式
  • [Information Sciences 2023]用于假新闻检测的相似性感知多模态提示学习
  • 自定义vue3 hooks
  • 《昇思25天学习打卡营第21天 | 昇思MindSporePix2Pix实现图像转换》
  • 【文档+源码+调试讲解】科研经费管理系统
  • linux 下 rm 为什么要这么写?
  • 【Spring Boot】Spring AOP中的环绕通知
  • docker部署前端,配置域名和ssl
  • 初学Spring之 IOC 控制反转
  • rpc的仅有通信的功能,在网断的情况下,比网通情况下,内存增长会是什么原因
  • 从零开始:如何设计一个现代化聊天系统
  • 香橙派OrangePi AIpro初体验:当小白拿到一块开发板第一时间会做什么?
  • 【C语言内存函数】
  • Mysql部署MHA高可用
  • 【算法学习】射线法判断点在多边形内外(C#)以及确定内外两点连线与边界的交点
  • SQL语句(DML)
  • uniapp小程序打开地图导航
  • webstorm格式化或保存时 vue3引入的组件被删除了