@ -1,35 +1,38 @@
package com.controller.deptadmin ;
package com.controller.deptadmin ; //定义了当前类所在的 Java 包 com.controller.deptadmin, 表示这是一个与部门管理员相关的控制器类。
import com.dao.DeptAdminDao ;
import com.dao.DeptAdminDao ; //导入 DeptAdminDao 类,该类通常用于执行数据库操作(如查询、更新、删除等)。
import javax.servlet.ServletException ;
import javax.servlet.annotation.WebServlet ;
import javax.servlet.ServletException ; //ServletException: 用于处理 Servlet 异常。
import javax.servlet.annotation.WebServlet ; //WebServlet: 注解, 用于将类声明为 Servlet, 并将其与特定的 URL 路径映射。
//HttpServlet、HttpServletRequest 和 HttpServletResponse: 用于处理 HTTP 请求和响应。
import javax.servlet.http.HttpServlet ;
import javax.servlet.http.HttpServletRequest ;
import javax.servlet.http.HttpServletResponse ;
import java.io.IOException ;
import java.io.IOException ; //IOException: 用于处理输入输出异常。
import java.text.SimpleDateFormat ;
import java.util.Date ;
@WebServlet ( "/DeptDeleteStuPunchServlet" )
public class DeptDeleteStuPunchServlet extends HttpServlet {
@WebServlet ( "/DeptDeleteStuPunchServlet" ) //使用 @WebServlet 注解,将这个 Servlet 映射到 URL 路径 /DeptDeleteStuPunchServlet, 即当访问该路径时, Servlet 会被触发。
public class DeptDeleteStuPunchServlet extends HttpServlet { //定义了一个继承自 HttpServlet 的类 DeptDeleteStuPunchServlet, 它处理 HTTP 请求,执行删除学生考勤记录的操作。
@Override
@Override //重写 doGet 方法,用于处理 HTTP GET 请求。
protected void doGet ( HttpServletRequest req , HttpServletResponse resp ) throws ServletException , IOException {
req . setCharacterEncoding ( "utf-8" ) ;
resp . setCharacterEncoding ( "utf-8" ) ;
resp . setContentType ( "text/html;charset=utf-8" ) ;
req . setCharacterEncoding ( "utf-8" ) ; //req.setCharacterEncoding("utf-8"):设置请求的字符编码为 UTF-8。
resp . setCharacterEncoding ( "utf-8" ) ; //resp.setCharacterEncoding("utf-8"):设置响应的字符编码为 UTF-8。
resp . setContentType ( "text/html;charset=utf-8" ) ; //resp.setContentType("text/html;charset=utf-8"):设置响应的内容类型为 HTML, 并指定字符集为 UTF-8。
// 获取请求参数
// 从请求中获取参数 snodate, 这个参数包含了学生学号和考勤日期, 通常以逗号分隔。
String snodate = req . getParameter ( "snodate" ) ;
System . out . println ( snodate ) ;
System . out . println ( snodate ) ; //输出获取到的 snodate 参数,便于调试时查看该参数的值。
//分离两个参数,用日期和学号来删除
String [ ] params = snodate . split ( "," ) ;
String [ ] params = snodate . split ( "," ) ; //将 snodate 字符串按逗号分隔,得到学号和考勤日期两个部分,分别存储在 sno( 学号) 和 spunchdate( 考勤日期) 变量中。
String sno = params [ 0 ] ;
String spunchdate = params [ 1 ] ;
//输出分离后的学号和考勤日期,便于调试时查看它们的值。
System . out . println ( sno ) ;
System . out . println ( spunchdate ) ;
@ -39,26 +42,29 @@ public class DeptDeleteStuPunchServlet extends HttpServlet {
// SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
// Date spunchdate1 = ft.format(spunchdate);
//初始化一个 SQL 查询语句的变量 sql, 并创建一个 Object[] 数组,将学号 sno 和考勤日期 spunchdate 存放到数组中。这个数组将作为 SQL 查询的参数。
String sql = null ;
Object [ ] objects = { sno , spunchdate } ;
//查询是否存在此人
sql = "select count(*) as num from stupunchin where sno = ? and spunchdate = ?" ;
sql = "select count(*) as num from stupunchin where sno = ? and spunchdate = ?" ; //构建一个 SQL 查询语句,查询 stupunchin 表中是否存在该学号和考勤日期的记录。调用 DeptAdminDao.findTotalCount 方法执行查询并返回计数值 count。
int count = DeptAdminDao . findTotalCount ( sql , objects ) ;
if ( count > 0 ) { // 有则继续操作
// 删除stupunchin中的该信息
if ( count > 0 ) { // 如果查询结果中存在记录(即 count 大于 0) , 则继续执行删除操作。
// 构建一个 SQL 删除语句,从 stupunchin 表中删除指定学号和考勤日期的记录。调用 DeptAdminDao.executeUpdate 方法执行删除操作,并输出受影响的行数 num1, 以确认是否成功删除。
sql = "delete from stupunchin where sno = ? and spunchdate = ?" ;
int num1 = DeptAdminDao . executeUpdate ( sql , objects ) ;
System . out . println ( num1 ) ;
//如果删除成功,使用 RequestDispatcher 将请求转发到 /DeptQueryStuPunchByPageServlet, 并传递一些分页和查询参数( 如当前页、每页行数、学生姓名、班级、考勤日期等) 。这将使用户看到更新后的学生考勤记录列表。
req . getRequestDispatcher ( "/DeptQueryStuPunchByPageServlet?currentPage=1&rows=7&sname=&sclass=&spunchdate=" ) . forward ( req , resp ) ;
} else {
req . getRequestDispatcher ( "/view/alluse/noexistdataofdelete.jsp" ) . forward ( req , resp ) ;
req . getRequestDispatcher ( "/view/alluse/noexistdataofdelete.jsp" ) . forward ( req , resp ) ; //如果查询结果中没有找到该记录(即 count 为 0) , 则表示该学号和考勤日期的记录不存在, 使用 RequestDispatcher 转发请求到一个页面( noexistdataofdelete.jsp) , 提示用户该数据不存在。
}
}
//重写 doPost 方法。因为该 Servlet 处理删除操作时是基于 GET 请求的,所以 doPost 方法直接调用 doGet 方法,这样无论是 GET 请求还是 POST 请求都会执行相同的逻辑。
@Override
protected void doPost ( HttpServletRequest req , HttpServletResponse resp ) throws ServletException , IOException {
doGet ( req , resp ) ;