基于 Servlet 实现用户登录功能开发实践
一、实验目的
- 理解 POST 表单提交的数据流转过程,掌握 Servlet 接收前端表单参数的方法。
- 熟练使用 HttpServletRequest 获取请求参数、HttpServletResponse 输出响应信息。
- 掌握请求编码设置,解决表单提交时中文乱码问题。
- 理解简单登录校验逻辑,完成前端表单页面和后端 Servlet 接口联调测试。
- 熟悉注解方式
@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
- 输入正确账号:admin,密码 123456,提交,查看登录成功页面;
- 输入错误账号密码,提交,查看登录失败提示;
- 输入中文用户名,测试中文是否不会乱码。
五、实验结果
- 成功打开登录表单页面,表单可以正常提交;
- 账号密码正确时,后端返回登录成功提示;账号密码错误,返回登录失败;
- 设置编码后,提交中文参数不会出现乱码;
- 控制台无报错,Tomcat 正常接收并处理 POST 请求。
六、实验总结
本次实验基于 Servlet 完成简单用户登录接口开发,掌握了 POST 表单数据的接收方式,理解了request和response对象的作用。 重点掌握了 POST 请求中文乱码解决方案:一定要在 getParameter 之前设置 request 编码,这是很容易踩坑的点。 同时熟悉了注解方式开发 Servlet,相比 web.xml 配置更加简洁。 不足之处:当前账号密码写死在代码中,没有对接数据库;后续可以结合 JDBC 读取数据库用户表,完善登录功能,也可以增加验证码、Session 保存登录状态等功能。
- 点赞
- 收藏
- 关注作者
评论(0)