当前位置: 首页 > 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;引…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

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

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

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...