下面给你一套**《JSP 实现简单登录与注册界面的完整全过程》,从页面设计 → Servlet 处理 → 数据保存 → 登录校验 → 运行流程全部打通,适合JavaWeb 课程设计 / 实训 / 考试**,一步一步照着做就能跑起来。

技术栈:JSP + Servlet + Session(不依赖数据库,适合入门)


一、整体实现思路(先理解)

核心逻辑

功能实现方式
注册把用户信息存到 Session / Application
登录对比输入的用户名和密码
登录状态Session 记录是否登录
页面跳转Servlet 控制

教学阶段不使用数据库,先掌握 JSP 工作流程。


二、项目结构(标准 JavaWeb)

LoginDemo/
│
├── src/
│   ├── entity/
│   │   └── User.java
│   ├── servlet/
│   │   ├── RegisterServlet.java
│   │   └── LoginServlet.java
│
├── WebContent/
│   ├── register.jsp
│   ├── login.jsp
│   ├── success.jsp
│   └── index.jsp
│
└── web.xml


三、用户实体类(User.java)

package entity;

public class User {
    private String username;
    private String password;

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

    // getter / setter
}


四、注册页面(register.jsp)

功能

  • 输入用户名
  • 输入密码
  • 提交到 Servlet
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
    <title>用户注册</title>
</head>
<body>
<h2>用户注册</h2>

<form action="RegisterServlet" method="post">
    用户名:<input type="text" name="username" required><br><br>
    密码:<input type="password" name="password" required><br><br>
    <input type="submit" value="注册">
</form>

<a href="login.jsp">已有账号?去登录</a>
</body>
</html>


五、注册处理(RegisterServlet)

逻辑说明

  1. 接收用户名、密码
  2. 保存到 application(全局)
  3. 跳转登录页面
@WebServlet("/RegisterServlet")
public class RegisterServlet extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        request.setCharacterEncoding("UTF-8");

        String username = request.getParameter("username");
        String password = request.getParameter("password");

        User user = new User(username, password);

        ServletContext application = getServletContext();
        application.setAttribute("user", user);

        response.sendRedirect("login.jsp");
    }
}


六、登录页面(login.jsp)

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
    <title>用户登录</title>
</head>
<body>
<h2>用户登录</h2>

<form action="LoginServlet" method="post">
    用户名:<input type="text" name="username"><br><br>
    密码:<input type="password" name="password"><br><br>
    <input type="submit" value="登录">
</form>

</body>
</html>


七、登录校验(LoginServlet)

登录逻辑

@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        request.setCharacterEncoding("UTF-8");

        String username = request.getParameter("username");
        String password = request.getParameter("password");

        ServletContext application = getServletContext();
        User user = (User) application.getAttribute("user");

        if (user != null &&
            user.getUsername().equals(username) &&
            user.getPassword().equals(password)) {

            HttpSession session = request.getSession();
            session.setAttribute("loginUser", user);

            response.sendRedirect("success.jsp");
        } else {
            response.getWriter().write("登录失败,用户名或密码错误");
        }
    }
}


八、登录成功页面(success.jsp)

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

<html>
<head>
    <title>登录成功</title>
</head>
<body>

<%
    User user = (User) session.getAttribute("loginUser");
    if (user != null) {
%>
    <h2>欢迎你,<%=user.getUsername()%>!</h2>
<%
    }
%>

<a href="index.jsp">进入首页</a>
</body>
</html>


九、首页(index.jsp)

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
    <title>首页</title>
</head>
<body>
<h1>这是系统首页</h1>
<p>你已经成功登录。</p>
</body>
</html>


十、运行全过程(老师最爱问)

  1. 访问 register.jsp
  2. 填写信息并提交
  3. RegisterServlet 保存用户信息
  4. 跳转到 login.jsp
  5. 输入账号密码
  6. LoginServlet 校验
  7. 登录成功 → success.jsp
  8. Session 维持登录状态

十一、常见问题与加分点

Q1:为什么用 application 存用户?

  • 简单
  • 所有用户共享
  • 仅适合教学

Q2:真实项目怎么做?

  • 数据库存用户
  • 密码加密
  • Token / JWT

十二、升级版建议(课程设计加分)

✔ 使用 JSTL + EL
✔ 加入 验证码
✔ 登录拦截器(Filter)
✔ 退出登录功能
✔ 数据库存储(MySQL)