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.
lsepidemicsituationsystem7/src/com/controller/alluse/LoginServlet.java

175 lines
8.3 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.alluse;
import com.alibaba.druid.util.JdbcUtils;
import com.dao.SchoAdminDao;
import com.dao.StuDao;
import com.dao.TeaDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.sql.ResultSet;
/**
* 处理用户登录请求的Servlet
* 根据用户选择的身份(学生/教师/管理员)进行不同的验证逻辑
*/
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置请求和响应的字符编码,防止中文乱码
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
// 从请求参数中获取用户输入的用户名、密码和身份
String userName = req.getParameter("userName");
String psw = req.getParameter("psw");
String identity = req.getParameter("identity1");
// 打印日志用于调试
System.out.println(userName);
System.out.println(psw);
System.out.println(identity);
// 根据用户选择的身份进行不同的验证逻辑
if (identity.equals("学生")){//学生身份
boolean flag = false; // 标记是否验证成功
String sql = "select * from student where sname = ? and spsw = ?"; // SQL查询语句
Object[] objects = {userName, psw}; // SQL查询参数
ResultSet resultSet = StuDao.login(sql, objects); // 执行数据库查询
String sno = null; // 学生学号
try {
if (resultSet.next()){ // 如果查询结果不为空
flag = true; // 验证成功
sno = resultSet.getString("sno"); // 获取学生学号
}
} catch (Exception e) {
e.printStackTrace(); // 打印异常堆栈信息
}finally {
JdbcUtils.close(resultSet); // 关闭结果集,释放资源
}
if (flag){ // 验证成功
System.out.println("登录成功!");
// 创建会话,存储用户信息
HttpSession session = req.getSession();
session.setAttribute("userName", userName); // 存储用户名
session.setAttribute("sno", sno); // 存储学号
System.out.println(sno);
// 设置跳转信息并转发到提示页面
req.setAttribute("httpUrl","/view/stu/stumainview.jsp");
req.setAttribute("info", "登录成功!即将跳转至后台首页!");
req.setAttribute("title","登录成功");
req.getRequestDispatcher("/view/alluse/info.jsp").forward(req, resp);
// resp.sendRedirect(req.getContextPath() + "/view/stu/stumainview.jsp");
}else { // 验证失败
System.out.println("用户名或密码错误!请重新登录!");
// 设置错误信息并转发到提示页面
req.setAttribute("httpUrl","/view/login/login.jsp");
req.setAttribute("info", "登录失败!用户名或密码错误!即将跳转至登录页面!");
req.setAttribute("title","登录失败");
req.getRequestDispatcher("/view/alluse/info.jsp").forward(req, resp);
}
}else if (identity.equals("教师")){//教师身份
boolean flag = false;
String sql = "select * from teacher where tname = ? and tpsw = ?";
Object[] objects = {userName, psw};
ResultSet resultSet = TeaDao.login(sql, objects);
String tno = null;
try {
if (resultSet.next()){
flag = true;
tno = resultSet.getString("tno");
}
} catch (Exception e) {
e.printStackTrace();
}finally {
JdbcUtils.close(resultSet);
}
if (flag){
System.out.println("登录成功!");
// 创建会话,存储用户信息
HttpSession session = req.getSession();
session.setAttribute("userName", userName);
session.setAttribute("tno", tno);
System.out.println(tno);
// 设置跳转信息并转发到提示页面
req.setAttribute("httpUrl","/view/tea/teamainview.jsp");
req.setAttribute("info", "登录成功!即将跳转至后台首页!");
req.setAttribute("title","登录成功");
req.getRequestDispatcher("/view/alluse/info.jsp").forward(req, resp);
// resp.sendRedirect(req.getContextPath() + "/view/guide/mainview_guide.jsp");
}else {
System.out.println("用户名或密码错误!请重新登录!");
// 设置错误信息并转发到提示页面
req.setAttribute("httpUrl","/view/login/login.jsp");
req.setAttribute("info", "登录失败!用户名或密码错误!即将跳转至登录页面!");
req.setAttribute("title","登录失败");
req.getRequestDispatcher("/view/alluse/info.jsp").forward(req, resp);
}
}else {//如果是管理员
boolean flag = false;
String sql = "select * from admin where adname = ? and adpsw = ? and belong = ?";
Object[] objects = {userName, psw, identity};
ResultSet resultSet = SchoAdminDao.login(sql, objects);
try {
if (resultSet.next()){
flag = true;
}
} catch (Exception e) {
e.printStackTrace();
}finally {
JdbcUtils.close(resultSet);
}
if (flag){ // 管理员验证成功
if (identity.equals("学校")){//学校管理员
System.out.println("登录成功!");
HttpSession session = req.getSession();
session.setAttribute("belong", identity); // 存储管理员所属单位
System.out.println(identity);
// 设置跳转信息并转发到提示页面
req.setAttribute("httpUrl","/view/schoadmin/schomainview.jsp");
req.setAttribute("info", "登录成功!即将跳转至后台首页!");
req.setAttribute("title","登录成功");
req.getRequestDispatcher("/view/alluse/info.jsp").forward(req, resp);
}else {//二级学院管理员
System.out.println("登录成功!");
// 创建会话,存储用户信息
HttpSession session = req.getSession();
session.setAttribute("belong", identity);
System.out.println(identity);
// 设置跳转信息并转发到提示页面
req.setAttribute("httpUrl","/view/deptadmin/deptmainview.jsp");
req.setAttribute("info", "登录成功!即将跳转至后台首页!");
req.setAttribute("title","登录成功");
req.getRequestDispatcher("/view/alluse/info.jsp").forward(req, resp);
// resp.sendRedirect(req.getContextPath() + "/view/guide/mainview_guide.jsp");
}
}else {
System.out.println("用户名或密码错误!请重新登录!");
// 设置错误信息并转发到提示页面
req.setAttribute("httpUrl","/view/login/login.jsp");
req.setAttribute("info", "登录失败!用户名或密码错误!即将跳转至登录页面!");
req.setAttribute("title","登录失败");
req.getRequestDispatcher("/view/alluse/info.jsp").forward(req, resp);
}
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp); // 对于POST请求直接调用doGet方法处理
}
}