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)单击删除》删除数据

相关推荐
2401_833269305 小时前
Java网络编程入门
java·开发语言
金銀銅鐵6 小时前
[Java] 如何将 Lambda 表达式对应的类保存到 class 文件中?
java·后端
それども6 小时前
Gradle 构建疑难杂症 Could not find netty-transport-native-epoll-linux-aarch_64.ja
java·服务器·gradle·maven
正儿八经的少年7 小时前
application.yml 系列配置文件作用与区别
java·配置文件
鱼很腾apoc7 小时前
【学习篇】第20期 超详解 C++ 多态:从语法规则到底层原理
java·c语言·开发语言·c++·学习·算法·青少年编程
cheems95278 小时前
[Spring MVC] 统一功能与拦截器实践总结
java·spring·mvc
Full Stack Developme8 小时前
Spring Boot 事务管理完整教程
java·数据库·spring boot
城管不管9 小时前
前后端远程协作
java
青云计划9 小时前
Feed流
java·后端·spring
java1234_小锋9 小时前
String、StringBuilder、StringBuffer的区别?
java·开发语言