下面给你一套**《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)
逻辑说明
- 接收用户名、密码
- 保存到 application(全局)
- 跳转登录页面
@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>
十、运行全过程(老师最爱问)
- 访问
register.jsp - 填写信息并提交
- RegisterServlet 保存用户信息
- 跳转到
login.jsp - 输入账号密码
- LoginServlet 校验
- 登录成功 →
success.jsp - Session 维持登录状态
十一、常见问题与加分点
Q1:为什么用 application 存用户?
- 简单
- 所有用户共享
- 仅适合教学
Q2:真实项目怎么做?
- 数据库存用户
- 密码加密
- Token / JWT
十二、升级版建议(课程设计加分)
✔ 使用 JSTL + EL
✔ 加入 验证码
✔ 登录拦截器(Filter)
✔ 退出登录功能
✔ 数据库存储(MySQL)