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/schoadmin/SchoQueryStuPunchByIdServle...

147 lines
9.1 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.schoadmin;
// 声明该类所在的包名为 com.controller.schoadmin通常用于组织与学校管理员相关的控制器类
import com.dao.DeptAdminDao;
// 导入自定义的数据访问对象类 DeptAdminDao该类可能包含了用于执行数据库查询等操作的方法
import com.entity.StuPunch;
// 导入自定义的实体类 StuPunch用于封装学生打卡的相关信息例如学生编号、姓名、打卡状态等
import com.utils.JDBCUtils;
// 导入自定义的工具类 JDBCUtils该类可能提供了与 JDBCJava Database Connectivity操作相关的工具方法如数据库连接的获取、关闭以及结果集的处理等
import javax.servlet.ServletException;
// 导入 Servlet 异常类,用于处理在 Servlet 执行过程中可能出现的异常情况
import javax.servlet.annotation.WebServlet;
// 导入 WebServlet 注解,用于将普通的 Java 类标记为 Servlet并指定其在 Web 应用中的访问路径
import javax.servlet.http.HttpServlet;
// 导入 HttpServlet 类,所有的 HTTP Servlet 都需要继承该类,并重写相应方法来处理 HTTP 请求
import javax.servlet.http.HttpServletRequest;
// 导入 HttpServletRequest 接口,用于封装客户端发送的 HTTP 请求信息,如请求参数、请求头、请求方法等
import javax.servlet.http.HttpServletResponse;
// 导入 HttpServletResponse 接口,用于封装服务器返回给客户端的 HTTP 响应信息,如响应状态码、响应头、响应内容等
import java.io.IOException;
// 导入 IOException 类,用于处理在输入输出操作中可能出现的异常情况
import java.sql.ResultSet;
// 导入 ResultSet 接口,用于表示数据库查询的结果集,通过该接口可以遍历和获取查询结果中的每一行数据
@WebServlet("/SchoQueryStuPunchByIdServlet")
// 使用 WebServlet 注解将当前类标记为一个 Servlet并指定其访问路径为 /SchoQueryStuPunchByIdServlet客户端可通过该路径访问此 Servlet
public class SchoQueryStuPunchByIdServlet extends HttpServlet {
// 定义一个公共类 SchoQueryStuPunchByIdServlet继承自 HttpServlet 类,用于处理 HTTP 请求
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 重写 HttpServlet 类的 doGet 方法,用于处理客户端发送的 GET 请求
// req 是 HttpServletRequest 对象封装了客户端的请求信息resp 是 HttpServletResponse 对象,用于向客户端发送响应信息
req.setCharacterEncoding("utf-8");
// 设置请求的字符编码为 UTF-8以确保能够正确处理包含中文等特殊字符的请求参数
resp.setCharacterEncoding("utf-8");
// 设置响应的字符编码为 UTF-8以保证能够正确输出包含中文等特殊字符的响应内容
resp.setContentType("text/html;charset=utf-8");
// 设置响应的内容类型为 text/html并指定字符编码为 UTF-8告知客户端响应的内容是 HTML 格式,且使用 UTF-8 编码
//获取请求参数
String sno = req.getParameter("sno");
// 从请求中获取名为 "sno" 的参数值,该参数可能表示学生的编号,将其存储在字符串变量 sno 中
String spunchdate = req.getParameter("spunchdate");
// 从请求中获取名为 "spunchdate" 的参数值,该参数可能表示学生的打卡日期,将其存储在字符串变量 spunchdate 中
String sql = null;
// 声明一个字符串变量 sql用于存储 SQL 查询语句,初始值设为 null
Object[] objects = {sno, spunchdate};
// 创建一个 Object 类型的数组 objects将 sno 和 spunchdate 作为数组元素,用于后续的 SQL 查询参数传递
//查询是否存在此人
sql = "select count(*) as num from stupunchin where sno = ? and spunchdate = ?";
// 定义一个 SQL 查询语句,用于查询 stupunchin 表中,学生编号为 sno 且打卡日期为 spunchdate 的记录数量,并将结果列命名为 num
int count = DeptAdminDao.findTotalCount(sql, objects);
// 调用 DeptAdminDao 类的 findTotalCount 方法,传入 SQL 查询语句和查询参数数组 objects执行查询并返回满足条件的记录数量将结果存储在整数变量 count 中
if (count > 0){ //有则继续操作
// 如果查询到的记录数量大于 0说明存在符合条件的学生打卡记录则继续后续操作
sql = "select s.sname,sp.* from student s,stupunchin sp where s.sno = sp.sno and sp.sno = ? and sp.spunchdate = ?";
// 定义一个新的 SQL 查询语句,通过关联 student 表和 stupunchin 表,查询学生姓名以及学生打卡的详细信息,条件是学生编号为 sno 且打卡日期为 spunchdate
ResultSet resultSet = DeptAdminDao.qureyInfo(sql, objects);
// 调用 DeptAdminDao 类的 qureyInfo 方法,传入 SQL 查询语句和查询参数数组 objects执行查询并返回结果集将结果存储在 ResultSet 对象 resultSet 中
StuPunch stuPunch = new StuPunch();
// 创建一个 StuPunch 类的对象 stuPunch用于存储查询到的学生打卡信息
try {
while (resultSet.next()){
// 遍历结果集,每次循环处理结果集中的一行数据
stuPunch.setSno(resultSet.getString("sno"));
// 从结果集中获取名为 "sno" 的列的值,并将其设置到 stuPunch 对象的 sno 属性中
stuPunch.setSname(resultSet.getString("sname"));
// 从结果集中获取名为 "sname" 的列的值,并将其设置到 stuPunch 对象的 sname 属性中
stuPunch.setSispunch(resultSet.getString("sispunch"));
// 从结果集中获取名为 "sispunch" 的列的值,并将其设置到 stuPunch 对象的 sispunch 属性中
stuPunch.setSpunchdate(resultSet.getDate("spunchdate"));
// 从结果集中获取名为 "spunchdate" 的列的值,并将其设置到 stuPunch 对象的 spunchdate 属性中
stuPunch.setSpunchtime(resultSet.getString("spunchtime"));
// 从结果集中获取名为 "spunchtime" 的列的值,并将其设置到 stuPunch 对象的 spunchtime 属性中
stuPunch.setSishot(resultSet.getString("sishot"));
// 从结果集中获取名为 "sishot" 的列的值,并将其设置到 stuPunch 对象的 sishot 属性中
stuPunch.setSiscough(resultSet.getString("siscough"));
// 从结果集中获取名为 "siscough" 的列的值,并将其设置到 stuPunch 对象的 siscough 属性中
stuPunch.setSisseem(resultSet.getString("sisseem"));
// 从结果集中获取名为 "sisseem" 的列的值,并将其设置到 stuPunch 对象的 sisseem 属性中
stuPunch.setSisdiagnose(resultSet.getString("sisdiagnose"));
// 从结果集中获取名为 "sisdiagnose" 的列的值,并将其设置到 stuPunch 对象的 sisdiagnose 属性中
stuPunch.setSstatus(resultSet.getString("sstatus"));
// 从结果集中获取名为 "sstatus" 的列的值,并将其设置到 stuPunch 对象的 sstatus 属性中
}
} catch (Exception e) {
e.printStackTrace();
// 捕获并处理可能出现的异常情况,将异常的堆栈跟踪信息输出到控制台,以便进行调试
}finally {
JDBCUtils.close(resultSet);
// 无论是否发生异常,最终都调用 JDBCUtils 类的 close 方法关闭结果集,释放相关的数据库资源
}
req.setAttribute("stuPunch", stuPunch);
// 将 stuPunch 对象作为属性添加到请求对象 req 中,属性名为 "stuPunch",以便后续的 JSP 页面可以获取该对象
req.getRequestDispatcher("/view/schoadmin/alterstupunch.jsp").forward(req, resp);
// 获取请求转发器,将请求 req 和响应 resp 转发到 /view/schoadmin/alterstupunch.jsp 页面,使该页面能够继续处理请求并显示学生的打卡信息,可能用于修改操作
}else {
req.getRequestDispatcher("/view/alluse/noexistdataofalter.jsp").forward(req, resp);
// 如果查询到的记录数量为 0说明不存在符合条件的学生打卡记录则将请求 req 和响应 resp 转发到 /view/alluse/noexistdataofalter.jsp 页面,提示用户没有可修改的相关数据
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 重写 HttpServlet 类的 doPost 方法,用于处理客户端发送的 POST 请求
doGet(req, resp);
// 调用 doGet 方法来处理 POST 请求,即对于该 ServletPOST 请求和 GET 请求的处理逻辑相同
}
}