tomcat概述及其和主要应用服务器的区别

Tomcat 是什么?

一、一句话定义

Tomcat 是一个开源的、轻量级的 Java 应用服务器,专门用来运行 Java ServletJSP(JavaServer Pages)和 WebSocket 等 Java 技术开发的 Web 应用程序。

通俗地说:Tomcat 就是运行 Java Web 程序的环境,就像 PHP 需要 Apache/Nginx、Python 需要 Gunicorn 一样,Java Web 应用需要 Tomcat 才能运行。


二、核心概念

2.1 Tomcat 的本质

维度说明
全称Apache Tomcat(由 Apache 软件基金会开发)
类型Servlet 容器 / Java 应用服务器
主要功能解析并执行 Java Servlet 和 JSP,处理 HTTP 请求
开发语言Java
开源协议Apache License 2.0
官网https://tomcat.apache.org

2.2 通俗比喻

如果你把 Java Web 应用比作一辆汽车:
- Java 代码 = 汽车的发动机(核心动力)
- Tomcat = 汽车的底盘和轮子(让发动机能跑起来)
- Nginx = 公路和交通指挥(把车引导到正确的目的地)
- 浏览器 = 乘客(最终体验的人)

三、Tomcat 能做什么?

3.1 核心功能

功能说明示例
Servlet 容器解析执行 Servlet 代码处理表单提交、用户登录等业务逻辑
JSP 引擎将 JSP 页面编译成 Servlet 执行动态生成 HTML 页面
HTTP 服务器处理 HTTP 请求和响应接收浏览器请求,返回处理结果
WebSocket 支持支持双向通信实时聊天、消息推送
类加载器管理 Web 应用的类和依赖每个应用有独立的类加载环境
会话管理管理用户会话(Session)保持用户登录状态

3.2 典型的请求处理流程

用户请求 http://example.com/login.jsp
                    ↓
Tomcat 接收请求(Connector 组件)
                    ↓
解析请求,找到对应的 JSP 文件
                    ↓
JSP 引擎将 login.jsp 编译成 Servlet 类
                    ↓
执行 Servlet 中的 Java 代码
                    ↓
访问数据库、处理业务逻辑
                    ↓
生成 HTML 响应
                    ↓
Tomcat 将 HTML 返回给浏览器

四、Tomcat 的架构组件

4.1 核心组件结构

Tomcat 服务器
    ├── Service(服务)
    │   ├── Connector(连接器,处理网络连接)
    │   │   ├── HTTP 连接器(处理 HTTP 请求)
    │   │   └── AJP 连接器(与 Apache/Nginx 通信)
    │   └── Engine(引擎)
    │       ├── Host(虚拟主机)
    │       │   ├── Context(Web 应用上下文)
    │       │   │   └── Wrapper(Servlet 包装器)
    │       │   └── Context(另一个 Web 应用)
    │       └── Host(另一个虚拟主机)
    └── Server 全局配置

4.2 各组件作用

组件作用通俗理解
ServerTomcat 实例的顶层容器整个 Tomcat 本身
Service连接器与引擎的组合一个服务单元
Connector接收客户端连接接待员,负责接客
Engine处理所有请求的核心引擎总调度中心
Host虚拟主机,对应一个域名公司里的不同部门
Context一个 Web 应用部门里的具体项目
Wrapper单个 Servlet 的包装项目里的具体员工

五、Tomcat 与其他 Web 服务器的对比

5.1 功能定位对比

服务器类型主要用途擅长领域
TomcatJava 应用服务器运行 Java Web 应用Servlet/JSP 动态内容
NginxWeb 服务器/反向代理静态文件、负载均衡高并发静态资源、反向代理
Apache HTTPDWeb 服务器静态文件、动态模块模块丰富,.htaccess 支持
IISWeb 服务器Windows 平台.NET 应用
JettyJava 应用服务器嵌入式场景轻量级,适合微服务
UndertowJava 应用服务器高性能场景WildFly 默认,非阻塞 I/O

