目录
任何一个用户都可以访问这个系统,都可以对这个系统当中的数据进行增删改这些操作。
如果只想让合法的用户去使用这个系统,不合法的用户不能访问这个系统,就需要增加一个登录功能;登录成功的可以访问该系统,登录失败不能访问!
步骤1:数据库当中添加一个用户表:t_user
①t_user表当中存储的是用户的登录信息,最基本的也包括:登录的用户名和登录的密码。
②密码一般在数据库表当中存储的是密文,一般不以明文的形式存储(暂时使用明文方式)
③注册用户就相当于向t_user表中插入数据。
- drop table if exists t_user;
- create table t_user(
- id int primary key auto_increment,
- username varchar(255),
- password varchar(255)
- );
- insert into t_user(username,password) values('root','123');
- insert into t_user(username,password) values('admin','123');
- commit;
- select * from t_user;
执行结果如下:

步骤2:再实现一个登录页面
①登录页面上应该有一个登录的表单,有用户名和密码输入的框。
②用户点击登录,提交表单,提交用户名和密码,表单form应该采用post方式提交。
③就使用欢迎页面index.jsp进行更改,不在直接跳转到/dept/list页面;而是先跳转到/dept/login验证登录;登录成功的才能跳转到/dept/list页面进行数据的操作
- <%@page contentType="text/html;charset=UTF-8"%>
- html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>欢迎使用OA系统title>
- head>
- <body>
-
-
- <h1>LOGIN PAGEh1>
- <hr>
- <form action="<%=request.getContextPath()%>/dept/login" method="post">
- username:<input type="text" name="username"><br>
- password:<input type="password" name="password"><br>
- <input type="submit" value="login">
- form>
-
- body>
- html>
步骤3:后台要有一个对应的Servlet来处理登录的请求
①登录成功:跳转到部门列表页面。
②登录失败:跳转到失败的页面。
- package com.bjpowernode.oa.web.action;
-
- import com.bjpowernode.oa.utils.DBUtil;
-
- 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.Connection;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
-
- /**
- * @Author:朗朗乾坤
- * @Package:com.bjpowernode.oa.web.action
- * @Project:JavaWeb
- * @name:UserServlet
- * @Date:2022/11/28 19:59
- */
- @WebServlet("/dept/login")
- public class UserServlet extends HttpServlet {
- @Override
- protected void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- // 打一个布尔标记
- boolean success = false;
- // 获取前端提交的用户名和密码
- String username = request.getParameter("username");
- String password = request.getParameter("password");
- // 连接数据库进行验证
- Connection conn = null;
- PreparedStatement ps = null;
- ResultSet rs = null;
- try {
- // 获取连接
- conn = DBUtil.getCoonetion();
- // 获取预编译的数据库操作对象
- String sql = "select * from t_user where username=? and password=?";
- ps = conn.prepareStatement(sql);
- ps.setString(1, username);
- ps.setString(2, password);
- // 执行sql
- rs = ps.executeQuery();
- // 如果里面有数据表示登录成功:1条或者0条
- if (rs.next()) {
- success = true;
- }
- } 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");
- }
- }
- }
步骤4:再提供一个登录失败的页面
- <%@page contentType="text/html;charset=UTF-8"%>
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>登陆失败title>
- head>
- <body>
- 登录失败,请<a href="<%=request.getContextPath()%>/index.jsp">重新登录a>
- body>
- html>
①登录成功时,可以跳转到/dept/list对列表进行操作

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

这个登录功能目前只是一个摆设,没有任何作用。只要用户知道后端的请求路径,照样可以在不登录的情况下访问;并没有真正起到拦截的作用。例如:
- http://localhost:8080/ooa3/dept/list
这就是我们接下来需要学习的技术,会话机制:session机制!