使用JSP实现简单的登录注册功能,并且使用Session跟踪用户登录信息

使用JSP实现简单的登录注册功能,并且使用了Session来跟踪用户的登录信息,这个是用纯JSP来实现此功能的,由于没有连接数据库,所以使用List来模拟数据库。

第一步:创建web项目
如果有不会创建web项目的,可以点击下面这个链接去看。
idea创建第一个web项目

实现登录注册功能,用到以下7个jsp文件和两个类。

  1. login.jsp是登录页面;
  2. register.jsp是注册页面;
  3. doLogin.jsp是在login.jsp页面的表单提交后在doLogin.jsp页面做效验,如果输入的用户名和密码能在List集合中找到,那么就是登录成功,否则,登录失败;
  4. doRegister.jsp是在register.jsp页面的表单提交后向List中添加;
  5. error.jsp是在doLogin.jsp页面做效验时,如果输入的用户名和密码在List集合中找不到或者账号和密码输入错误,就会跳转到error.jsp页面;
  6. index.jsp页面是首页,登录成功后就会跳到index.jsp页面;
  7. session.jsp页面主要是用来将设置的session失效,来实现跟踪用户的登录信息功能;
    在这里插入图片描述
    User类是创建的实体类,其中的属性与用户输入的信息所对应;
    UserService是写的业务层,进行具体的业务操作。
    在这里插入图片描述
    第二步: 编写User类,有用户名和密码两个属性
public class User {
    private String username;
    private String password;

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public User() {
    }

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }
}

第三步:编写UserService类

public class UserService {

    private static Set<User> userList = new HashSet<>();

    static{
        //初始化用户,模拟数据库数据
        userList.add(new User("zhang","123456"));
        userList.add(new User("wang","123456"));
    }

    // 注册
    public void register(User user){
        userList.add(user);
    }

    // 登录
    public User login(User user){
        String username = user.getUsername();     // 获取用户输入的username和password
        String password = user.getPassword();
        if(username == null || password == null){  // 如果有一个为空,就返回null
            return null;
        }

        for (User user1 : userList) {       // 如果用户输入的username和password和List中的所对应,那么就返回该user
            if(username.equals(user1.getUsername()) && password.equals(user1.getPassword())){
                return user1;
            }
        }
        return null;
    }
}

第四步:编写登录页面 login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录</title>
    <style>
        label{
            font-size: 25px;
            margin-top: 20px;
        }
        #username,#password{
            width: 200px;
            height: 25px;
            margin-top: 20px;
        }

        #submit{
            width: 50px;
            height: 25px;
            margin-top: 20px;
        }

        a{
            font-size: 20px;
            margin-left: 50px;
        }
    </style>

    <script>

    </script>
</head>
<body>
    <div style="text-align: center">
        <form action="doLogin.jsp" method="post">  <%-- 提交请求到doLogin页面--%>
            <label>用户名:</label><input id="username" type="text" name="username"><br/>
            <label>密码:</label><input id="password" type="password" name="password"><br/>
            <input id="submit" type="submit" name="登录">
            <a href="register.jsp">注册</a>
        </form>
    </div>
</body>
</html>

第五步:编写doLogin.jsp页面,来对login.jsp页面提交的数据做效验

<%@ page import="com.wdzl.pojo.User" %>    
<%@ page import="com.wdzl.service.UserService" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

    <%
        request.setCharacterEncoding("utf8");       // 设置字符集,避免出现乱码
        String username = request.getParameter("username"); // 获取用户输入的username
        String password = request.getParameter("password"); // 获取用户输入的password

        User user = new User();
        user.setUsername(username);
        user.setPassword(password);

        UserService userService = new UserService();
        User loginUser = userService.login(user);       // 在业务层中做处理,如果找到,返回user,未找到,返回null

        if(loginUser != null){
            // 通过session实现会话跟踪
            session.setAttribute("username",loginUser.getUsername());
            // 登录成功,使用重定向跳转页面
            response.sendRedirect("index.jsp");
        }else{
            // 登录失败,向作用域中存错误信息,便于在error.jsp中获取
            request.setAttribute("msg","您输入的账号或密码错误");
            // 这里用转发的目的就是为了在error.jsp页面获取request存储的信息
            request.getRequestDispatcher("error.jsp").forward(request,response);
        }
    %>
</body>
</html>

第六步:编写error.jsp页面,在doLogin.jsp页面做效验,如果效验失败则跳转到此页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title></title>
</head>
<body>
    <p style="color: red;font-size: 30px;text-align: center">登录失败:<%=request.getAttribute("msg")%></p> //在作用域中取值
