【基于轻量型架构的WEB开发】课程 12.5 数据回写 Java EE企业级应用开发教程 Spring+SpringMVC+MyBatis

12.5 数据回写

12.5.1****普通字符串的回写

接下来通过HttpServletResponse输出数据的案例,演示普通字符串的回写,案例具体实现步骤如下。

1

创建一个数据回写类DataController,在DataController类中定义
showDataByResponse()方法,用于测试在Spring MVC中普通字符串的回写。

java 复制代码
@Controller
public class DataController {
@RequestMapping("showDataByResponse")
public void showDataByResponse(HttpServletResponse response) {
try {
response.getWriter().print("response");
} catch (IOException e) { e.printStackTrace();}
}
}

2

启动chapter12项目,在浏览器中访问地址
http://localhost:8080/chapter12/showDataByResponse。访问后,浏览器页面
不跳转,页面显示效果如图所示。

由图中所示的内容可以得出,访问地址后,执行了showDataByResponse()方法,方法执行后将普通字符串通过HttpServletResponse输出到请求页面中,完成了普通字符串的数据回写。

12.5.2 JSON****数据的回写

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

1

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

java 复制代码
@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数据的消息转换器。

JSON数据的回写-集合数据转换成JSON数据后
的回写

1

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

java 复制代码
// 只展示getUser()方法
@RequestMapping("getUser")
@ResponseBody
public User getUser() {
User user = new User();
user.setUsername("heima2");
return user; }

2

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

java 复制代码
<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,product_add.jsp页面显
示效果如图所示。


由图中所示的内容可以得出,页面加载完,页面异步将用户的信息显示在单元格中,成功回写了
User对象信息对应的JSON数据。

4

单击product_add.jsp页面显示效果图所示的"添加多个商品"按钮,
product_add.jsp页面显示效果如图所示。

由图中所示的内容可以得出,单击上图所示的"添加多个商品"按钮,程序成功回写了List对应的
JSON数据。

本章小结(12章)
本章主要对Spring MVC中的数据绑定和响应进行了详细讲解。首先对 Spring MVC的
数据绑定 过程进行了介绍;其次讲解了 简单数据绑定 ,包括默认数据类型绑定、简单数据类
型绑定、POJO绑定及自定义类型绑定;接着讲解了 复杂数据绑定 ,包括数组绑定、集合绑
定、复制POJO绑定及JSON数据绑定;然后讲解了 数据响应和页面跳转 ,包括返回值为void
类型的页面跳转、返回值为String类型的页面跳转及返回值为ModelAndView类型的页面跳
转;最后讲解了 回写数据 ,包括回写普通字符串和回写JSON数据。通过本章的学习,读者
能够熟练的掌握Spring MVC中几种数据类型的绑定使用,掌握Spring MVC的数据响应,为
后续的学习打下坚实的基础。

相关推荐
稻草人22222 小时前
java Excel 导出 ,如何实现八倍效率优化,以及代码分层,方法封装
后端·架构
数据智能老司机3 小时前
精通 Python 设计模式——创建型设计模式
python·设计模式·架构
数据智能老司机4 小时前
精通 Python 设计模式——SOLID 原则
python·设计模式·架构
bobz9657 小时前
k8s svc 实现的技术演化:iptables --> ipvs --> cilium
架构
云舟吖8 小时前
基于 electron-vite 实现一个 RPA 网页自动化工具
前端·架构
brzhang9 小时前
当AI接管80%的执行,你“不可替代”的价值,藏在这20%里
前端·后端·架构
Lei活在当下20 小时前
【业务场景架构实战】4. 支付状态分层流转的设计和实现
架构·android jetpack·响应式设计
架构师沉默1 天前
设计多租户 SaaS 系统,如何做到数据隔离 & 资源配额?
java·后端·架构
kfyty7251 天前
不依赖第三方,不销毁重建,loveqq 框架如何原生实现动态线程池?
java·架构
刘立军1 天前
本地大模型编程实战(33)用SSE实现大模型的流式输出
架构·langchain·全栈