5.2 性能对比

静态文件处理速度:
Nginx > Apache > Tomcat

动态内容处理(Java):
Tomcat = Jetty = Undertow(都运行 Java 代码)

并发连接能力:
Nginx > Tomcat > Apache

六、Tomcat 的核心配置文件

配置文件位置作用
server.xmlconf/server.xml主配置文件,配置端口、连接器、主机等
web.xmlconf/web.xml全局 Web 应用配置,默认 Servlet、MIME 类型
context.xmlconf/context.xml全局上下文配置,数据源、JNDI 资源
tomcat-users.xmlconf/tomcat-users.xml管理用户权限,配置 Manager 应用访问
logging.propertiesconf/logging.properties日志配置

6.1 server.xml 核心配置示例

<Server port="8005" shutdown="SHUTDOWN">
  <Service name="Catalina">
    <!-- HTTP 连接器,监听 8080 端口 -->
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

    <!-- AJP 连接器,用于与 Nginx 通信 -->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

    <Engine name="Catalina" defaultHost="localhost">
      <!-- 虚拟主机配置 -->
      <Host name="localhost" appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Context path="/myapp" docBase="/opt/myapp" />
      </Host>
    </Engine>
  </Service>
</Server>

七、Tomcat 的部署方式

7.1 部署 Web 应用的几种方法

方式操作方法适用场景
直接复制将 WAR 包复制到 webapps/ 目录最常用,自动解压部署
Manager 应用通过 Tomcat Manager 上传部署远程管理,无需服务器权限
配置 Contextserver.xml 中配置 <Context>指定外部目录部署
独立的 Context XMLconf/Catalina/localhost/ 创建 XML灵活管理多个应用

7.2 目录结构

tomcat/
├── bin/          # 启动/关闭脚本(startup.sh, shutdown.sh)
├── conf/         # 配置文件(server.xml, web.xml)
├── lib/          # Tomcat 和应用的共享库(JAR 包)
├── logs/         # 日志文件(catalina.out, localhost.log)
├── temp/         # 临时文件
├── webapps/      # Web 应用部署目录
│   ├── ROOT/     # 默认应用
│   ├── docs/     # Tomcat 文档
│   ├── examples/ # 示例应用
│   └── manager/  # 管理应用
└── work/         # JSP 编译后的 Servlet 类文件

八、Tomcat 在 Nginx + Tomcat 架构中的角色

结合我们之前讨论的整合架构:

         Nginx(反向代理/负载均衡)
               ↙  ↓  ↘
        Tomcat1 Tomcat2 Tomcat3(Tomcat集群)
               ↓    ↓    ↓
          Java Web 应用(业务代码)
               ↓    ↓    ↓
              数据库(MySQL/Redis)

Tomcat 的职责

  1. 运行业务代码:执行 Java Servlet/JSP,处理动态业务逻辑
  2. 保持会话:管理用户登录状态(可配合 Redis 共享)
  3. 数据库交互:连接数据库,执行 SQL 查询
  4. 业务计算:处理订单、用户权限等核心业务

Nginx 的职责

  1. 静态资源处理:图片、CSS、JS 等
  2. 负载均衡:分发请求到不同 Tomcat
  3. SSL 终结:HTTPS 加密解密
  4. 安全防护:限制访问、防攻击

九、总结

问题答案
Tomcat 是什么?Java Web 应用服务器,运行 Servlet/JSP 程序的容器
主要功能?解析执行 Java 动态代码,处理 HTTP 请求,返回 HTML 页面
和 Nginx 什么关系?Nginx 做反向代理,Tomcat 做业务处理,动静分离
能单独用吗?可以,小项目可单独使用,但大项目建议配合 Nginx
为什么需要它?Java Web 应用必须运行在 Servlet 容器中,Tomcat 是最流行的选择

一句话记忆Tomcat 是 Java Web 应用的”家”,让 Java 代码能处理浏览器发来的 HTTP 请求,并返回动态生成的网页。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注