Servlet 3.0 与 JSP 2.3 实战:5分钟构建一个带登录验证的简易留言板 📅 2026/7/6 11:42:38 Servlet 3.0 与 JSP 2.3 实战5分钟构建一个带登录验证的简易留言板在JavaWeb开发中Servlet和JSP是最基础也最核心的技术组合。本文将带你快速实现一个功能完整的留言板系统涵盖用户登录、留言发布和列表展示三大核心功能模块。通过这个实战项目你不仅能掌握Servlet的生命周期、请求处理流程还能深入理解JSP与EL表达式的配合使用。1. 项目环境准备首先确保你的开发环境已配置以下组件JDK 1.8Java开发基础环境Tomcat 9Servlet容器Maven项目管理工具推荐IDEEclipse/IntelliJ IDEA创建Maven项目时需在pom.xml中添加Servlet和JSP依赖dependencies !-- Servlet API -- dependency groupIdjavax.servlet/groupId artifactIdjavax.servlet-api/artifactId version3.1.0/version scopeprovided/scope /dependency !-- JSP API -- dependency groupIdjavax.servlet.jsp/groupId artifactIdjavax.servlet.jsp-api/artifactId version2.3.3/version scopeprovided/scope /dependency !-- JSTL -- dependency groupIdjavax.servlet/groupId artifactIdjstl/artifactId version1.2/version /dependency /dependencies2. 用户登录模块实现用户认证是Web应用的基础安全机制。我们使用Session来保持登录状态WebServlet(/login) public class LoginServlet extends HttpServlet { // 模拟用户数据库 private static final MapString, String USER_DB Map.of( admin, 123456, user, password ); protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String username req.getParameter(username); String password req.getParameter(password); if(USER_DB.containsKey(username) USER_DB.get(username).equals(password)) { // 登录成功创建Session HttpSession session req.getSession(); session.setAttribute(user, username); resp.sendRedirect(message.jsp); } else { req.setAttribute(error, 用户名或密码错误); req.getRequestDispatcher(login.jsp).forward(req, resp); } } }对应的login.jsp页面关键代码form actionlogin methodpost input typetext nameusername placeholder用户名 required input typepassword namepassword placeholder密码 required button typesubmit登录/button span stylecolor:red${error}/span /form3. 留言功能实现留言功能涉及表单提交和数据处理我们创建一个MessageServletWebServlet(/message) public class MessageServlet extends HttpServlet { // 使用List模拟数据存储 private static final ListMessage messages new CopyOnWriteArrayList(); protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setAttribute(messages, messages); req.getRequestDispatcher(message.jsp).forward(req, resp); } protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { HttpSession session req.getSession(false); if(session null || session.getAttribute(user) null) { resp.sendRedirect(login.jsp); return; } String content req.getParameter(content); String user (String) session.getAttribute(user); messages.add(new Message(user, content, new Date())); resp.sendRedirect(message); } // 简单的消息实体类 public static class Message { private final String author; private final String content; private final Date createTime; // 构造方法和getter省略... } }在message.jsp中展示留言列表% taglib prefixc urihttp://java.sun.com/jsp/jstl/core % !-- 留言表单 -- form actionmessage methodpost textarea namecontent required/textarea button typesubmit发布留言/button /form !-- 留言列表 -- ul c:forEach items${messages} varmsg li strong${msg.author}/strong - span${msg.createTime}/span p${msg.content}/p /li /c:forEach /ul4. 会话管理与安全控制为确保只有登录用户才能发布留言我们实现一个过滤器WebFilter(/*) public class AuthFilter implements Filter { public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request (HttpServletRequest) req; HttpServletResponse response (HttpServletResponse) res; String path request.getRequestURI().substring(request.getContextPath().length()); // 放行登录相关资源和静态资源 if(path.startsWith(/login) || path.contains(.css) || path.contains(.js)) { chain.doFilter(request, response); return; } HttpSession session request.getSession(false); if(session null || session.getAttribute(user) null) { response.sendRedirect(request.getContextPath() /login.jsp); return; } chain.doFilter(request, response); } }5. 项目部署与测试将项目打包为WAR文件部署到Tomcat使用Maven打包mvn clean package将生成的target/*.war文件复制到Tomcat的webapps目录启动Tomcat服务器访问http://localhost:8080/your-project-name/login.jsp测试流程使用admin/123456或user/password登录在留言页面发布新留言刷新页面查看留言列表尝试直接访问message.jsp验证过滤器是否生效这个简易留言板虽然功能简单但完整实现了JavaWeb开发的核心技术栈。你可以在此基础上扩展用户注册、留言分页、内容过滤等功能逐步完善成为一个完整的Web应用。