</body>
</html>

第七步:编写register.jsp页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注册</title>
    <style>
        label{
            font-size: 25px;
            margin-top: 20px;
        }
        #username,#password{
            width: 200px;
            height: 25px;
            margin-top: 20px;
        }

        #submit{
            width: 50px;
            height: 25px;
            margin-top: 20px;
        }

        a{
            font-size: 20px;
            margin-left: 50px;
        }
    </style>
</head>
<body>
<div style="text-align: center">
    <form action="doRegister.jsp" method="post"><%-- 提交请求到doRegister.jsp页面--%>
        <label>用户名:</label><input id="username" type="text" name="username"><br/>
        <label>密码:</label><input id="password" type="password" name="password"><br/>
        <input id="submit" type="submit" name="提交">
    </form>
</div>
</body>
</html>

第八步:编写doRegister.jsp页面,主要处理register.jsp页面提交的表单信息,添加到List中

<%@ page import="com.wdzl.pojo.User" %>
<%@ page import="com.wdzl.service.UserService" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        request.setCharacterEncoding("utf8");
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        User user = new User();
        user.setUsername(username);
        user.setPassword(password);

        UserService userService = new UserService();
        userService.register(user);
    %>

    <div style="text-align: center">
        <h1 >注册成功!用户名为<%=username%></h1>
        <a href="login.jsp" style="font-size: 30px">去登录</a>
    </div>
</body>
</html>

第九步:编写index.jsp页面,这里可以实现用户登录信息的跟踪。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>首页</title>
</head>
<body>


    <div style="text-align: center;font-size: 25px">
    <%-- 判断session中取的用户名是否为空,若为空,则显示去登录,
        若不为空,则可以在session中取到用户名,并且可以注销,注销后,用户名不在显示--%>
        <%if(session.getAttribute("username") != null){
        %>
            <%=session.getAttribute("username")%>
        来到首页
            <br>
            <a href="session.jsp" οnclick="return confirm('您确定注销么?')" >注销</a>

        <%
            }else{
        %>
        <br/>
        <a href="login.jsp">去登录</a>
        <%
            }
        %>

    </div>
</body>
</html>

第十步:编写session.jsp,主要来清空session的,也是实现会话跟踪必不可少的元素。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注销</title>
</head>
<body>
    <%
        session.invalidate();   // 清空session 
        // 重定向
        response.sendRedirect("index.jsp");
    %>
</body>
</html>

以上就是使用jsp简单实现的登录注册功能,这个做的这个就是简单的练练手,之后会使用servlet来重写写登录注册功能,与现在写的登录注册作对比。

  • 15
    点赞
  • 136
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
以下是一个简单的register.jsp页面示例,用于处理用户提交的注册信息并将结果返回给用户: ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.sql.*" %> <% // 获取表单数据 String username = request.getParameter("username"); String password = request.getParameter("password"); String confirmPassword = request.getParameter("confirmPassword"); String email = request.getParameter("email"); // 数据库连接信息 String dbUrl = "jdbc:mysql://localhost:3306/mydb"; String dbUser = "root"; String dbPassword = "root"; // 数据库操作 Connection conn = null; PreparedStatement pstmt = null; try { // 连接数据库 Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(dbUrl, dbUser, dbPassword); // 插入记录 pstmt = conn.prepareStatement("INSERT INTO users (username, password, email) VALUES (?, ?, ?)"); pstmt.setString(1, username); pstmt.setString(2, password); pstmt.setString(3, email); int rows = pstmt.executeUpdate(); // 返回注册结果 if (rows > 0) { response.sendRedirect("register.jsp?result=success"); } else { response.sendRedirect("register.jsp?result=fail"); } } catch (Exception e) { e.printStackTrace(); response.sendRedirect("register.jsp?result=fail"); } finally { // 关闭数据库连接 if (pstmt != null) { try { pstmt.close(); } catch (SQLException e) { } } if (conn != null) { try { conn.close(); } catch (SQLException e) { } } } %> ``` 在这个示例中,我们首先使用request.getParameter()方法获取表单中提交的数据。然后,我们使用Java JDBC API连接数据库,并使用PreparedStatement对象执行SQL语句插入用户记录。插入完成后,我们使用response.sendRedirect()方法将处理结果通过URL参数的形式传递回用户注册界面,并请求该页面以显示注册结果。 需要注意的是,在实际应用中,我们还需要对用户输入的数据进行验证和过滤,确保输入的数据符合要求。此外,还需要对数据库连接和资源进行适当的管理,以提高性能和安全性。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

☞^O^☜♞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值