• JSP | oa项目增加用户登录的功能


    目录

    一:实现用户登录的功能

    (1)当前oa应用还存在的问题?

    (2)实现登录功能?

    (3)最终达到的结果?

    (4)目前存在的问题?

    (5)怎么解决?


    一:实现用户登录的功能

    (1)当前oa应用还存在的问题?

    任何一个用户都可以访问这个系统,都可以对这个系统当中的数据进行增删改这些操作。

    如果只想让合法的用户去使用这个系统,不合法的用户不能访问这个系统,就需要增加一个登录功能;登录成功的可以访问该系统,登录失败不能访问!

    (2)实现登录功能?

    步骤1:数据库当中添加一个用户表:t_user

    ①t_user表当中存储的是用户的登录信息,最基本的也包括:登录的用户名和登录的密码。

    ②密码一般在数据库表当中存储的是密文,一般不以明文的形式存储(暂时使用明文方式)

    ③注册用户就相当于向t_user表中插入数据。

    1. drop table if exists t_user;
    2. create table t_user(
    3. id int primary key auto_increment,
    4. username varchar(255),
    5. password varchar(255)
    6. );
    7. insert into t_user(username,password) values('root','123');
    8. insert into t_user(username,password) values('admin','123');
    9. commit;
    10. select * from t_user;

    执行结果如下: 

    步骤2:再实现一个登录页面

    ①登录页面上应该有一个登录的表单,有用户名和密码输入的框。

    ②用户点击登录,提交表单,提交用户名和密码,表单form应该采用post方式提交。

    ③就使用欢迎页面index.jsp进行更改,不在直接跳转到/dept/list页面;而是先跳转到/dept/login验证登录;登录成功的才能跳转到/dept/list页面进行数据的操作

    1. <%@page contentType="text/html;charset=UTF-8"%>
    2. html>
    3. <html>
    4. <head>
    5. <meta charset="utf-8">
    6. <title>欢迎使用OA系统title>
    7. head>
    8. <body>
    9. <h1>LOGIN PAGEh1>
    10. <hr>
    11. <form action="<%=request.getContextPath()%>/dept/login" method="post">
    12. username:<input type="text" name="username"><br>
    13. password:<input type="password" name="password"><br>
    14. <input type="submit" value="login">
    15. form>
    16. body>
    17. html>

    步骤3:后台要有一个对应的Servlet来处理登录的请求

    ①登录成功:跳转到部门列表页面。

    ②登录失败:跳转到失败的页面。

    1. package com.bjpowernode.oa.web.action;
    2. import com.bjpowernode.oa.utils.DBUtil;
    3. import javax.servlet.ServletException;
    4. import javax.servlet.annotation.WebServlet;
    5. import javax.servlet.http.HttpServlet;
    6. import javax.servlet.http.HttpServletRequest;
    7. import javax.servlet.http.HttpServletResponse;
    8. import java.io.IOException;
    9. import java.sql.Connection;
    10. import java.sql.PreparedStatement;
    11. import java.sql.ResultSet;
    12. import java.sql.SQLException;
    13. /**
    14. * @Author:朗朗乾坤
    15. * @Package:com.bjpowernode.oa.web.action
    16. * @Project:JavaWeb
    17. * @name:UserServlet
    18. * @Date:2022/11/28 19:59
    19. */
    20. @WebServlet("/dept/login")
    21. public class UserServlet extends HttpServlet {
    22. @Override
    23. protected void doPost(HttpServletRequest request, HttpServletResponse response)
    24. throws ServletException, IOException {
    25. // 打一个布尔标记
    26. boolean success = false;
    27. // 获取前端提交的用户名和密码
    28. String username = request.getParameter("username");
    29. String password = request.getParameter("password");
    30. // 连接数据库进行验证
    31. Connection conn = null;
    32. PreparedStatement ps = null;
    33. ResultSet rs = null;
    34. try {
    35. // 获取连接
    36. conn = DBUtil.getCoonetion();
    37. // 获取预编译的数据库操作对象
    38. String sql = "select * from t_user where username=? and password=?";
    39. ps = conn.prepareStatement(sql);
    40. ps.setString(1, username);
    41. ps.setString(2, password);
    42. // 执行sql
    43. rs = ps.executeQuery();
    44. // 如果里面有数据表示登录成功:1条或者0条
    45. if (rs.next()) {
    46. success = true;
    47. }
    48. } catch (SQLException e) {
    49. e.printStackTrace();
    50. } finally {
    51. DBUtil.close(conn, ps, rs);
    52. }
    53. // 登录成功/失败
    54. if (success) {
    55. // 登录成功
    56. response.sendRedirect(request.getContextPath()+"/dept/list");
    57. }else{
    58. // 登录失败
    59. response.sendRedirect(request.getContextPath()+"/error.jsp");
    60. }
    61. }
    62. }

    步骤4:再提供一个登录失败的页面

    1. <%@page contentType="text/html;charset=UTF-8"%>
    2. html>
    3. <html lang="en">
    4. <head>
    5. <meta charset="UTF-8">
    6. <title>登陆失败title>
    7. head>
    8. <body>
    9. 登录失败,请<a href="<%=request.getContextPath()%>/index.jsp">重新登录a>
    10. body>
    11. html>

    (3)最终达到的结果?

    ①登录成功时,可以跳转到/dept/list对列表进行操作

    ② 登录失败时,会跳转到error.jsp页面,重新进行登录操作

    (4)目前存在的问题?

    这个登录功能目前只是一个摆设,没有任何作用。只要用户知道后端的请求路径,照样可以在不登录的情况下访问;并没有真正起到拦截的作用。例如:

    1. http://localhost:8080/ooa3/dept/list

    (5)怎么解决?

    这就是我们接下来需要学习的技术,会话机制:session机制!

  • 相关阅读:
    实验:配置 RIPv1 和 RIPv2,配置ripv2下默认路由,配置ripv2路由自动汇总
    leetCode 72. 编辑距离 动态规划 + 滚动数组 + 优化空间
    深度学习的初始化(暂时)
    Ambire & KuCoin 发起 ADX 交易竞赛,提供价值 50,000 美元的奖池
    Java 使用Velocity引擎生成代码
    (附源码)springboot工单管理系统 毕业设计 964158
    【MySQL高级篇】到底如何增删改数据库中的数据?一文带你吃透数据的操作之DML
    GBase 8c 数据库审计概述(二)
    通过Excel,生成sql,将A表数据插入B表
    淘宝/天猫添加收货地址 API
  • 原文地址:https://blog.csdn.net/m0_61933976/article/details/128085440