目录
[一、什么是 Tomcat?](#一、什么是 Tomcat?)
[二、Tomcat 能做什么?](#二、Tomcat 能做什么?)
[三、Tomcat 与 Web 应用的关系](#三、Tomcat 与 Web 应用的关系)
[四、Tomcat 的核心组件](#四、Tomcat 的核心组件)
[1. Connector(连接器)](#1. Connector(连接器))
[2. Container(容器体系)](#2. Container(容器体系))
[3. Servlet 容器](#3. Servlet 容器)
[五、Tomcat 的请求处理流程](#五、Tomcat 的请求处理流程)
[六、Tomcat 与 Spring Boot 的关系](#六、Tomcat 与 Spring Boot 的关系)
[1. 传统方式](#1. 传统方式)
[2. Spring Boot 方式](#2. Spring Boot 方式)
[七、Tomcat 与其他服务器对比](#七、Tomcat 与其他服务器对比)
[八、Tomcat 的线程模型](#八、Tomcat 的线程模型)
[九、Tomcat 常见配置项](#九、Tomcat 常见配置项)
[1. Tomcat ≠ Web 服务器](#1. Tomcat ≠ Web 服务器)
[2. Tomcat 不等于 Spring](#2. Tomcat 不等于 Spring)
在 Java Web 开发中,只要涉及到 Web 项目,Tomcat 几乎是绕不开的组件 。
无论是传统的 Spring MVC 项目,还是 Spring Boot 内嵌服务器,本质上都离不开 Tomcat。
一、什么是 Tomcat?
Tomcat 是一个轻量级的 Java Web 容器,由 Apache 基金会维护。
一句话概括:Tomcat 是用来运行 Java Web 应用的服务器。
更准确地说:
- 它实现了 Servlet、JSP 等 Java Web 规范
- 提供 HTTP 请求的接收与处理能力
二、Tomcat 能做什么?
Tomcat 主要负责:
- 监听端口,接收 HTTP 请求
- 创建 Servlet 容器
- 调用 Servlet 处理请求
- 将响应返回给客户端
Tomcat 不处理业务逻辑,只负责请求转发和生命周期管理。
三、Tomcat 与 Web 应用的关系
典型请求流程:
浏览器请求
↓
Tomcat 接收请求
↓
DispatcherServlet
↓
Controller
↓
返回响应
在 Spring MVC 中,Tomcat 是最外层入口。
四、Tomcat 的核心组件
Tomcat 的整体架构可以简化为:
TypeScript
Server
└── Service
├── Connector
└── Engine
└── Host
└── Context
1. Connector(连接器)
- 负责监听端口
- 接收 HTTP 请求
- 将请求交给容器处理
2. Container(容器体系)
负责 Servlet 的管理和调用,包括:
- Engine:处理多个 Host
- Host:虚拟主机(域名)
- Context:Web 应用
- Wrapper:Servlet
3. Servlet 容器
-
管理 Servlet 生命周期
-
调用 service() 方法
五、Tomcat 的请求处理流程
简化流程如下:
- 客户端发送 HTTP 请求
- Connector 接收请求
- 请求进入 Engine
- 通过 Host 定位应用
- 通过 Context 定位 Servlet
- 调用 Servlet 处理请求
- 返回响应给客户端
六、Tomcat 与 Spring Boot 的关系
1. 传统方式
- 项目打成 WAR 包
- 部署到外部 Tomcat
2. Spring Boot 方式
- 内嵌 Tomcat
- 应用即服务器
- 启动即运行
Spring Boot 默认内嵌 Tomcat。
七、Tomcat 与其他服务器对比
| 对比 | Tomcat | Jetty | Undertow |
|---|---|---|---|
| 成熟度 | 高 | 高 | 较新 |
| 性能 | 稳定 | 高 | 很高 |
| 易用性 | 高 | 中 | 中 |
| 默认支持 | Spring Boot 默认 | 可选 | 可选 |
八、Tomcat 的线程模型
- 使用线程池处理请求
- 一个请求对应一个线程
- 线程数量可配置
线程数配置直接影响并发能力。
九、Tomcat 常见配置项
- 端口号(server.port)
- 最大线程数
- 连接超时时间
- 最大连接数
十、常见误区
1. Tomcat ≠ Web 服务器
Tomcat 是 Servlet 容器 + HTTP 服务器。
2. Tomcat 不等于 Spring
- Tomcat 是运行环境
- Spring 是开发框架
十一、总结
Tomcat 是 Java Web 应用的运行基础,负责接收请求并驱动整个 Web 请求流程。