1.编写CheckServlet
package com.test.servlet;
/*
@author 天赋吉运-yxh
*/
import com.test.entity.User;
import com.test.service.CheckUserService;
import javax.servlet.RequestDispatcher;
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 java.io.IOException;
import java.sql.SQLException;
@WebServlet(name = "CheckServlet")
public class CheckServlet extends HttpServlet {
DBUtil dbUtil=new DBUtil();
private CheckUserService checkUserService=new CheckUserService();
// 重写HttpServlet的post方法
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 从提交的表单中获取用户名和密码信息
String uname=request.getParameter("uname");
String passwd=request.getParameter("upwd");
RequestDispatcher rd =null;
String forward =null;
//判空处理
if (uname==null|| passwd==null){
request.setAttribute("msg","用户名或密码为空!");
rd =request.getRequestDispatcher("02/error.jsp");
rd.forward(request,response);
} else {
User user =new User();
user.setSname(uname);
user.setSno(passwd);
// 验证登录
try {
final boolean login = dbUtil.login(user);
if (login) {
//设置转发地址
forward ="/02/success.jsp";
} else {
forward ="/02/error.jsp";
}
//验证后转发(携带request和response对象)
rd =request.getRequestDispatcher(forward);
rd.forward(request,response);
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
// 暂时将get请求也转发至post去处理,避免重复逻辑处理
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
2.数据库连接与登录验证
ps:我这里用的是mysql8所以驱动加载部分是从"com.mysql.cj.jdbc.Driver"下加载的,老版本的不需要cj包,另外mysql6以上的数据库配置连接时要注意时区问题,配置时需要注意添加配置 serverTimezone=GMT%2B8,否则会连接不上。
package com.test.servlet;
/*
@author 天赋吉运-yxh
*/
import com.test.entity.User;
import com.test.service.CheckUserService;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBUtil {
boolean