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

追求适度,才能走向成功;人在顶峰,迈步就是下坡;身在低谷,抬足既是登高;弦,绷得太紧会断;人,思虑过度会疯;水至清无鱼,人至真无友,山至高无树;适度,不是中庸,而是一种明智的生活态度。

导读:本篇文章讲解 JSP | oa项目增加用户登录的功能,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

目录

一:实现用户登录的功能

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

(2)实现登录功能?

(3)最终达到的结果?

(4)目前存在的问题?

(5)怎么解决?


一:实现用户登录的功能

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

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

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

(2)实现登录功能?

步骤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;

执行结果如下: 

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

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

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

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

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

<%@page contentType="text/html;charset=UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>欢迎使用OA系统</title>
	</head>
	<body>

		<!--<a href="<%=request.getContextPath()%>/dept/list">查看部门列表</a>-->
		<h1>LOGIN PAGE</h1>
		<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"%>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登陆失败</title>
</head>
<body>
    登录失败,请<a href="<%=request.getContextPath()%>/index.jsp">重新登录</a>
</body>
</html>

(3)最终达到的结果?

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

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

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

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

(4)目前存在的问题?

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

<!--知道它后面有/dept/list资源可以直接访问-->
http://localhost:8080/ooa3/dept/list

(5)怎么解决?

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/128431.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!