JSP用户登录实战:从表单到校验完整指南

JSP实现用户登录与数据校验完整案例

一、案例概述

本案例基于JSP+Servlet+JavaBean经典MVC模式,实现用户登录功能核心模块,包含前端表单提交、输入数据校验、登录状态判断、结果页面反馈等完整流程。案例采用纯原生JSP技术实现,不依赖第三方框架,适合Java Web初学者学习基础交互、数据传递和校验逻辑,可直接部署运行。

二、开发环境

  • JDK 1.8及以上
  • Tomcat 8.5及以上
  • IDEA/Eclipse开发工具
  • 浏览器(Chrome/Edge)

三、核心功能

  1. 登录表单页面:用户名、密码输入框,提交按钮
  2. 非空校验:禁止用户名/密码为空提交
  3. 合法性校验:固定用户名密码模拟登录验证
  4. 状态反馈:登录成功/失败页面提示
  5. 页面跳转:登录成功跳转主页,失败返回登录页

四、完整代码实现

1. 用户实体类(User.java)

封装用户信息,遵循JavaBean规范,用于数据传递。

java 复制代码
public class User {
    private String username;
    private String password;

    // 无参构造
    public User() {}

    // getter/setter
    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;
    }
}

2. 登录表单页面(login.jsp)

前端展示页面,提供输入框和提交功能,内置基础校验提示。

jsp 复制代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>用户登录</title>
    <style>
        .login-box{width: 300px;margin: 100px auto;}
        .tips{color: red;}
    </style>
</head>
<body>
    <div class="login-box">
        <h2>用户登录</h2>
        <%
            // 获取登录失败提示信息
            String msg = (String) request.getAttribute("msg");
            if(msg != null){
        %>
            <p class="tips"><%=msg%></p>
        <% } %>

        <form action="loginServlet" method="post">
            <p>用户名:<input type="text" name="username" placeholder="请输入用户名"></p>
            <p>密&nbsp;&nbsp;&nbsp;码:<input type="password" name="password" placeholder="请输入密码"></p>
            <p><button type="submit">登录</button></p>
        </form>
    </div>
</body>
</html>

3. 登录处理Servlet(LoginServlet.java)

核心处理逻辑,接收参数、校验数据、判断登录状态。

java 复制代码
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;

@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 设置编码格式,解决中文乱码
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");

        // 1. 获取前端提交的参数
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        // 2. 非空校验
        if(username == null || username.trim().equals("") || password == null || password.trim().equals("")){
            request.setAttribute("msg", "用户名和密码不能为空!");
            request.getRequestDispatcher("login.jsp").forward(request, response);
            return;
        }

        // 3. 登录验证(模拟数据库数据)
        if("admin".equals(username) && "123456".equals(password)){
            // 登录成功,将用户信息存入session
            request.getSession().setAttribute("loginUser", username);
            response.sendRedirect("index.jsp");
        }else{
            // 登录失败,返回提示
            request.setAttribute("msg", "用户名或密码错误!");
            request.getRequestDispatcher("login.jsp").forward(request, response);
        }
    }
}

4. 登录成功主页(index.jsp)

登录成功后跳转页面,展示欢迎信息和退出功能。

jsp 复制代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>首页</title>
</head>
<body>
    <h2>欢迎您,<%=session.getAttribute("loginUser")%>,登录成功!</h2>
    <p><a href="login.jsp">退出登录</a></p>
</body>
</html>

五、代码说明与运行流程

  1. 编码处理 :Servlet中设置UTF-8编码,解决前端提交中文参数乱码问题;
  2. 数据获取 :通过request.getParameter()获取表单提交的用户名和密码;
  3. 非空校验:过滤空字符串和纯空格输入,提升数据合法性;
  4. 登录验证:采用固定账号密码模拟校验,实际开发可替换为数据库查询;
  5. 状态传递 :失败信息通过request作用域转发,登录状态通过session作用域保存;
  6. 页面跳转:成功使用重定向,失败使用请求转发,保证提示信息正常展示。

六、运行测试

  1. 将项目部署到Tomcat服务器,启动服务;
  2. 访问http://localhost:8080/项目名/login.jsp打开登录页;
  3. 测试场景:
    • 空值提交:提示「用户名和密码不能为空」;
    • 错误账号:提示「用户名或密码错误」;
    • 正确账号(admin/123456):跳转首页,显示欢迎信息。

七、总结

本案例完整实现了JSP用户登录与数据校验功能,覆盖了Java Web开发中前端交互、参数接收、数据校验、作用域传值、页面跳转等核心知识点。代码结构清晰、逻辑简单易懂,适合新手快速掌握JSP基础开发流程,可在此基础上扩展数据库连接、验证码、加密等进阶功能。

海量精选技术文档和实战案例持续更新,敬请关注【风骏时光少年】

相关推荐
考虑考虑9 小时前
Mybatis实现批量插入
java·后端·mybatis
咖啡八杯10 小时前
GoF设计模式——中介者模式
java·后端·spring·设计模式
青石路13 小时前
记一次多JDK版本问题的排查,一坑套一坑,差点没爬上来
java
像我这样帅的人丶你还16 小时前
Java 后端详解(五):Redis 缓存
java·后端·全栈
plainGeekDev18 小时前
GreenDAO → Room
android·java·kotlin
亦暖筑序1 天前
Java 8老系统AI Workflow实战:把一次性AI对话升级成可恢复工作流
java·后端
敲代码的彭于晏1 天前
Bean 生命周期完全图解:前端同学也能看懂的 Spring 核心机制
java·前端·后端
plainGeekDev1 天前
ButterKnife → ViewBinding
android·java·kotlin
像我这样帅的人丶你还2 天前
Java 后端详解(四):分页与搜索
java·javascript·后端
她的男孩2 天前
数据权限为什么不能只靠注解?Forge 的 Mapper 层 SQL 改写源码拆解
java·后端·架构