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

相关文章

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh

Java空指针异常NullPointerException的原因与解决方案

《Java空指针异常NullPointerException的原因与解决方案》在Java开发中,NullPointerException(空指针异常)是最常见的运行时异常之一,通常发生在程序尝试访问或... 目录一、空指针异常产生的原因1. 变量未初始化2. 对象引用被显式置为null3. 方法返回null

Python使用Code2flow将代码转化为流程图的操作教程

《Python使用Code2flow将代码转化为流程图的操作教程》Code2flow是一款开源工具,能够将代码自动转换为流程图,该工具对于代码审查、调试和理解大型代码库非常有用,在这篇博客中,我们将深... 目录引言1nVflRA、为什么选择 Code2flow?2、安装 Code2flow3、基本功能演示

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

一文彻底搞懂Java 中的 SPI 是什么

《一文彻底搞懂Java中的SPI是什么》:本文主要介绍Java中的SPI是什么,本篇文章将通过经典题目、实战解析和面试官视角,帮助你从容应对“SPI”相关问题,赢得技术面试的加分项,需要的朋... 目录一、面试主题概述二、高频面试题汇总三、重点题目详解✅ 面试题1:Java 的 SPI 是什么?如何实现一个

Spring中管理bean对象的方式(专业级说明)

《Spring中管理bean对象的方式(专业级说明)》在Spring框架中,Bean的管理是核心功能,主要通过IoC(控制反转)容器实现,下面给大家介绍Spring中管理bean对象的方式,感兴趣的朋... 目录1.Bean的声明与注册1.1 基于XML配置1.2 基于注解(主流方式)1.3 基于Java

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键