Thymeleaf Maven+Servlet+Mysql图书框架—3(九)

一、添加图书功能

1、从列表页面跳转到图书页面

html 复制代码
<p class="pp" ><a href="booksServlet?method=toAdd">添加图书</a></p>
java 复制代码
    /**
     * 跳转到添加页面
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    public void toAdd(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
     CustomTemplateEngine engine = CustomTemplateEngine.getInstance(req);
     // 转发到add.html页面
     engine.processTemplate("add", req, resp);

    }

2、图书页面add.html

html 复制代码
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>图书添加页面</title>
    <!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
    <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css">

</head>
<body>
<h1 class="text-center">图书添加页面</h1>
<div class="container text-center">
<form action="booksServlet?method=save" method="post">
    <p>
        <label>书名:</label>
        <input type="text" name="title" placeholder="输入书名:">
    </p>
    <p>
        <label>作者:</label>
        <input type="text" name="author" placeholder="输入作者:">
    </p>
    <p>
        <label>书号:</label>
        <input type="text" name="isbn" placeholder="输入书号:">
    </p>
    <p>
        <label>库存:</label>
        <input type="number" name="stock" placeholder="输入库存:">
    </p>
    <p>
        <label>出版日期:</label>
        <input type="date" name="publishDate" placeholder="输入出版日期:">
    </p>
    <p>
        <label>种类:</label>
        <input type="text" name="category" placeholder="输入种类:">
    </p>
    <p>
        <button type="submit">添加图书</button>
    </p>
</form>
</div>
</body>
</html>

3、BooksServlet处理数据

java 复制代码
 /**
     * 3、添加书籍信息
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    public void save(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        CustomTemplateEngine engine = CustomTemplateEngine.getInstance(req);
        try {
            System.out.println("执行save方法...");
            // 获取书籍信息
            String title = req.getParameter("title");
            String author = req.getParameter("author");
            String isbn = req.getParameter("isbn");
            int stock = Integer.parseInt(req.getParameter("stock"));
            String publishDate = req.getParameter("publishDate");
            String category = req.getParameter("category");

            //将字符串转换成java.util.Date
            java.sql.Date publishDate1 = java.sql.Date.valueOf(publishDate);

            // 封装书籍信息
            Books book = new Books(null,title, author, isbn, stock, publishDate1, category);

            // 删除书籍信息
            booksService.add(book);
            // 重定向到list.html页面
            resp.sendRedirect( req.getContextPath()+"/booksServlet?method=list");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

4、启动服务,运行如下

二、修改图书功能

1、从列表页面跳转到修改页面

java 复制代码
    <td><a class="btn btn-info btn-small" th:href="@{/booksServlet(method='toUpdate',id=${book.id})}">修改</a>
            </td>

2、修改页面update.html

html 复制代码
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>图书添加页面</title>
    <!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
    <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css">

</head>
<body>
<h1 class="text-center">图书修改</h1>
<div class="container text-center">
<form action="booksServlet?method=update" method="post">
    <p>
        <input type="hidden" name="id" th:value="${book.id}">
        <label>书名:</label>
        <input type="text" name="title" placeholder="输入书名:" th:value="${book.title}">
    </p>
    <p>
        <label>作者:</label>
        <input type="text" name="author"  th:value="${book.author}">
    </p>
    <p>
        <label>书号:</label>
        <input type="text" name="isbn"  th:value="${book.isbn}">
    </p>
    <p>
        <label>库存:</label>
        <input type="number" name="stock"  th:value="${book.stock}">
    </p>
    <p>
        <label>出版日期:</label>
        <input type="date" name="publishDate"  th:value="${book.publishDate}">
    </p>
    <p>
        <label>种类:</label>
        <input type="text" name="category" th:value="${book.category}">
    </p>
    <p>
        <button class="btn btn-success" type="submit">更新图书</button>
    </p>
</form>
</div>
</body>
</html>

3、BooksServlet处理数据

java 复制代码
/**
     * 跳转到更新页面
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    public void toUpdate(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        CustomTemplateEngine engine = CustomTemplateEngine.getInstance(req);
        try {
           int id = Integer.parseInt(req.getParameter("id"));
           // 根据id查询书籍信息
            Books book = booksService.findById(id);
            System.out.println("book=>>>" + book);
            req.setAttribute("book", book);
        } catch (Exception e) {
        e.printStackTrace();
    }

        // 转发到add.html页面
        engine.processTemplate("update", req, resp);

    }

    /**
     * 4、更新书籍信息
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    public void update(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        CustomTemplateEngine engine = CustomTemplateEngine.getInstance(req);
        try {
            System.out.println("执行update方法...");
            int id = Integer.parseInt(req.getParameter("id"));
            // 获取书籍信息
            String title = req.getParameter("title");
            String author = req.getParameter("author");
            String isbn = req.getParameter("isbn");
            int stock = Integer.parseInt(req.getParameter("stock"));
            String publishDate = req.getParameter("publishDate");
            String category = req.getParameter("category");

            //将字符串转换成java.util.Date
            java.sql.Date publishDate1 = java.sql.Date.valueOf(publishDate);

            // 封装书籍信息
            Books book = new Books(id,title, author, isbn, stock, publishDate1, category);

            // 删除书籍信息
            booksService.edit(book);
            // 重定向到list.html页面
            resp.sendRedirect( req.getContextPath()+"/booksServlet?method=list");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

4、启动服务,运行如下

展示修改数据

部分修改数据

修改后:

相关推荐
我是一颗柠檬12 小时前
【MySQL全面教学】MySQL基础SQL语句Day3(2026年)
数据库·后端·sql·mysql·oracle
MandalaO_O12 小时前
MyBatis 与 MySQL 执行流程
数据库·mysql·mybatis
键盘上的猫头鹰14 小时前
【从零学MySQL(三)】数据增删改(DML)及 SELECT 查询详解
数据库·mysql·数据分析
Cry丶15 小时前
WebFlux + R2DBC 场景下的分库分表预研:从架构选型到落地风险
mysql·postgresql·数据库架构·shardingsphere·分库分表·webflux·r2dbc
键盘上的猫头鹰15 小时前
【从零学MySQL(二)】数据库基础操作、数据类型与约束(附Navicat演示)
数据库·mysql·数据分析·数据可视化
阮胜昌16 小时前
在CentOS 7.9上安装MySQL8.4.4 LTS
mysql·mysql8.4
码上谈兵18 小时前
一次 MySQL 连接池打满,我花一晚上重构了 Go 的数据库操作
mysql
夕除18 小时前
spring boot 13
java·mysql·spring
WAIT_TIME18 小时前
基于 Docker 快速构建 MySQL InnoDB Cluster 高可用集群与 Router 读写分离
mysql·docker·集群·innodb cluster