Tomcat 是什么?有什么用?(简述)
Tomcat 是什么?有什么用?(简述)

Tomcat 是一个 Java Web 服务器,也是一个 Servlet 容器。它负责接收 HTTP 请求、管理连接和线程,并把请求转交给 Web 应用处理。
例如,当用户在浏览器中访问:
http://localhost:8080/user/list
这个请求并不是直接进入 Controller,而是先被 Tomcat 接收和解析,然后再交给 Spring MVC 等 Web 框架处理。
Tomcat 的主要职责
- 监听端口,例如
8080。 - 接收浏览器或客户端发来的 HTTP 请求。
- 建立和管理 TCP 连接。
- 解析 HTTP 请求内容。
- 封装
HttpServletRequest和HttpServletResponse对象。 - 维护线程池,分配线程处理请求。
- 把请求转交给 Web 应用。
- 把 Web 应用生成的响应返回给客户端。
请求执行流程
第一步:客户端建立 TCP 连接
浏览器或客户端会先和服务器建立 TCP 连接:
用户 socket <---- TCP 连接 ----> Tomcat socket
Tomcat 会监听指定端口,例如:
8080
所以当用户访问下面的地址时,Tomcat 就能接收到请求:
http://服务器IP:8080
第二步:监听线程接收请求
Tomcat 内部会有专门的线程监听端口,等待新的 HTTP 请求进入。
例如客户端发送:
GET /user/list HTTP/1.1
Host: localhost:8080
Tomcat 会先接收这个请求,并把它交给后续组件处理。
第三步:请求进入工作线程池
Tomcat 不会为每一个请求无限创建新线程,而是维护一个工作线程池。
请求进入后的处理方式大致如下:
监听线程接收请求
↓
交给工作线程池中的某个线程
↓
工作线程负责处理这个请求
使用线程池的好处:
- 提高并发处理能力。
- 避免频繁创建和销毁线程。
- 防止请求过多时无限创建线程导致服务器资源耗尽。
第四步:封装 request 和 response
Tomcat 会把 HTTP 请求解析并封装成 Java 对象:
HttpServletRequest request;
HttpServletResponse response;
例如用户请求中带有参数:
/user?id=1001
在 Controller 中可以通过 request 获取参数:
request.getParameter("id");
response 则用于把处理结果写回给客户端:
response.getWriter().write("hello");
第五步:转交给 Web 应用
Tomcat 接收到请求并完成基础封装后,会把请求交给 Web 应用处理。
一个常见的 Spring Web 应用结构如下:
Controller
↓
Service
↓
DAO / Mapper
以 /user/list 为例,请求处理流程可以理解为:
请求 /user/list
↓
Tomcat 接收请求
↓
Tomcat 解析 HTTP 请求
↓
Tomcat 封装 request / response
↓
交给 Spring MVC
↓
找到对应的 Controller 方法
↓
执行业务逻辑并返回响应
Spring Boot 中的 Tomcat
在 Spring Boot 项目中,Tomcat 通常以内嵌服务器的形式存在。我们启动 Spring Boot 应用时,底层会自动启动 Tomcat,并由它负责监听端口和处理 HTTP 请求。
所以平时写业务代码时虽然很少直接操作 Tomcat,但每一次接口请求都会经过 Tomcat。
总结
Tomcat 可以理解为 Java Web 应用和外部 HTTP 请求之间的入口。它主要负责接收请求、分配线程、封装请求响应对象,并把请求交给真正的业务应用处理。
更多推荐




所有评论(0)