1、步骤
- 新建一个数据库,存储用户的密码 ```sql use study; create table t_user( id int primary key auto_increment, username VARCHAR(255), password VARCHAR(255) ); — primary key auto_increment — 自增
INSERT into t_user(username,password) values (‘admin’,’123456’); INSERT into t_user(username,password) values (‘xl’,’123456’);
commit;
- [x] 编写登录页面- [x] 编写一个类,通过类调用数据库判断密码是否正确```javapackage oa.action;import jakarta.servlet.ServletException;import jakarta.servlet.annotation.WebServlet;import jakarta.servlet.http.HttpServlet;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import oa.bean.Dept;import oa.untils.DBUtil;import java.io.IOException;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;/*** @Author: 小雷学长* @Date: 2022/3/25 - 17:32* @Version: 1.8*/@WebServlet({"/user/login"})public class UserServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {boolean success = false;//前端提交方式:username=admin&password=123String username = request.getParameter("username");String password = request.getParameter("password");/** 连接数据库*/Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;try {//获取连接conn = DBUtil.getConnection();//获取预编译的数据库操作对象String sql = "select * from t_user where username = ? and password = ?";//编译SQL语句ps = conn.prepareStatement(sql);//给?传值ps.setString(1, username);ps.setString(2, password);//执行SQLrs = ps.executeQuery();//处理结果集//这里不需要whileif (rs.next()) {success = true;System.out.println("测试");}} catch (SQLException e) {e.printStackTrace();} finally {//释放资源DBUtil.close(conn, ps, rs);}//成功if (success) {//重定向response.sendRedirect(request.getContextPath() + "/dept/list");} else {response.sendRedirect(request.getContextPath() + "/error.jsp");}}}
2、实现
3、存在的问题
- 登录功能没有起到拦截的作用,有URL照样可以跳过登录限制
- 用session方法改造session改造OA的登录功能


