JSP | oa项目增加用户登录的功能
创始人
2024-03-21 01:17:50

目录

一:实现用户登录的功能

(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;

执行结果如下: 

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

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

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

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

<%@page contentType="text/html;charset=UTF-8"%>

欢迎使用OA系统

LOGIN PAGE


/dept/login" method="post">username:
password:

步骤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 {@Overrideprotected 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);// 执行sqlrs = 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"%>


登陆失败

登录失败,请/index.jsp">重新登录

(3)最终达到的结果?

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

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

(4)目前存在的问题?

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


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

(5)怎么解决?

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

相关内容

热门资讯

杭州新坐标科技股份有限公司董事... 中访网数据  杭州新坐标科技股份有限公司于近日发布公告,公司部分董事及高级管理人员计划减持其所持有的...
一所学校,这样融入城市发展 转自:人民日报  在黄海离岸120多海里的青岛国家深远海绿色养殖试验区,“深蓝1号”深远海养殖网箱内...
项羽的实力明明不弱于刘邦 为何... 还不知道:项羽为何会输给刘邦的读者,下面趣历史小编就为大家带来详细介绍,接着往下看吧~“羽之神勇,千...
柴氏的诅咒是真的存在吗 为何宋... 还不知道:柴氏的诅咒的读者,下面趣历史小编就为大家带来详细介绍,接着往下看吧~在历史上有许多怪事,有...
古时候没有普通话出现 那么皇帝... 还不知道:皇帝上朝都说什么话的读者,下面趣历史小编就为大家带来详细介绍,接着往下看吧~朝堂之上皇帝正...