Servlet 与 Tomcat 通俗详解:小白也能懂的 “Java Web 底层组合”
Servlet 和 Tomcat 是 Java 开发网站 / 接口的 “黄金搭档”—— 简单说:Tomcat 是 “能跑 Java Web 程序的服务器(容器)”,Servlet 是 “在 Tomcat 里干活的 Java 程序”,二者配合才能让 Java 写的网站、接口被用户访问到。
用生活场景类比:Tomcat 就像 “一家餐厅”,提供场地、接待客人(用户的浏览器 / APP)、管理服务流程;Servlet 就像 “餐厅里的厨师”,专门处理客人的 “点餐需求”(比如用户登录、查询数据),做完后把 “菜品”(响应结果)通过餐厅交给客人。没有 Tomcat,Servlet 就是一段孤立的 Java 代码,没人能访问;没有 Servlet,Tomcat 只是个空架子,没法处理具体业务。
一、先搞懂:Tomcat 到底是什么?
Tomcat 是 Apache 基金会开发的 免费开源 Web 服务器(也叫 Servlet 容器),核心作用就 3 个,用大白话讲:
- “接待” 用户请求:用户在浏览器输入网址(比如
http://localhost:8080/我的网站),Tomcat 会监听 8080 端口,接收到这个请求; - “调度” Servlet 干活:Tomcat 本身不会处理业务逻辑,它会把请求交给对应的 Servlet(比如登录请求交给
LoginServlet,查询数据交给QueryServlet); - “返回” 处理结果:Servlet 处理完后,把结果(比如登录成功的页面、查询到的数据)交给 Tomcat,Tomcat 再把结果返回给用户浏览器,用户就能看到内容了。
另外,Tomcat 还能帮你搞定:
- 多用户同时访问(比如 100 人同时登录网站,Tomcat 会协调资源,不让程序崩);
- 管理 Servlet 的生命周期(比如启动时初始化 Servlet,用完后销毁,不用你手动管);
- 支持 HTTP 协议(浏览器和服务器通信的规则),不用你自己写复杂的网络代码。
简单说:Tomcat 是 “运行环境”,安装好后,把你写的 Servlet 程序放进去,它就能帮你对外提供服务。
二、再明白:Servlet 到底是什么?
Servlet 是 Java 提供的一套 “开发 Web 程序的接口(规范)”—— 你写的 Java 类只要实现这个接口,就成了 Servlet,能被 Tomcat 调用,处理用户请求。
核心特点和作用:
- 本质是 Java 类:不是新语言,就是普通 Java 类,但继承了
HttpServlet(实现了 Servlet 接口的抽象类),多了处理 HTTP 请求的方法; - 专门处理 “请求 - 响应”:用户发请求(比如提交登录表单、访问某个页面),Servlet 负责接收请求数据(比如用户名、密码),调用数据库或业务逻辑处理,再生成响应结果(比如 HTML 页面、JSON 数据);
- “被动干活”:Servlet 自己不会运行,必须靠 Tomcat 启动后,接收请求才会被调用(就像厨师不会主动做饭,得等客人点餐才动手)。
举个最简化的 Servlet 例子(新手能看懂):
java
运行
// 这是一个处理“打招呼”请求的 Servlet
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
// 注解:告诉 Tomcat,这个 Servlet 对应哪个访问路径(比如 /hello)
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
// 处理 GET 请求(比如浏览器直接访问 http://localhost:8080/我的网站/hello)
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1. 接收请求(这里没参数,直接处理)
// 2. 处理业务逻辑(简单返回一句话)
String result = "你好!这是 Servlet 返回的内容~";
// 3. 生成响应,返回给用户
response.getWriter().write(result);
}
}
把这个 Java 类编译后,放到 Tomcat 的
webapps/我的网站/WEB-INF/classes 目录下,启动 Tomcat,在浏览器输入 http://localhost:8080/我的网站/hello,就能看到 “你好!这是 Servlet 返回的内容~”—— 这就是 Servlet 干活的全过程。三、Servlet 与 Tomcat 的配合流程(一步一步看)
用 “用户登录网站” 为例,讲清二者怎么配合:
- 用户操作:用户在浏览器输入
http://localhost:8080/我的网站/login,提交用户名(admin)和密码(123456); - Tomcat 接收请求:Tomcat 监听 8080 端口,接收到这个 POST 请求,解析出访问路径是
/login; - Tomcat 找对应的 Servlet:Tomcat 查看配置(比如注解
@WebServlet("/login")),发现/login对应LoginServlet; - Tomcat 调用 Servlet 处理:Tomcat 创建
HttpServletRequest对象(封装了用户名、密码等请求数据)和HttpServletResponse对象(用于存储响应结果),调用LoginServlet的doPost方法; - Servlet 处理业务:
LoginServlet从HttpServletRequest中获取用户名和密码,调用数据库验证(比如查数据库里有没有 admin/123456),判断登录成功; - Servlet 返回结果:
LoginServlet通过HttpServletResponse生成响应(比如 “登录成功,跳转到首页” 的 HTML 代码),把结果交给 Tomcat; - Tomcat 返回给用户:Tomcat 把响应结果发送给用户浏览器,用户看到登录成功的页面。
四、核心关系总结:谁也离不开谁
| 角色 | 本质 | 核心作用 | 类比 |
|---|---|---|---|
| Tomcat | Web 服务器(Servlet 容器) | 接收请求、调度 Servlet、返回结果、管理运行环境 | 餐厅(场地 + 接待) |
| Servlet | 实现 Servlet 接口的 Java 类 | 接收请求数据、处理业务逻辑、生成响应结果 | 厨师(处理点餐) |
简单说:
- 没有 Tomcat,Servlet 就是 “没人管的厨师”,没法接收用户请求,也没法对外提供服务;
- 没有 Servlet,Tomcat 就是 “空餐厅”,能接待客人,但没人做饭(处理不了业务);
- 二者配合,才能用 Java 开发出能被用户访问的网站、接口。
五、新手入门小提示(不用纠结复杂细节)
- 怎么用?:先安装 Tomcat(官网下载压缩包,解压后双击
bin/startup.bat启动),再用 IDE(比如 IntelliJ IDEA、Eclipse)创建 Java Web 项目,写 Servlet 类,部署到 Tomcat 中,启动后就能通过浏览器访问; - 现在还直接写 Servlet 吗?:现在开发网站 / 接口,更多用 Spring Boot(简化开发),但 Spring Boot 底层还是依赖 Servlet 和 Tomcat(Spring Boot 已经内置了 Tomcat,不用手动安装);
- 核心价值:Servlet 是 Java Web 的 “底层基础”,搞懂它和 Tomcat 的关系,后续学 Spring、Spring Boot 会更轻松,明白 “请求是怎么从浏览器传到程序里的”。
一句话收尾:Servlet 是 “干活的”,Tomcat 是 “提供干活环境和对接用户的”,二者是 Java Web 开发的 “基石组合”~

浙公网安备 33010602011771号