|
|
package com.controller.schoadmin;
|
|
|
// 声明该类所在的包名为 com.controller.schoadmin,通常用于组织与学校管理员相关的控制器类
|
|
|
|
|
|
import com.dao.DeptAdminDao;
|
|
|
// 导入自定义的数据访问对象类 DeptAdminDao,该类可能包含了用于执行数据库查询等操作的方法
|
|
|
|
|
|
import com.entity.StuPunch;
|
|
|
// 导入自定义的实体类 StuPunch,用于封装学生打卡的相关信息,例如学生编号、姓名、打卡状态等
|
|
|
|
|
|
import com.utils.JDBCUtils;
|
|
|
// 导入自定义的工具类 JDBCUtils,该类可能提供了与 JDBC(Java 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 请求,即对于该 Servlet,POST 请求和 GET 请求的处理逻辑相同
|
|
|
}
|
|
|
} |