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

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

12.5 数据回写

12.5.1 普通字符串的回写

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

1

创建一个数据回写类DataController,在DataController类中定义
showDataByResponse()方法,用于测试在Spring MVC中普通字符串的回写。
@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数据并写入输出流中完成回写。
@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列表信息。
// 只展示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的部分代码如下所示。
<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的数据响应,为
后续的学习打下坚实的基础。

相关文章:

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

12.5 数据回写 12.5.1 普通字符串的回写 接下来通过HttpServletResponse输出数据的案例&#xff0c;演示普通字符串的回写&#xff0c;案例具体实现步骤如下。 1 创建一个数据回写类DataController&#xff0c;在DataController类中定义 showDataByResponse()方法&#xff…...

apache-seata-2.1.0 AT模式使用篇(配置简单)

最近在研究seata的AT模式&#xff0c;先在本地搭建了一个演示demo&#xff0c;看看seata是如何使用的。在网上搜的demo&#xff0c;配置相对来说都比较多。我最终搭建的版本&#xff0c;配置较少&#xff0c;所以写篇文章分享下&#xff0c;希望能帮到对seata感兴趣的小伙伴。先…...

(金蝶云星空)客户端追踪SQL

快捷键 ShitfCtryAltM 点击开始、最后操作功能、然后查看报告 SQL报告...

OAK相机:纯视觉SLAM在夜晚的应用

哈喽&#xff0c;OAK的朋友们&#xff0c;大家好啊&#xff0c;今天这个视频主要想分享一下袁博士团队用我们的OAK相机产出的新成果 在去年过山车SLAM的演示中&#xff0c;袁博士团队就展示了纯视觉SLAM在完全黑暗的环境中的极高鲁棒性。 现在袁博士团队进一步挖掘了纯视觉的潜…...

发送方确认

在使用RabbitMQ的时候&#xff0c;可以通过消息持久化来解决因为服务器的异常而导致的消息就是&#xff0c;但是还有一个问题&#xff0c;当消息的生产者将消息发送出去之后&#xff0c;消息到底有没有正确地到达服务器呢&#xff1f;如果消息在到达服务器之前已经丢失&#xf…...

如何使用HighBuilder前端开发神器

一&#xff0c;前言 前端开发是网页和应用程序设计与开发中的一个重要分支&#xff0c;直接涉及用户界面的构建和用户与网页的交互。前端是用户在浏览器中看到的部分&#xff0c;负责为用户提供良好的体验。 二&#xff0c;前段介绍 1. 前端的组成 前端开发主要由三个核心技…...

发现了NitroShare的一个bug

NitroShare 是一个跨平台的局域网开源网络文件传输应用程序&#xff0c;它利用广播发现机制在本地网络中找到其他安装了 NitroShare 的设备&#xff0c;从而实现这些设备之间的文件和文件夹发送。 NitroShare 支持 Windows、macOS 和 Linux 操作系统。 NitroShare允许我们为…...

如何关闭 Ubuntu22.04 LTS 的更新提醒

引言 众所周知&#xff0c;Ubuntu 的软件更新和版本更新提醒是又多又烦&#xff0c;如果不小心更新到了最新的 Ubuntu 还可能面临各种各样的问题&#xff0c;这里提供一个解决方法 步骤 首先按照下面步骤打开 Software & Updates 然后按照下面步骤依次点击 最后关闭即可…...

美术资源规范

很多项目都没有重视资源规范&#xff0c;而是不断追求更高的运行效率。然而资源规范在项目中是非常重要的&#xff0c;资源规范才是高效运行的前提。 在有的项目中&#xff0c;一个人物模型几万个面、一个建筑模型就几十万个面&#xff0c;贴图也不规范&#xff0c;1024、2048…...

UE5.4 PCG 获取地形Layer

使用AttributeFilter&#xff1a;属性过滤器 节点 设置地形Layer名称和权重 效果&#xff1a;...

用 cURL 控制 OpenSIPS3.4

