JSP入门教程实战:Servlet结合案例+项目部署步骤,自学30天掌握核心技能

admin javascript教程 14


是不是学了 JSP 基础后总卡在 “怎么让网页动起来”?写了 JSP 页面却不知道怎么处理用户输入,Servlet 代码写了一堆却和 JSP 接不上,好不容易做完项目,部署到服务器又报错?其实啊,JSP 实战的核心是 “JSP+Servlet” 配合,加上正确的部署步骤,自学 30 天完全能掌握。今天兔子哥就带大家从 Servlet 基础到项目部署,每天一个小目标,结合实战案例讲透关键技能,新手常问的 “Servlet 怎么用”“项目怎么上线” 这些问题,咱们一个个说清楚,一起往下看吧!

先搞懂:Servlet 到底是什么?为啥和 JSP 是 “黄金搭档”?


基础问题:Servlet 和 JSP 的关系是什么?


简单说,JSP 更像 “前台”,负责显示网页内容;Servlet 像 “后台”,负责处理数据、接收请求。比如用户登录时,JSP 显示登录表单,用户提交后,Servlet 验证账号密码,再把结果告诉 JSP 显示。两者分工明确,比单独用 JSP 写逻辑清爽多了。

场景问题:哪些功能必须用 Servlet?不用会怎样?


  • 用户登录、注册(需要验证数据,不能直接在 JSP 里写逻辑);
  • 处理表单提交(接收用户输入,比如查询条件、订单信息);
  • 数据库交互(查数据、存数据,放 Servlet 里更安全)。
    不用 Servlet 的话,JSP 里会塞满 Java 代码,又乱又难维护,改个逻辑得翻半天页面代码。有个粉丝之前在 JSP 里写登录验证,后来想加验证码功能,改得头都大了,换成 Servlet 后,逻辑清晰多了。

解决方案:零基础怎么学 Servlet?从哪开始练?


从简单的 “接收请求 - 处理 - 转发” 流程开始,先不用连数据库,练会数据传递再说。推荐用 Eclipse 或 IDEA,这些工具能自动生成 Servlet 模板,减少手写代码的错误。

30 天自学计划:从基础到部署,每天进步一点点


按 “基础→结合→实战→部署” 分四阶段,每天 1-2 小时,节奏刚好不费力。
阶段天数核心目标每天任务
基础阶段1-7 天搞定 Servlet 基础语法写 2 个 Servlet 小案例,练请求处理
结合阶段8-15 天练 JSP+Servlet 数据传递做登录、查询功能,练转发 / 重定向
实战阶段16-23 天做完整小项目(带数据库)每天加 1 个功能,比如增删改查
部署阶段24-30 天学本地和服务器部署练打包、上传、调试步骤

第一阶段(1-7 天):Servlet 基础,先会 “处理请求”


Servlet 的核心是处理用户请求,这阶段重点练怎么接收参数、返回数据。

第 3 天案例:写个简单的 Servlet,接收表单数据


需求:JSP 页面有个表单,输入姓名后提交,Servlet 接收并显示欢迎语。
步骤 1:写表单 JSP(form.jsp)
jsp
请输入姓名:

步骤 2:写 Servlet 处理请求(WelcomeServlet.java)
java
import java.io.*;import javax.servlet.*;import javax.servlet.annotation.WebServlet;import javax.servlet.http.*;// 注解配置访问路径,不用改web.xml@WebServlet("/WelcomeServlet")public class WelcomeServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 设置编码,避免中文乱码request.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=UTF-8");// 接收表单参数String username = request.getParameter("username");// 处理数据(这里简单拼接欢迎语)String msg = "欢迎你," + username + "!这是Servlet处理的结果";// 把结果返回给页面PrintWriter out = response.getWriter();out.println("

"

+ msg + "");out.println("返回");}}

运行步骤
  1. Eclipse 里右键项目→Run As→Run on Server,选 Tomcat;
  2. 浏览器访问http://localhost:8080/项目名/form.jsp,输入姓名提交,就能看到 Servlet 返回的欢迎语。

避坑点:Servlet 类名别写错,@WebServlet里的路径要和表单action一致,不然提交后会报 404 错误。有个粉丝把路径写成/welcomeServlet(小写 w),表单里是大写 W,结果找不到 Servlet,改一致就好了。

第二阶段(8-15 天):JSP+Servlet 结合,练数据传递


这阶段学 Servlet 处理数据后,怎么把结果传给 JSP 显示,重点练 “请求转发”。

第 10 天案例:登录功能(Servlet 处理 + JSP 显示结果)


需求:用户输账号密码,Servlet 验证,JSP 显示登录成功或失败。
步骤 1:登录表单(login.jsp)
jsp
账号:
密码:

步骤 2:Servlet 验证(LoginServlet.java)
java
@WebServlet("/LoginServlet")public class LoginServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("UTF-8");// 接收参数String user = request.getParameter("user");String pwd = request.getParameter("pwd");// 简单验证(实际项目查数据库)String result;if ("admin".equals(user) && "123456".equals(pwd)) {result = "登录成功!欢迎管理员";} else {result = "账号或密码错误,请重新输入";}// 把结果存到请求域,传给JSPrequest.setAttribute("loginResult", result);// 请求转发到result.jsp显示结果request.getRequestDispatcher("result.jsp").forward(request, response);}}

