03.JakartaEE11+Thymeleaf实现图书列表功能

一、 图书列表功能

** 1、 从数据库取出数据展示图书信息**

** BooksDao--->BooksDaoImpl**

复制代码
public class BooksDaoImpl extends BaseDao implements BooksDao {
    @Override
    public List<Books> queryBooks() throws Exception {
        String sql = "select  id,title,author,isbn,stock,publish_date publishDate,category from books";
        return getBeanList(Books.class,sql);
    }
}

** BooksServlet**

复制代码
package com.hnjt.servlet;
​
import com.hnjt.dao.BooksDao;
import com.hnjt.dao.impl.BooksDaoImpl;
import com.hnjt.entity.Books;
import com.hnjt.thymeleaf.CustomTemplateEngine;
import com.hnjt.thymeleaf.ModelServlet;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
​
import java.io.IOException;
import java.util.List;
​
@Slf4j
@WebServlet("/booksServlet")
public class BooksServlet extends ModelServlet {
​
    private BooksDao booksService = new BooksDaoImpl();
​
    /**
     * 1、查询书籍信息B
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    public void list(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        CustomTemplateEngine engine = CustomTemplateEngine.getInstance(req);
        try {
            System.out.println("执行list方法...");
            // 查询书籍信息
            List<Books> books = booksService.queryBooks();
​
​
            // 将书籍信息保存到request域中
            req.setAttribute("books", books);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
​
        // 转发到list.html页面
        engine.processTemplate("list", req, resp);
​
    }
​
}

** 2、美化列表页面**

使用Bootstrap3框架引入,使得页面更加漂亮直观

官网:https://v3.bootcss.com/

拷贝最新版本的Link链接

<!-- 最新版本的 Bootstrap 核心 CSS 文件 --> <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css">​

** 4、启动服务,运行如下:**

二、删除图书功能

1、 BooksServlet

复制代码
    /**
     * 2、删除书籍信息
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    public void remove(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        CustomTemplateEngine engine = CustomTemplateEngine.getInstance(req);
        try {
            System.out.println("执行remove方法...");
            int id = Integer.parseInt(req.getParameter("id"));
            System.out.println("id=>>>" + id);
            // 删除书籍信息
            booksService.deleteBook(id);
            // 重定向到list.html页面
            resp.sendRedirect( req.getContextPath()+"/booksServlet?method=list");
        } catch (Exception e) {
            e.printStackTrace();
        }
​

2、BooksDaoImpl.java

复制代码
@Override
public boolean deleteBook(int id) throws Exception {
    String sql = "delete from books where id = ?";
​
    if (update(sql, id) > 0) return true;
    else return false;
}

3、列表页面list.html 添加Jquery3来提示删除对话框

复制代码
​
    <!--     jquery库文件-->
    <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
​
​
​
<script>
    // 删除按钮的点击事件
    $(".delBtn").click(function (e) {
        var flag= confirm("确定要删除吗?");
        // 如果用户点击取消,阻止表单提交
        if(!flag){
            e.preventDefault();
        }
    });
</script>
</body>

3、启动服务,运行如下:

** 1)单击删除-》提示对话框**

2)单击删除》删除数据

相关推荐
逻辑驱动的ken2 小时前
Java高频面试考点场景题15
java·开发语言·深度学习·面试·职场和发展·高效学习
juniperhan2 小时前
Flink 系列第19篇:深入理解 Flink SQL 的时间语义与时区处理:从原理到实战
java·大数据·数据仓库·分布式·sql·flink
这是程序猿2 小时前
MySQL 索引一篇讲透:原理、分类、优化与面试总结
java·前端·mysql
无籽西瓜a2 小时前
MD5算法原理、适用场景
java·后端·算法·哈希算法·md5
帅次2 小时前
Android 高级工程师面试速记版
android·java·面试·kotlin·binder·zygote·android runtime
独自归家的兔2 小时前
OCPP 1.6 协议详解:ClearCache 清除缓存指令
java·后端·spring
sjsjsbbsbsn2 小时前
OpenAI 接口协议 & 大模型Java调用 核心总结
java·开发语言
AI人工智能+电脑小能手2 小时前
【大白话说Java面试题】【Java基础篇】第16题:HashMap中Key为null时,元素存放的位置
java·开发语言·面试·哈希算法·散列表
我登哥MVP2 小时前
【SpringMVC笔记】 - 12 - 全注解开发
java·spring boot·笔记·spring·tomcat·intellij-idea