JSP页面实现批量删除数据

8 篇文章 0 订阅


危楼高百尺,手可摘星辰。
不敢高声语,恐惊天上人。 —李白《夜宿山寺》

 

这里写图片描述

首次:FindServlet.java-->bookList.jsp
删除:bookList.jsp-->DelServlet.java-->FindServlet..java

实现批量删除,首先获取要删除的行的id
String ID[]=request.getParameterValues("delid");
checkbox 的name 为 delid,值为id值,选择选择框,就会获取到id值。
SQL语句采用批处理命令:

String ID[]=request.getParameterValues("delid");        //获取要删除的图书编号
        if (ID.length>0){
            for(int i=0;i<ID.length;i++){
                ps.setInt(1,Integer.parseInt(ID[i]));   // 对SQL语句中的第1个参数赋值
                ps.addBatch();              // 添加批处理命令
            }
        }
        ps.executeBatch();  // 执行批处理操作

之后转到查询业务的Findervlet,实现更新页面的效果
全选只是通过JavaScript 使其他所有的checkbox的 checked 属性为true即可

function CheckAll(elementsA, elementsB) {
        for (i = 0; i < elementsA.length; i++) {
            elementsA[i].checked = true;
        }
        if (elementsB.checked == false) {
            for (j = 0; j < elementsA.length; j++) {
                elementsA[j].checked = false;
            }
        }
    }

BookBean.java

//package com.mingrisoft;

public class BookBean {
    private int id;// 编号
    private String name;// 图书名称
    private double price;// 定价
    private int bookCount;// 数量
    private String author;// 作者
    .
    .

}

DelServlet.java

//package com.mingrisoft;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet实现类UpdateServlet
 */
@WebServlet("/DelServlet")  //配置Servlet
public class DelServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    public DelServlet() {
        super();
    }

    /**
     * 处理POST请求
     */
protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    try {
        Class.forName("com.mysql.jdbc.Driver"); // 加载数据库驱动,注册到驱动管理器
        String url = "jdbc:mysql://localhost:3306/db_book";// 数据库连接字符串
        String username = "root"; // 数据库用户名
        String password = "root"; // 数据库密码
        // 创建Connection连接
        Connection conn = DriverManager.getConnection(url, username,
                password);
        String sql = "DELETE FROM tb_book WHERE id=?";// 更新SQL语句
        PreparedStatement ps = conn.prepareStatement(sql);// 获取PreparedStatement
        String ID[]=request.getParameterValues("delid");        //获取要删除的图书编号
        if (ID.length>0){
            for(int i=0;i<ID.length;i++){
                ps.setInt(1,Integer.parseInt(ID[i]));   // 对SQL语句中的第1个参数赋值
                ps.addBatch();              // 添加批处理命令
            }
        }
        ps.executeBatch();  // 执行批处理操作
        ps.close(); // 关闭PreparedStatement
        conn.close(); // 关闭Connection
    } catch (Exception e) {
        e.printStackTrace();
    }
    response.sendRedirect("FindServlet"); // 重定向到FindServlet
}

}

FindServlet.java

//package com.mingrisoft;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet实现类FindServlet
 */
