Apache Tomcat 是由 Apache 软件基金会开发的开源 Java Servlet 容器,自 1999 年发布以来一直是 Java Web 开发的核心工具。Tomcat 实现了 Java Servlet、JSP(JavaServer Pages)和 Java Expression Language 等 Java EE 规范。
Tomcat 的核心定位是 轻量级的 Java Web 应用服务器。它提供了:
Tomcat 由 Apache 软件基金会于 1999 年启动,最初是 Sun Microsystems 的 Java Servlet API 的参考实现。Tomcat 的名字来源于一种小型野猫,寓意"小而强大"。
| Tomcat 版本 | Servlet 规范 | JSP 规范 | Java 版本 |
|---|---|---|---|
| 11.0 | Servlet 6.0 | JSP 3.1 | Java 17+ |
| 10.1 | Servlet 5.0 | JSP 3.0 | Java 11+ |
| 9.0 | Servlet 4.0 | JSP 2.3 | Java 8+ |
| 8.5 | Servlet 3.1 | JSP 2.3 | Java 7+ |
| 7.0 | Servlet 3.0 | JSP 2.2 | Java 6+ |
tomcat/
├── bin/ # 启动脚本
│ ├── startup.sh
│ └── shutdown.sh
├── conf/ # 配置文件
│ ├── server.xml # 主配置文件
│ ├── web.xml # 全局 web 配置
│ ├── context.xml
│ └── logging.properties
├── lib/ # 依赖库(JAR)
├── logs/ # 日志文件
├── temp/ # 临时文件
├── webapps/ # 应用部署目录
│ ├── ROOT/ # 根应用
│ └── myapp/
├── work/ # JSP 编译缓存
└── webapps.dist/ # 默认应用备份
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Service name="Catalina">
<!-- HTTP Connector -->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="200"
minSpareThreads="25"
maxSpareThreads="75"/>
<!-- AJP Connector(与 Apache 集成) -->
<Connector protocol="AJP/1.3" port="8009"
redirectPort="8443"/>
<!-- Engine -->
<Engine name="Catalina" defaultHost="localhost">
<!-- Host 配置 -->
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- 上下文配置 -->
<Context path="/myapp" docBase="myapp" reloadable="true"/>
</Host>
</Engine>
</Service>
</Server>
<Host name="www.example.com" appBase="/var/www/example"
unpackWARs="true" autoDeploy="true">
<Alias>example.com</Alias>
<Context path="" docBase="/var/www/example/ROOT" reloadable="true"/>
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="example_access_"
suffix=".log"
pattern="%h %l %u %t "%r" %s %b"/>
</Host>
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/keystore.jks"
certificateKeystorePassword="password"
type="RSA"/>
</SSLHostConfig>
</Connector>
# 方式一:直接放 webapps 目录
cp myapp.war /path/to/tomcat/webapps/
# Tomcat 会自动解压并部署
# 方式二:使用 manager 应用
# 访问 http://localhost:8080/manager/html
# 方式三:通过 context.xml 定义
<Context path="/myapp" docBase="/path/to/myapp" reloadable="true"/>
# 方式四:Spring Boot 嵌入式部署
# Spring Boot 应用自带 Tomcat,直接 java -jar 运行
# setenv.sh(Linux)或 setenv.bat(Windows)
export CATALINA_OPTS="$CATALINA_OPTS -Xms512m"
export CATALINA_OPTS="$CATALINA_OPTS -Xmx2048m"
export CATALINA_OPTS="$CATALINA_OPTS -XX:MetaspaceSize=128m"
export CATALINA_OPTS="$CATALINA_OPTS -XX:MaxMetaspaceSize=512m"
export CATALINA_OPTS="$CATALINA_OPTS -XX:+UseG1GC"
export CATALINA_OPTS="$CATALINA_OPTS -Dfile.encoding=UTF-8"
Tomcat 安装、目录结构、部署 WAR 包、启动和停止
server.xml 配置、虚拟主机、SSL 配置、连接池
集群配置、Session 复制、JVM 调优、安全管理
Spring Boot 嵌入式、IntelliJ IDEA 集成、Maven Tomcat 插件
Tomcat 是 Java Web 开发的"标准容器"。
从 1999 年至今,Tomcat 一直是 Java Web 应用最流行的部署环境。虽然现在有 Jetty、Undertow 等选择,但 Spring Boot 默认使用 Tomcat,确保了 Tomcat 在 Java 生态中的核心地位。
无论你使用 Spring MVC、Spring Boot 还是传统的 JSP/Servlet,Tomcat 都是最值得学习的 Java Web 服务器。
"Tomcat 是 Java Web 开发者的老朋友。" ☕