jsp基础教程实战案例:Servlet整合登录系统开发,附代码详解与调试技巧

admin javascript教程 3


学了 JSP 基础语法,想做个实际项目却卡壳的朋友,是不是有这样的经历?想做个登录系统,表单提交后没反应;好不容易让 Servlet 接收到数据,却总报 “找不到类” 的错误;登录逻辑写好了,用户名密码输对了还是跳转到错误页面,排查半天找不到原因?别着急,今天兔子哥就带大家做个 Servlet 整合 JSP 的登录系统实战案例,从页面设计到逻辑处理,附详细代码和调试技巧,哪怕你是刚学 Servlet 的新手,跟着练也能成功跑通,一起往下看吧!

一、先搞懂:登录系统核心组成,这 3 部分一个都不能少


一个基础的登录系统看似简单,其实得有明确的分工。就像饭店里前台点餐、后厨做菜、服务员送菜一样,每个部分干好自己的活,系统才能顺畅运行。核心组成有这三个:

1. 登录页面(JSP):用户输入账号密码的地方


这部分用 JSP 写,主要是个表单,让用户输入用户名和密码,点 “登录” 按钮后把数据提交给 Servlet 处理。就像你去银行填单,表单就是你填信息的单子。

2. 处理 Servlet:验证账号密码的 “大脑”


Servlet 负责接收表单数据,判断用户名密码是否正确(这里先用固定账号演示,后面可以连数据库)。相当于银行柜员核对你填的信息对不对。

3. 成功 / 失败页面(JSP):登录结果展示


如果账号密码对了,跳转到成功页面;错了就显示失败提示。就像柜员告诉你 “办理成功” 还是 “信息有误”。
网友小王分享:“我第一次做登录系统时,少了 Servlet 和 JSP 的关联配置,表单提交后一直 404,后来才知道得在 web.xml 里配路径,原来这三个部分得串起来才行!”

二、实战步骤:从 0 到 1 做登录系统,代码一步步写


咱们按 “页面→Servlet→配置→测试” 的顺序来,每一步都有详细代码,跟着敲就行。

1. 写登录页面(login.jsp):让用户能输入信息


新建 login.jsp 文件,放在 WebContent 目录下,代码这样写:
jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>登录

用户登录

用户名:

密码:


这里要注意:action属性填的是 Servlet 的映射路径(后面会配置),name属性要和 Servlet 里接收的参数名一致,不然数据传不过去。

2. 写 Servlet 处理类(LoginServlet.java):验证账号密码


在 src 目录下建个包(比如 com.servlet),新建 LoginServlet 类,继承 HttpServlet:
java
package com.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;// 注解配置映射路径,和表单action对应@WebServlet("/LoginServlet")public class LoginServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 设置编码,避免中文乱码request.setCharacterEncoding("UTF-8");// 接收表单数据String username = request.getParameter("username");String password = request.getParameter("password");// 简单验证:假设正确账号是admin,密码123456if ("admin".equals(username) && "123456".equals(password)) {// 登录成功,跳转到success.jspresponse.sendRedirect("success.jsp");} else {// 登录失败,跳转到fail.jspresponse.sendRedirect("fail.jsp");}}}

这段代码的逻辑很简单:接收表单的用户名密码,和预设的 admin/123456 比对,对了跳成功页,错了跳失败页。注意@WebServlet("/LoginServlet")里的路径要和表单action一致。

3. 写成功 / 失败页面:给用户反馈结果


新建 success.jsp:
jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

登录成功!欢迎回来,<%= request.getParameter("username") %>


新建 fail.jsp:
jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

登录失败!用户名或密码错误

返回登录页

成功页面可以显示登录的用户名,失败页面给个返回链接,方便用户重新输入。

4. 配置 Tomcat,部署运行


把项目部署到 Tomcat,启动服务器后,浏览器输 “http://localhost:8080/项目名 /login.jsp”,输入 admin 和 123456,点登录,就能跳转到成功页面啦!

三、调试技巧:这些错误新手常犯,这样解决超简单


1. 表单提交后 404 错误:找不到 Servlet


这是最常见的错,多半是路径没配对。解决步骤:
  • 检查表单action的值和 Servlet 的@WebServlet路径是否一致,比如都要是 “LoginServlet”(大小写敏感);
  • 看看 Servlet 类有没有放在 src 目录下,包名是否正确;
  • 重新部署项目,有时候 Tomcat 没更新 class 文件也会这样。

网友小李说:“我之前把 action 写成了‘loginServlet’(小写 L),Servlet 里是‘LoginServlet’,一直 404,改完大小写就好了,原来路径区分大小写!”

2. 中文乱码:用户名显示问号或乱码


表单提交中文时容易乱码,在 Servlet 的 doPost 方法开头加这句:
java
request.setCharacterEncoding("UTF-8");

如果还乱码,在 JSP 头部加<%@ page pageEncoding="UTF-8" %>,确保前后端编码一致。

3. 登录成功后获取不到用户名:参数为 null


success.jsp 里用request.getParameter("username")获取不到值?因为用了response.sendRedirect跳转,这种跳转是重定向,参数不会带过去。解决办法:
  • 改用请求转发:request.getRequestDispatcher("success.jsp").forward(request, response);
  • 转发能保留 request 参数,success.jsp 就能拿到用户名了,但要注意转发路径是相对路径。

4. 启动 Tomcat 时报 “类找不到”


可能是 Servlet-api.jar 没导入。在项目的 WebContent/WEB-INF/lib 目录下,添加 Tomcat 的 lib 里的 servlet-api.jar,或者在 IDE 里关联 Tomcat 依赖,这样编译时就不会缺类了。

四、优化小技巧:让登录系统更完善


1. 加表单验证:避免空提交


在 login.jsp 里加简单的 JS 验证,用户没输用户名密码就提示:
jsp

这样用户没填内容点登录,会弹出提示,不用提交到 Servlet 再判断。

2. 用数据库存账号密码:更贴近实际


现在是固定账号,实际项目中得连数据库。可以用 JDBC 连接 MySQL,在 Servlet 里查数据库验证,步骤:
  • 导入 MySQL 驱动 jar 包;
  • 写 JDBC 代码查询用户表:select * from user where username=? and password=?
  • 根据查询结果判断登录成功与否。

网友小张分享:“我把固定账号改成查数据库后,感觉项目一下子‘活’了,更像真实的系统了,特有成就感!”

兔子哥的小建议


做 Servlet 整合 JSP 的项目,关键是理清 “数据流向”:用户在 JSP 填数据→表单提交给 Servlet→Servlet 处理数据→跳转回 JSP 显示结果。每一步都要检查数据是否正确传递,路径是否配置对。
调试时多看看 Tomcat 的控制台,报错信息里会告诉你哪行代码出了问题,比如 “NullPointerException” 可能是没获取到表单参数,“SQLException” 可能是数据库连接错了。别害怕报错,解决一个错误就多一份经验。
刚开始可以先用固定账号练手,跑通流程后再连数据库,一步步进阶。这个登录系统虽然简单,但包含了 JSP 表单、Servlet 处理、页面跳转的核心逻辑,学会了能为后面做注册、购物车等功能打基础。
希望这个实战案例能帮你搞懂 JSP 和 Servlet 怎么配合干活,多动手敲代码、调错误,你会发现整合开发没那么难,加油哦!

标签: contentType 数据库

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~