javaweb使用Thymeleaf 最凝练的CRUD项目-下

2023-11-23 19:10

本文主要是介绍javaweb使用Thymeleaf 最凝练的CRUD项目-下,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

javaweb使用Thymeleaf 最凝练的CRUD项目-下

10、执行保存

①目标

提交表单后,将表单数据封装为Soldier对象,然后将Soldier对象保存到数据库。

②思路

在这里插入图片描述

③代码

[1]Servlet方法

protected void saveSoldier(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// 1.获取请求参数
String soldierName = request.getParameter("soldierName");
String soldierWeapon = request.getParameter("soldierWeapon");// 2.创建Soldier对象
Soldier soldier = new Soldier(null, soldierName, soldierWeapon);// 3.调用Service方法
soldierService.saveSoldier(soldier);// 4.重定向请求
response.sendRedirect(request.getContextPath() + "/SoldierServlet?method=showList");

}

[2]Service方法

@Override
public void saveSoldier(Soldier soldier) {

    soldierDao.insertSoldier(soldier);}

[3]Dao方法

@Override
public void insertSoldier(Soldier soldier) {String sql = "insert into t_soldier(soldier_name,soldier_weapon) values(?,?)";update(sql, soldier.getSoldierName(), soldier.getSoldierWeapon());
}

11、前往修改信息的表单页面

在这里插入图片描述

①创建超链接

<a th:href="@{/SoldierServlet(soldierId=${soldier.soldierId},method=toEditPage)}"></a>

②Servlet方法

执行步骤
  1. 从请求参数获取soldierId
  2. 根据soldierId查询Soldier对象
  3. 将Soldier对象存入请求域
  4. 前往更新的表单页面

protected void toEditPage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// 1.从请求参数获取soldierId
String soldierId = request.getParameter("soldierId");// 2.根据soldierId查询Soldier对象
Soldier soldier = soldierService.getSoldierById(soldierId);// 3.将Soldier对象存入请求域
request.setAttribute("soldier", soldier);// 4.前往更新的表单页面
processTemplate("edit-page", request, response);

}

③Service方法

@Override
public Soldier getSoldierById(String soldierId) {return soldierDao.selectSoldierByPrimaryKey(soldierId);
}

④Dao方法

@Override
public Soldier selectSoldierByPrimaryKey(String soldierId) {String sql = "select soldier_id soldierId,soldier_name soldierName,soldier_weapon soldierWeapon from t_soldier where soldier_id=?";return getBean(Soldier.class, sql, soldierId);
}

⑤表单页面

<form th:action="@{/SoldierServlet}" method="post"><input type="hidden" name="method" value="updateSoldier" /><input type="hidden" name="soldierId" th:value="${soldier.soldierId}" />士兵姓名:<input type="text" name="soldierName" th:value="${soldier.soldierName}" /><br/>士兵武器:<input type="text" name="soldierWeapon" th:value="${soldier.soldierWeapon}" /><br/><button type="submit">更新</button></form>

12、执行更新

在这里插入图片描述

①Servlet方法

执行步骤

1.获取请求参数
2.封装对象
3.调用Service方法执行更新
4.重定向请求

protected void updateSoldier(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 1.获取请求参数String soldierIdOrigin = request.getParameter("soldierId");Integer soldierId = Integer.parseInt(soldierIdOrigin);String soldierName = request.getParameter("soldierName");String soldierWeapon = request.getParameter("soldierWeapon");// 2.封装对象Soldier soldier = new Soldier(soldierId, soldierName, soldierWeapon);// 3.调用Service方法执行更新soldierService.updateSoldier(soldier);// 4.重定向请求response.sendRedirect(request.getContextPath() + "/SoldierServlet?method=showList");
}

②Service方法

@Override
public void updateSoldier(Soldier soldier) {soldierDao.updateSoldier(soldier);}

③Dao方法

@Override
public void updateSoldier(Soldier soldier) {String sql = "update t_soldier set soldier_name=?,soldier_weapon=? where soldier_id=?";update(sql, soldier.getSoldierName(), soldier.getSoldierWeapon(), soldier.getSoldierId());
}

13、请求字符集设置

  • 设置请求体字符集需要调用request.setCharacterEncoding(“UTF-8”);
  • request.setCharacterEncoding(“UTF-8”);要求在所有request.getParameter()前面
  • 在执行子类Servlet方法时,其实都是先调用父类ModelBaseServlet的doPost()方法
  • doPost()方法中包含获取method请求参数的操作
  • 所以最前面的request.getParameter()在doPost()方法中
  • 所以request.setCharacterEncoding(“UTF-8”);要放在doPost()方法的request.getParameter()前面

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// 0.在所有request.getParameter()前面设置解析请求体的字符集
request.setCharacterEncoding("UTF-8");// 1.从请求参数中获取method对应的数据
String method = request.getParameter("method");// ……

这篇关于javaweb使用Thymeleaf 最凝练的CRUD项目-下的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/420100

相关文章

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

在Spring Boot中浅尝内存泄漏的实战记录

《在SpringBoot中浅尝内存泄漏的实战记录》本文给大家分享在SpringBoot中浅尝内存泄漏的实战记录,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录使用静态集合持有对象引用,阻止GC回收关键点:可执行代码:验证:1,运行程序(启动时添加JVM参数限制堆大小):2,访问 htt

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

浅析Java中如何优雅地处理null值

《浅析Java中如何优雅地处理null值》这篇文章主要为大家详细介绍了如何结合Lambda表达式和Optional,让Java更优雅地处理null值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录场景 1:不为 null 则执行场景 2:不为 null 则返回,为 null 则返回特定值或抛出异常场景

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

SpringMVC获取请求参数的方法

《SpringMVC获取请求参数的方法》:本文主要介绍SpringMVC获取请求参数的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下... 目录1、通过ServletAPI获取2、通过控制器方法的形参获取请求参数3、@RequestParam4、@

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

SpringBoot应用中出现的Full GC问题的场景与解决

《SpringBoot应用中出现的FullGC问题的场景与解决》这篇文章主要为大家详细介绍了SpringBoot应用中出现的FullGC问题的场景与解决方法,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录Full GC的原理与触发条件原理触发条件对Spring Boot应用的影响示例代码优化建议结论F