You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lsepidemicsituationsystem8/src/com/controller/deptadmin/DeptDeleteStuPunchServlet.java

73 lines
5.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.controller.deptadmin;//定义了当前类所在的 Java 包 com.controller.deptadmin表示这是一个与部门管理员相关的控制器类。
import com.dao.DeptAdminDao;//导入 DeptAdminDao 类,该类通常用于执行数据库操作(如查询、更新、删除等)。
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;//IOException用于处理输入输出异常。
import java.text.SimpleDateFormat;
import java.util.Date;
@WebServlet("/DeptDeleteStuPunchServlet")//使用 @WebServlet 注解,将这个 Servlet 映射到 URL 路径 /DeptDeleteStuPunchServlet即当访问该路径时Servlet 会被触发。
public class DeptDeleteStuPunchServlet extends HttpServlet {//定义了一个继承自 HttpServlet 的类 DeptDeleteStuPunchServlet它处理 HTTP 请求,执行删除学生考勤记录的操作。
@Override//重写 doGet 方法,用于处理 HTTP GET 请求。
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
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);//输出获取到的 snodate 参数,便于调试时查看该参数的值。
//分离两个参数,用日期和学号来删除
String[] params = snodate.split(",");//将 snodate 字符串按逗号分隔,得到学号和考勤日期两个部分,分别存储在 sno学号和 spunchdate考勤日期变量中。
String sno = params[0];
String spunchdate = params[1];
//输出分离后的学号和考勤日期,便于调试时查看它们的值。
System.out.println(sno);
System.out.println(spunchdate);
//字符串转为日期类型
// Date spunchdate1 = new Date(spunchdate);
//或
// 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 查询语句,查询 stupunchin 表中是否存在该学号和考勤日期的记录。调用 DeptAdminDao.findTotalCount 方法执行查询并返回计数值 count。
int count = DeptAdminDao.findTotalCount(sql, objects);
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);//如果查询结果中没有找到该记录(即 count 为 0则表示该学号和考勤日期的记录不存在使用 RequestDispatcher 转发请求到一个页面noexistdataofdelete.jsp提示用户该数据不存在。
}
}//重写 doPost 方法。因为该 Servlet 处理删除操作时是基于 GET 请求的,所以 doPost 方法直接调用 doGet 方法,这样无论是 GET 请求还是 POST 请求都会执行相同的逻辑。2121212
//重写 doPost 方法。因为该 Servlet 处理删除操作时是基于 GET 请求的,所以 doPost 方法直接调用 doGet 方法,这样无论是 GET 请求还是 POST 请求都会执行相同的逻辑。
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}