opensips-cli -x mi reload_routes&#xff0c;重读脚本路由opensips-cli -x mi ds_list&#xff0c;就是 dispatcher list 的缩写&#xff0c;简单明了opensips-cli -x mi ds_reload&#xff0c;修改 OpenSIPS 数据库的 dispatcher 表之后&#xff0c;用此命令读到内存opensip…...

【LuatOS】基于WebSocket的同步请求框架

0x00 缘起 由于使用LuatOS PC模拟器发起快速且海量HTTP请求&#xff08;1000 次/秒&#xff09;时&#xff0c;会耗尽PC的TCP连接资源&#xff0c;而无法进行继续进行访问请求。故使用WebSocket搭建类似于HTTP的“同步请求相应”的通信框架&#xff0c;以实现与HTTP类似的功能…...

架构师考试系列(8)论文专题:信息系统安全设计

摘要 2021年4月,我公司承接了一款健康养老系统项目,旨在提供以健康养老为核心的管理平台。本文探讨了如何在系统开发中贯彻安全优先原则,保障系统的安全性和保密性。系统包括健康档案、照护计划、服务审计、健康状况跟踪、费用管理等功能模块。我作为系统架构设计师,负责了…...

浙大一附院就医:分享给大家工作久了关节疼的就医经验,腱鞘炎

症状描述&#xff1a;日常生活不影响&#xff0c;但左手手腕往前或者往后扭曲力度过大时会有痛感。 医嘱详情&#xff1a;腱鞘炎&#xff0c;可能是工作键盘打字久了导致&#xff0c;开了三盒药贴&#xff0c;一盒三片&#xff0c;一共9片&#xff0c;另外再买一个比较硬的护腕…...

如何降低 PCIe RTT?

以下是一些降低 PCIe RTT&#xff08;往返时间&#xff09;的方法&#xff1a; 硬件方面4&#xff1a; 优化主板设计与布局&#xff1a; 合理分配 PCIe 通道&#xff1a;确保不同的 PCIe 设备被分配到独立的、互不干扰的 PCIe 通道上。例如&#xff0c;如果主板上有多个 PCIe 插…...

数据结构之二叉树--前序,中序,后序详解(含源码)

二叉树 二叉树不能轻易用断言&#xff0c;因为树一定有空 二叉树链式结构的实现 在学习二叉树的基本操作前&#xff0c;需先要创建一棵二叉树&#xff0c;然后才能学习其相关的基本操作。 typedef int BTDataType; typedef struct BinaryTreeNode {BTDataType _data;struct B…...

红黑树及MySQL 基础架构

红黑树简介及左旋、右旋、变色 红黑树(Red Black Tree)是一种自平衡二叉搜索树(二叉查找树)&#xff0c;是一种特殊的二叉搜索树&#xff0c;在进行插入和删除时通过特定操作保持二叉树自身的平衡&#xff0c;从而获得较高的查找性能。 红黑树的平衡操作通过左旋、右旋和变色来…...

大数据-212 数据挖掘 机器学习理论 - 无监督学习算法 KMeans 基本原理 簇内误差平方和

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…...

QJson-趟过的各种坑(先坑后用法)

QJson-趟过的各种坑【先坑后用法】 Chapter1 QJson-趟过的各种坑【先坑后用法】一、不能处理大数据量&#xff0c;如果你的数据量有百兆左右(特别是有的小伙伴还喜欢json格式化输出的)&#xff0c;不要用Qjson&#xff0c;否则会报错 DocumentTooLarge二、json格式化输出1.构建…...

基于STM32的hx711称重模块使用

欢迎入群共同学习交流 时间记录&#xff1a;2024/11/9 一、知识点记录 1、hx711 1&#xff09;HX711是一款高精度压力传感器专用的24位模数转换芯片&#xff0c;主要功能是将测得的微小电压信号放大到可以被微控制器读取的范围 2&#xff09;工作电压2.6-5.5V 3&#xff09;引…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...