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基础开发流程,可在此基础上扩展数据库连接、验证码、加密等进阶功能。

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

相关推荐
灯澜忆梦21 分钟前
GO_并发编程---定时器
开发语言·后端·golang
鱟鲥鳚34 分钟前
Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)
java·spring boot
-银雾鸢尾-42 分钟前
C#中的StringBuilder相关方法
开发语言·c#
-银雾鸢尾-1 小时前
C#中结构体与类的区别;抽象类与接口的区别
开发语言·c#
大模型码小白2 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
腾渊信息科技公司3 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求
爱笑的源码基地4 小时前
高并发 Redis 缓存门诊HIS系统源码,含财务统计药房进销存
java·程序·门诊系统·诊所系统·云诊所源码
wuqingshun3141594 小时前
TCP超时重传机制是为了解决什么问题?
java
段一凡-华北理工大学4 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
Ljwuhe4 小时前
C++——多态
开发语言·c++