@WebServlet("/")        //配置Servlet为默认执行页
public class FindServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
     public FindServlet() {
        super();
    }

    /**
     * 执行POST请求的方法
     */
    protected void doPostt(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }

    /**
     * 执行GET请求的方法
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {   
            Class.forName("com.mysql.jdbc.Driver");     // 加载数据库驱动,注册到驱动管理器
            String url = "jdbc:mysql://localhost:3306/db_book";// 数据库连接字符串
            String username = "root";                       // 数据库用户名   
            String password = "root";                       // 数据库密码    
            // 创建Connection连接
            Connection conn = DriverManager.getConnection(url,username,password);
            Statement stmt = conn.createStatement();        // 获取Statement
            String sql = "select * from tb_book";           // 添加图书信息的SQL语句 
            ResultSet rs = stmt.executeQuery(sql);          // 执行查询 
            List<BookBean> list = new ArrayList<>();        // 实例化List对象    
            while(rs.next()){                               // 光标向后移动,并判断是否有效
                BookBean book = new BookBean();                 // 实例化Book对象
                book.setId(rs.getInt("id"));                // 对id属性赋值
                book.setName(rs.getString("name"));     // 对name属性赋值
                book.setPrice(rs.getDouble("price"));       // 对price属性赋值
                book.setBookCount(rs.getInt("bookCount"));  // 对bookCount属性赋值
                book.setAuthor(rs.getString("author"));     // 对author属性赋值
                list.add(book);                             // 将图书对象添加到集合中
            }
            request.setAttribute("list", list);             // 将图书集合放置到request中
            rs.close();                                 // 关闭ResultSet
            stmt.close();                                   // 关闭Statement
            conn.close();                                   // 关闭Connection
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        // 请求转发到bookList.jsp
        request.getRequestDispatcher("bookList.jsp").forward(request, response);

    }

}

bookList.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<%@ page import="com.mingrisoft.BookBean"%>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>显示图书列表</title>
<style type="text/css">
tr {
    height: 30px;
}
th,td{
    background-color: #FFFFFF;
}
footer{
    padding:5px;
}
</style>
<script type="text/javascript">
    function CheckAll(elementsA, elementsB) {
        for (i = 0; i < elementsA.length; i++) {
            elementsA[i].checked = true;
        }
        if (elementsB.checked == false) {
            for (j = 0; j < elementsA.length; j++) {
                elementsA[j].checked = false;
            }
        }
    }
    //判断用户是否选择了要删除的记录,如果是,则提示“是否删除”;否则提示“请选择要删除的记录”
    function checkdel(delid, formname) {
        var flag = false;
        for (i = 0; i < delid.length; i++) {
            if (delid[i].checked) {
                flag = true;
                break;
            }
        }
        if (!flag) {
            alert("请选择要删除的记录!");
            return false;
        } else {
            if (confirm("确定要删除吗?")) {
                formname.submit();
            }
        }
    }
</script>
</head>
<body>
    <div width="98%" align="center">
        <h2>所有图书信息</h2>
    </div>
    <form action="DelServlet" method="post" name="frm">
        <table width="98%" border="0" align="center" cellpadding="0"
            cellspacing="1" bgcolor="#666666">
            <tr>
                <th>ID</th>
                <th>图书名称</th>
                <th>价格</th>
                <th>数量</th>
                <th>作者</th>
                <th>删除</th>
            </tr>
            <%
  // 获取图书信息集合
  List<BookBean> list = (List<BookBean>) request.getAttribute("list");
  // 判断集合是否有效
  if (list == null || list.size() < 1) {
      out.print("<tr><td bgcolor='#FFFFFF' colspan='6'>没有任何图书信息!</td></tr>");
  } else {
      // 遍历图书集合中的数据
      for (BookBean book : list) {
  %>
            <tr align="center">
                <td><%=book.getId()%></td>
                <td><%=book.getName()%></td>
                <td><%=book.getPrice()%></td>
                <td><%=book.getBookCount()%></td>
                <td><%=book.getAuthor()%></td>
                <td><input name="delid" type="checkbox"
                    class="noborder" value="<%=book.getId()%>"></td>
            </tr>
            <%
        }
    }
  %>
        </table>
        <footer>
            <input name="checkbox" type="checkbox" class="noborder"
                onClick="CheckAll(frm.delid,frm.checkbox)"> [全选/反选] [
                <a style="color:red;cursor:pointer;" onClick="checkdel(frm.delid,frm)">删除</a>]
            <div id="ch" style="display: none">
                <input name="delid" type="checkbox" value="0">
            </div>
            <!--层ch用于放置隐藏的checkbox控件,因为当表单中只是一个checkbox控件时,应用javascript获得其length属性值为undefine-->
        </footer>
    </form>
</body>
</html>
  • 8
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
实现图书的批量删除,你需要使用 JSP 与 Servlet 进行后台数据处理。以下是实现的步骤: 1. 在 JSP 页面中,创建一个表格用于显示所有图书信息,并在每行的最后一列添加一个复选框,用于选择需要删除的图书。 2. 在表格下方添加一个“删除”按钮,并使用 JavaScript 实现批量删除功能。当用户点击“删除”按钮时,遍历所有复选框,将被选中的图书的 ID 保存到一个数组中,并使用 Ajax 异步提交给 Servlet。 3. 在 Servlet 中,获取前台传来的图书 ID 数组,遍历数组并执行删除操作。 以下是代码示例: JSP 页面代码: ```html <form> <table> <thead> <tr> <th>ID</th> <th>书名</th> <th>作者</th> <th>出版社</th> <th>操作</th> </tr> </thead> <tbody> <% // 获取所有图书信息并显示在表格中 List<Book> bookList = BookDAO.getAllBooks(); for (Book book : bookList) { %> <tr> <td><%=book.getId()%></td> <td><%=book.getName()%></td> <td><%=book.getAuthor()%></td> <td><%=book.getPublisher()%></td> <td><input type="checkbox" name="bookIds" value="<%=book.getId()%>"></td> </tr> <%}%> </tbody> </table> <button type="button" onclick="deleteSelectedBooks()">删除</button> </form> <script> function deleteSelectedBooks() { var bookIds = []; var checkboxes = document.getElementsByName("bookIds"); for (var i = 0; i < checkboxes.length; i++) { if (checkboxes[i].checked) { bookIds.push(checkboxes[i].value); } } if (bookIds.length == 0) { alert("请选择要删除的图书"); return; } // 使用 Ajax 异步提交删除请求 var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { alert(this.responseText); window.location.reload(); } }; xmlhttp.open("POST", "deleteBooksServlet?bookIds=" + bookIds.join(","), true); xmlhttp.send(); } </script> ``` Servlet 代码: ```java public class DeleteBooksServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String[] bookIds = request.getParameter("bookIds").split(","); for (String bookId : bookIds) { BookDAO.delete(Integer.parseInt(bookId)); } response.getWriter().write("删除成功"); } } ``` 在 Servlet 中,我们通过 `request.getParameter("bookIds")` 获取前台传来的图书 ID 数组,并通过 `String.split(",")` 方法将其转换为字符串数组。然后遍历数组,调用 `BookDAO.delete()` 方法进行删除操作。最后通过 `response.getWriter().write()` 返回删除结果给前台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值