【基于轻量型架构的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的数据响应,为
后续的学习打下坚实的基础。

相关推荐
m0_748247551 小时前
springboot中配置logback-spring.xml
spring boot·spring·logback
Lojarro1 小时前
JavaEE基础之- Servlet相关
java·servlet·java-ee
逸Y 仙X2 小时前
Git常见命令--助力开发
java·大数据·git·java-ee·github·idea
计算机-秋大田2 小时前
基于Spring Boot的农产品智慧物流系统设计与实现(LW+源码+讲解)
java·开发语言·spring boot·后端·spring·课程设计
计算机毕设指导62 小时前
基于SpringBoot的城乡商城协作系统【附源码】
java·spring boot·后端·mysql·spring·tomcat·maven
caihuayuan43 小时前
PHP建立MySQL持久化连接(长连接)及mysql与mysqli扩展的区别
java·大数据·sql·spring
WeiLai11123 小时前
面试基础--微服务架构:如何拆分微服务、数据一致性、服务调用
java·分布式·后端·微服务·中间件·面试·架构
_风中无我。4 小时前
Spring的过滤器获取请求体中JSON参数,同时解决Controller获取不到请求体参数的问题。
java·spring·json
菜鸟一枚在这5 小时前
深入剖析抽象工厂模式:设计模式中的架构利器
设计模式·架构·抽象工厂模式
Swift社区5 小时前
【微服务优化】ELK日志聚合与查询性能提升实战指南
spring·elk·微服务·云原生·架构