基于 Servlet 实现用户登录功能开发实践

举报
yd_280964324 发表于 2026/11/03 10:04:13 2026/11/03
【摘要】 一、实验目的:理解 Servlet 接收表单参数、处理 POST 请求的流程;掌握 HttpServletRequest、HttpServletResponse 对象常用 API;学会解决表单提交中文乱码;熟悉前端表单页面与 Servlet 后端接口联调;完成简易用户登录接口开发、功能测试与异常处理。二、实验环境:操作系统 Windows11,开发工具 IDEA2024,服务器 Apache To

一、实验目的

  1. 理解 POST 表单提交的数据流转过程,掌握 Servlet 接收前端表单参数的方法。
  2. 熟练使用 HttpServletRequest 获取请求参数、HttpServletResponse 输出响应信息。
  3. 掌握请求编码设置,解决表单提交时中文乱码问题。
  4. 理解简单登录校验逻辑,完成前端表单页面和后端 Servlet 接口联调测试。
  5. 熟悉注解方式@WebServlet配置 Servlet 访问路径,掌握项目部署访问方式。

二、实验环境

  • 操作系统:Windows11
  • 开发工具:IDEA 2024
  • 服务器:Apache Tomcat 9.0
  • 项目依赖:Servlet-api
  • 浏览器:Chrome

三、实验原理

Servlet 是 JavaWeb 运行在服务端的组件,遵循 HTTP 请求 - 响应模型。 前端 HTML 表单设置method="post"提交数据,表单参数放在请求体中发送给 Tomcat;Tomcat 匹配@WebServlet注解对应的 Servlet,调用doPost()方法处理请求。 HttpServletRequest用于读取请求参数、设置请求编码;HttpServletResponse用于设置响应编码、向浏览器输出返回结果。 登录逻辑:获取表单输入的用户名、密码,和预设账号比对,匹配成功返回登录成功信息,失败返回错误提示。

中文乱码原理:POST 请求默认使用 ISO-8859-1 编码,需要在获取参数前设置request.setCharacterEncoding("utf-8");响应输出时设置response.setContentType("text/html;charset=utf-8")保证页面正常显示中文。

四、实验步骤

步骤 1:准备 Web 项目,导入 Servlet 依赖

在 IDEA 中创建 Java Enterprise Web Application 项目,配置本地 Tomcat9.0,将servlet-api.jar放到WEB-INF/lib目录并添加库引用,保证 Servlet 相关类可以正常导入。

步骤 2:编写前端登录表单页面 login.html

在 web 目录下新建 login.html,编写表单,提交地址为/loginServlet,提交方式 POST,包含用户名、密码输入框与提交按钮。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>用户登录</title>
</head>
<body>
    <form action="loginServlet" method="post">
        用户名:<input type="text" name="username"><br>
        密码:<input type="password" name="password"><br>
        <input type="submit" value="登录">
    </form>
</body>
</html>

步骤 3:编写 LoginServlet 后端核心代码

新建LoginServlet.java,使用@WebServlet("/loginServlet")配置访问路径,重写doPost()方法:设置编码、获取参数、登录校验、输出响应。

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;
import java.io.PrintWriter;

@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 设置请求编码,解决POST中文乱码
        request.setCharacterEncoding("utf-8");
        // 设置响应类型和编码
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();

        // 获取表单参数
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        // 简单登录校验
        if ("admin".equals(username) && "123456".equals(password)){
            out.write("<h3>登录成功!欢迎你:"+username+"</h3>");
        }else{
            out.write("<h3>登录失败!用户名或密码错误</h3>");
        }
        out.close();
    }
}

步骤 4:配置 Tomcat 启动项,部署项目

打开 IDEA 运行配置,选择 Tomcat Server,设置应用上下文路径,将当前 Web 项目添加到部署工件,保存配置。

步骤 5:启动服务,功能测试

启动 Tomcat,浏览器访问 http://localhost:8080/项目名/login.html

  1. 输入正确账号:admin,密码 123456,提交,查看登录成功页面;
  2. 输入错误账号密码,提交,查看登录失败提示;
  3. 输入中文用户名,测试中文是否不会乱码。

五、实验结果

  1. 成功打开登录表单页面,表单可以正常提交;
  2. 账号密码正确时,后端返回登录成功提示;账号密码错误,返回登录失败;
  3. 设置编码后,提交中文参数不会出现乱码;
  4. 控制台无报错,Tomcat 正常接收并处理 POST 请求。

六、实验总结

本次实验基于 Servlet 完成简单用户登录接口开发,掌握了 POST 表单数据的接收方式,理解了request和response对象的作用。 重点掌握了 POST 请求中文乱码解决方案:一定要在 getParameter 之前设置 request 编码,这是很容易踩坑的点。 同时熟悉了注解方式开发 Servlet,相比 web.xml 配置更加简洁。 不足之处:当前账号密码写死在代码中,没有对接数据库;后续可以结合 JDBC 读取数据库用户表,完善登录功能,也可以增加验证码、Session 保存登录状态等功能。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。