步骤 3:结果显示 JSP(result.jsp)
jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%= request.getAttribute("loginResult") %>

返回登录

关键技巧:用request.setAttribute存数据,JSP 里用request.getAttribute取,这是 JSP 和 Servlet 传递数据的常用方式。转发后地址栏不变,用户体验更好。

第三阶段(16-23 天):实战小项目,带数据库增删改查


做个 “学生信息管理” 小项目,把 Servlet、JSP、数据库结合起来,每天加一个功能。

第 20 天功能:查询学生列表(Servlet 查库 + JSP 显示)


步骤 1:Servlet 查数据库(StudentListServlet.java)
java
@WebServlet("/StudentListServlet")public class StudentListServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {List<Student> students = new ArrayList<>();// 连接数据库查数据(简化版,实际用JDBC工具类)Connection conn = null;Statement stmt = null;ResultSet rs = null;try {Class.forName("com.mysql.cj.jdbc.Driver");conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/school?serverTimezone=UTC","root", "123456");stmt = conn.createStatement();rs = stmt.executeQuery("SELECT id, name, age FROM student");// 封装数据到Listwhile (rs.next()) {Student s = new Student();s.setId(rs.getInt("id"));s.setName(rs.getString("name"));s.setAge(rs.getInt("age"));students.add(s);}} catch (Exception e) {e.printStackTrace();} finally {// 关闭连接(省略)}// 数据传给JSPrequest.setAttribute("students", students);request.getRequestDispatcher("student_list.jsp").forward(request, response);}}

步骤 2:JSP 显示列表(student_list.jsp)
jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ page import="java.util.List" %><%@ page import="com.example.Student" %>

学生列表

<%List students = (List) request.getAttribute("students");if (students != null) {for (Student s : students) {%><%}}%>
学号姓名年龄
<%= s.getId() %><%= s.getName() %><%= s.getAge() %>

粉丝心得:“刚开始不会传对象列表,后来发现 Servlet 里存List,JSP 里强转后循环就行,原来没那么难!”

第四阶段(24-30 天):项目部署,从本地到服务器


做好的项目得部署才能让别人访问,这阶段学打包和部署步骤。

本地部署:打 WAR 包,放到 Tomcat 运行


步骤
  1. Eclipse 里右键项目→Export→WAR file,选保存路径;
  2. 把生成的项目名.war复制到 Tomcat 的webapps文件夹;
  3. 启动 Tomcat,它会自动解压 WAR 包;
  4. 浏览器访问http://localhost:8080/项目名,和在 IDE 里运行效果一样。

服务器部署:上传到云服务器(以阿里云为例)


步骤
  1. 买个云服务器(新手选 CentOS 系统,配 Tomcat 和 MySQL);
  2. 用 Xshell 连接服务器,把 WAR 包传到/usr/local/tomcat/webapps
  3. 启动 Tomcat:/usr/local/tomcat/bin/startup.sh
  4. 浏览器访问http://服务器公网IP:8080/项目名,搞定!

避坑点:服务器要开放 8080 端口(阿里云安全组里配置),不然访问不了;数据库连接 URL 里的localhost要改成服务器 IP,用户名密码和服务器 MySQL 一致。有个粉丝部署后查不到数据,发现是数据库没在服务器上启动,启动 MySQL 后就好了。

新手常问的 3 个实战问题,兔子哥来解答


1. Servlet 里中文乱码怎么办?


两种编码都要设!request.setCharacterEncoding("UTF-8")(接收数据)和response.setContentType("text/html;charset=UTF-8")(返回数据),少一个都会乱码。表单methodpostget方式乱码要改 Tomcat 配置,新手先优先用post

2. 怎么区分请求转发和重定向?


  • 转发request.getRequestDispatcher().forward(),地址栏不变,能传request数据,适合显示结果页;
  • 重定向response.sendRedirect(),地址栏变,不能传request数据,适合登录后跳首页(避免刷新重复提交)。
    简单记:显示结果用转发,跳转页面用重定向。

3. 项目部署后找不到 Servlet?


检查@WebServlet路径是否带/(比如/LoginServlet),WAR 包是否解压成功(看 webapps 里有没有项目文件夹),服务器 Tomcat 版本是否和本地一致(尽量都用 8.5 版)。

粉丝实战反馈:从 “不会结合” 到 “能部署项目”


小张是个上班族,利用晚上时间自学,他说:“前 10 天总搞不懂 Servlet 怎么传数据,后来练了登录案例,突然就明白了setAttributegetAttribute的用法。第 25 天第一次把项目部署到服务器,用手机访问自己做的页面,激动得睡不着!现在这个学生管理项目还能帮班级统计数据,特有成就感。”
最后说点个人心得吧。JSP 实战的关键不是背语法,是练 “JSP 负责显示,Servlet 负责逻辑” 的分工思维。30 天计划里,前两周打基础别着急,中间两周结合案例多动手改代码,最后一周部署多试几次,哪怕失败也别怕,服务器报错信息里藏着答案。兔子哥刚开始部署时,因为端口没开放折腾了一下午,现在部署新项目半小时就能搞定。按这个计划坚持下去,你会发现自己不仅能写功能,还能把项目上线给别人用,这种从 0 到 1 的成就感,就是学习的最大动力,加油!

标签: 解决方案 黄金搭档

发布评论 0条评论)

  • Refresh code

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