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/frontweb/TeaPunchServlet.java

132 lines
6.6 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.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);
}
}