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;

  1. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/2560440/1648211413304-d94e822e-bf02-4713-a541-f5ee55b4e915.png#clientId=u55d8bee7-4680-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=415&id=u95e7d324&margin=%5Bobject%20Object%5D&name=image.png&originHeight=622&originWidth=1055&originalType=binary&ratio=1&rotation=0&showTitle=false&size=35604&status=done&style=shadow&taskId=ub38475a8-118d-4670-9630-43083c7ecaf&title=&width=703.3333333333334)
  2. - [x] 编写登录页面
  3. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/2560440/1648211519955-d66aada3-2fdc-41ae-baa9-9236236aa9dc.png#clientId=u55d8bee7-4680-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=558&id=ud5c20c8f&margin=%5Bobject%20Object%5D&name=image.png&originHeight=837&originWidth=1445&originalType=binary&ratio=1&rotation=0&showTitle=false&size=318048&status=done&style=none&taskId=u34ddbe25-8f31-4fc4-bb00-e7a41680ecd&title=&width=963.3333333333334)
  4. - [x] 编写一个类,通过类调用数据库判断密码是否正确
  5. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/2560440/1648211576233-f9966d7d-5b32-483e-9c9c-d60e4d1b4eeb.png#clientId=u55d8bee7-4680-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=608&id=u99d76c0a&margin=%5Bobject%20Object%5D&name=image.png&originHeight=912&originWidth=1482&originalType=binary&ratio=1&rotation=0&showTitle=false&size=365604&status=done&style=none&taskId=u565e3cf4-fee4-4c19-951d-5dacb9ed3b7&title=&width=988)
  6. ```java
  7. package oa.action;
  8. import jakarta.servlet.ServletException;
  9. import jakarta.servlet.annotation.WebServlet;
  10. import jakarta.servlet.http.HttpServlet;
  11. import jakarta.servlet.http.HttpServletRequest;
  12. import jakarta.servlet.http.HttpServletResponse;
  13. import oa.bean.Dept;
  14. import oa.untils.DBUtil;
  15. import java.io.IOException;
  16. import java.sql.Connection;
  17. import java.sql.PreparedStatement;
  18. import java.sql.ResultSet;
  19. import java.sql.SQLException;
  20. /**
  21. * @Author: 小雷学长
  22. * @Date: 2022/3/25 - 17:32
  23. * @Version: 1.8
  24. */
  25. @WebServlet({"/user/login"})
  26. public class UserServlet extends HttpServlet {
  27. @Override
  28. protected void doPost(HttpServletRequest request, HttpServletResponse response)
  29. throws ServletException, IOException {
  30. boolean success = false;
  31. //前端提交方式:username=admin&password=123
  32. String username = request.getParameter("username");
  33. String password = request.getParameter("password");
  34. /*
  35. * 连接数据库
  36. */
  37. Connection conn = null;
  38. PreparedStatement ps = null;
  39. ResultSet rs = null;
  40. try {
  41. //获取连接
  42. conn = DBUtil.getConnection();
  43. //获取预编译的数据库操作对象
  44. String sql = "select * from t_user where username = ? and password = ?";
  45. //编译SQL语句
  46. ps = conn.prepareStatement(sql);
  47. //给?传值
  48. ps.setString(1, username);
  49. ps.setString(2, password);
  50. //执行SQL
  51. rs = ps.executeQuery();
  52. //处理结果集
  53. //这里不需要while
  54. if (rs.next()) {
  55. success = true;
  56. System.out.println("测试");
  57. }
  58. } catch (SQLException e) {
  59. e.printStackTrace();
  60. } finally {
  61. //释放资源
  62. DBUtil.close(conn, ps, rs);
  63. }
  64. //成功
  65. if (success) {
  66. //重定向
  67. response.sendRedirect(request.getContextPath() + "/dept/list");
  68. } else {
  69. response.sendRedirect(request.getContextPath() + "/error.jsp");
  70. }
  71. }
  72. }

2、实现

image.png
image.png
image.png

3、存在的问题