|
|
package com.controller.frontweb;
|
|
|
// 声明该Servlet所在的包名为com.controller.frontweb
|
|
|
|
|
|
import com.dao.DeptAdminDao;
|
|
|
// 导入部门管理员数据访问对象类,在本类中未使用
|
|
|
|
|
|
import com.dao.FrontWebDao;
|
|
|
// 导入前端数据访问对象类,用于执行数据库操作,如查询、插入等
|
|
|
|
|
|
import javax.servlet.ServletException;
|
|
|
// 导入Servlet异常类,用于处理Servlet运行时可能出现的异常
|
|
|
|
|
|
import javax.servlet.annotation.WebServlet;
|
|
|
// 导入注解,用于将Servlet映射到特定的URL
|
|
|
|
|
|
import javax.servlet.http.HttpServlet;
|
|
|
// 导入HttpServlet类,所有基于HTTP协议的Servlet都继承自该类
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
// 导入用于处理HTTP请求的类,可获取请求参数等信息
|
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
// 导入用于处理HTTP响应的类,可设置响应内容、状态码等
|
|
|
|
|
|
import javax.servlet.http.HttpSession;
|
|
|
// 导入HttpSession类,用于管理用户会话,存储用户相关信息
|
|
|
|
|
|
import java.io.IOException;
|
|
|
// 导入用于处理I/O异常的类,如在读写数据时可能发生的异常
|
|
|
|
|
|
import java.sql.ResultSet;
|
|
|
// 导入用于处理数据库查询结果的类
|
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
// 导入用于格式化日期和时间的类
|
|
|
|
|
|
import java.util.Date;
|
|
|
// 导入日期类,用于获取当前日期和时间
|
|
|
|
|
|
@WebServlet("/TeaPunchServlet")
|
|
|
// 使用@WebServlet注解将该Servlet映射到URL路径为"/TeaPunchServlet"
|
|
|
public class TeaPunchServlet extends HttpServlet {
|
|
|
|
|
|
@Override
|
|
|
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
|
|
// 重写父类HttpServlet的doGet方法,用于处理HTTP GET请求
|
|
|
|
|
|
// 设置请求的字符编码为UTF-8,防止请求参数中的中文乱码
|
|
|
req.setCharacterEncoding("utf-8");
|
|
|
// 设置响应的字符编码为UTF-8,防止响应内容中的中文乱码
|
|
|
resp.setCharacterEncoding("utf-8");
|
|
|
// 设置响应的内容类型为HTML格式,并且字符编码为UTF-8,告知客户端如何解析响应内容
|
|
|
resp.setContentType("text/html;charset=utf-8");
|
|
|
|
|
|
// 获取当前请求的会话对象
|
|
|
HttpSession session = req.getSession();
|
|
|
// 从会话中获取名为"tno"的属性值,并将其转换为String类型,该值表示教师编号
|
|
|
String tno = (String) session.getAttribute("tno");
|
|
|
// 将教师编号打印到控制台,用于调试
|
|
|
System.out.println(tno);
|
|
|
|
|
|
// 从HTTP请求的参数中获取名为"tishot"的参数值,该值表示教师是否发热
|
|
|
String tishot = req.getParameter("tishot");
|
|
|
// 从HTTP请求的参数中获取名为"tiscough"的参数值,该值表示教师是否咳嗽
|
|
|
String tiscough = req.getParameter("tiscough");
|
|
|
// 从HTTP请求的参数中获取名为"tisseem"的参数值,该值表示教师是否有其他症状
|
|
|
String tisseem = req.getParameter("tisseem");
|
|
|
// 从HTTP请求的参数中获取名为"tisdiagnose"的参数值,该值表示教师是否被诊断
|
|
|
String tisdiagnose = req.getParameter("tisdiagnose");
|
|
|
// 从HTTP请求的参数中获取名为"tstatus"的参数值,该值表示教师当前状态
|
|
|
String tstatus = req.getParameter("tstatus");
|
|
|
|
|
|
// 设置教师打卡状态为"是",表示已打卡
|
|
|
String tispunch = "是";
|
|
|
// 创建Date对象,获取当前时间
|
|
|
Date date = new Date();
|
|
|
|
|
|
// 创建SimpleDateFormat对象,用于将日期格式化为"yyyy-MM-dd"的字符串
|
|
|
SimpleDateFormat sf1 = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
// 格式化当前日期
|
|
|
String tpunchdate = sf1.format(date);
|
|
|
// 将当前日期打印到控制台,用于调试
|
|
|
System.out.println(tpunchdate);
|
|
|
|
|
|
// 创建SimpleDateFormat对象,用于将时间格式化为"HH:mm"的字符串
|
|
|
SimpleDateFormat sf2 = new SimpleDateFormat("HH:mm");
|
|
|
// 格式化当前时间
|
|
|
String tpunchtime = sf2.format(date);
|
|
|
// 将当前时间打印到控制台,用于调试
|
|
|
System.out.println(tpunchtime);
|
|
|
|
|
|
// 初始化SQL语句变量
|
|
|
String sql = null;
|
|
|
|
|
|
// 构造SQL查询语句,用于查询该教师今天是否已经打卡
|
|
|
sql = "select count(*) as num from teapunchin where tno = ? and tpunchdate = ?";
|
|
|
// 创建包含SQL语句参数的对象数组,依次为教师编号、打卡日期
|
|
|
Object[] objects1 = {tno, tpunchdate};
|
|
|
// 调用FrontWebDao的findTotalCount方法执行SQL查询,获取查询结果的数量
|
|
|
int count = FrontWebDao.findTotalCount(sql, objects1);
|
|
|
|
|
|
if (count == 0) {
|
|
|
// 如果查询结果数量为0,表示该教师今天还未打卡,则执行插入操作
|
|
|
sql = "insert into teapunchin values(?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
|
|
// 创建包含SQL语句参数的对象数组,依次为教师编号、是否打卡、打卡日期、打卡时间、是否发热、是否咳嗽、是否有其他症状、是否被诊断、当前状态
|
|
|
Object[] objects2 = {tno, tispunch, tpunchdate, tpunchtime, tishot, tiscough, tisseem, tisdiagnose, tstatus};
|
|
|
|
|
|
// 调用FrontWebDao的executeUpdate方法执行SQL插入语句,并获取受影响的行数
|
|
|
int num = FrontWebDao.executeUpdate(sql, objects2);
|
|
|
|
|
|
// 将受影响的行数打印到控制台,用于调试
|
|
|
System.out.println(num);
|
|
|
|
|
|
// 通过响应输出一段JavaScript代码,弹出提示框提示打卡成功
|
|
|
// 并将页面重定向到教师信息页面,同时关闭当前窗口
|
|
|
resp.getWriter().write("<script>alert('打卡成功!'); window.location='" + req.getContextPath() + "/TeaInfoServlet';" + "window.close();</script>");
|
|
|
|
|
|
} else {
|
|
|
// 如果查询结果数量不为0,表示该教师今天已经打卡
|
|
|
// 通过响应输出一段JavaScript代码,弹出提示框提示今天已打卡,不能再次打卡
|
|
|
// 并将页面重定向到教师信息页面,同时关闭当前窗口
|
|
|
resp.getWriter().write("<script>alert('您今天已成功打卡!不能再次打卡!'); window.location='" + req.getContextPath() + "/TeaInfoServlet';" + "window.close();</script>");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
|
|
// 重写父类HttpServlet的doPost方法,用于处理HTTP POST请求
|
|
|
// 直接调用doGet方法来处理POST请求,复用doGet方法中的业务逻辑
|
|
|
this.doGet(req, resp);
|
|
|
}
|
|
|
} |