危楼高百尺,手可摘星辰。
不敢高声语,恐惊天上人。 —李白《夜宿山寺》
首次: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>