news 2026/6/10 12:22:46

Tomcat使用教程(超详细)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Tomcat使用教程(超详细)

Tomcat 使用教程(2025-2026 超详细版)

这是一份面向真实使用场景的 Tomcat 教程,尽量覆盖从零安装 → 开发部署 → 生产常见问题 → 优化调优的全流程。

1. Tomcat 目前的版本现状(2025-2026)

Tomcat 版本Servlet / JSP / WebSocket 规范Java 最低版本状态(2025年底)推荐生产使用?备注
9.x4.0 / 2.3 / 1.1Java 8维护中(到 2025.12)可以很多老项目还在用
10.1.x5.0 / 3.1 / 2.0Java 11活跃维护推荐主流过渡版本
11.x6.0 / 4.0 / 2.1Java 17最新稳定版(2025年主流)最推荐Jakarta EE 10,命名空间全面迁移
10.0.x5.0 / 3.1 / 2.0Java 8已停止支持不推荐过渡版本,已 EOL

2025-2026 生产推荐排序
11.x > 10.1.x > 9.0.x(仅遗留系统)

2. 快速开始(最常见的三种安装方式)

方式一:直接下载解压(最常用)
  1. 官网下载:https://tomcat.apache.org/

    • 选 Tomcat 11.x → Binary Distributions → Core → zip 或 tar.gz
  2. 解压到任意目录,例如:

    • Windows:D:\servers\apache-tomcat-11.0.x
    • Linux:/opt/tomcat11
  3. 启动(最简单两种方式)

# Linux / macOScd/opt/tomcat11/binchmod+x *.sh ./startup.sh# Windows(双击或命令行)D:\servers\apache-tomcat-11.0.x\bin\startup.bat
  1. 验证是否启动成功
    浏览器打开:http://localhost:8080
    看到 Tomcat 欢迎页 → 成功
方式二:使用 Docker(开发/测试/CI 首选)
# 快速启动最新 Tomcat 11dockerrun -d -p8080:8080 --name tomcat11 tomcat:11-jdk17# 挂载本地 war 包(最常用方式)dockerrun -d -p8080:8080\-v /path/to/your-app.war:/usr/local/tomcat/webapps/ROOT.war\--name myapp tomcat:11-jdk17
方式三:IDEA / Eclipse 内置 Tomcat(开发阶段最方便)
  • IDEA:Run → Edit Configurations → + → Tomcat Server → Local → 配置 Tomcat 目录即可

3. Tomcat 目录结构详解(必须记住)

目录作用说明生产中是否经常改动
bin启动/关闭脚本、工具(startup.sh、shutdown.sh、catalina.sh 等)偶尔改
conf核心配置文件(最重要!)经常改
libTomcat 共享库(放到这里所有 webapp 都能用)偶尔加 jar
logs日志(catalina.out / localhost_access_log 等)经常看
webapps默认部署目录(ROOT/ 是默认欢迎页)放 war 或解压目录
work工作目录(JSP 编译后的 .java/.class 文件、session 持久化等)可定期清理
temp临时文件目录可定期清理

4. 核心配置文件详解(conf 目录下)

文件名作用生产中最常修改的地方
server.xml主配置文件(端口、连接器、Host 等)Connector 端口、AJP、压缩、线程池、SSL
web.xml默认 web 应用描述符全局 filter、mime-type、welcome-file 等
context.xml全局 context 配置资源定义(JNDI 数据源)、Valve 等
tomcat-users.xml管理后台用户添加 manager-gui / admin-gui 角色用户
catalina.propertiesJVM 属性、包扫描排除等内存设置、共享 loader、JMX 等
logging.properties日志配置改日志级别、格式、输出路径

5. 最常用的 server.xml 修改示例(生产必备)

<!-- 修改 HTTP 端口 + 启用压缩 + 优化线程池 --><Connectorport="8080"protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"compression="on"compressionMinSize="2048"compressibleMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json"maxThreads="400"minSpareThreads="50"acceptCount="100"URIEncoding="UTF-8"/><!-- 启用 AJP(一般配合 Nginx 反代) --><Connectorprotocol="AJP/1.3"port="8009"address="127.0.0.1"secretRequired="false"/><!-- 生产建议开启 secret --><!-- 修改默认应用路径(可选) --><Hostname="localhost"appBase="webapps"unpackWARs="true"autoDeploy="true"><!-- 示例:自定义一个虚拟主机 --><Contextpath=""docBase="/data/myapp"reloadable="false"/></Host>

6. 部署方式对比(开发 → 生产)

部署方式命令 / 操作方式热部署?生产推荐?场景说明
直接放 war 到 webappscp app.war /opt/tomcat/webapps/★★★★☆最简单,适合中小项目
解压目录部署unzip app.war -d /opt/tomcat/webapps/ROOT★★★☆☆调试 JSP/配置文件方便
server.xml 中 Context在 conf/server.xml 或 conf/Catalina/localhost/ 下写 Context★★★★★路径与 war 包分离,生产首选
Manager GUI 部署http://localhost:8080/manager/html★★☆☆☆测试环境方便,生产不建议开放
自动部署脚本Jenkins / GitLab CI + rsync / scp自定义★★★★★生产标准做法

7. 生产环境常见优化配置(2025-2026 推荐)

# catalina.sh 或 setenv.sh / setenv.bat 中添加 JAVA_OPTS="$JAVA_OPTS -server" JAVA_OPTS="$JAVA_OPTS -Xms2g -Xmx4g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m" JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=200" JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true" JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"

server.xml 连接器优化示例(高并发)

<Connectorport="8080"protocol="org.apache.coyote.http11.Http11Nio2Protocol"connectionTimeout="20000"maxThreads="800"minSpareThreads="100"acceptCount="1000"compression="on"compressionMinSize="2048"noCompressionUserAgents="gozilla,traviata"compressibleMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,image/svg+xml"/>

8. 常见问题快速定位口诀

现象优先检查顺序常见原因/解决
8080 端口打不开netstat -tuln / netstat -ano端口被占、防火墙、selinux
启动卡死 / 很久没响应jstack / jmap / 查看 catalina.outJVM 参数不合理、加载大量 jar、死循环
404 / 应用没加载catalina.out / localhost.logwar 包损坏、web.xml 错误、依赖缺失
内存溢出(OOM)-XX:+HeapDumpOnOutOfMemoryError加内存、优化代码、减 session、用连接池
JSP 页面报 500work/Catalina/localhost/ 下看编译错误JSP 语法错、jar 冲突
访问慢jvisualvm / arthas / tomcat manager statusGC 频繁、线程池满、数据库慢、NIO 模型

希望这份内容能覆盖你从学习到上生产的大部分场景。

你现在最想深入了解 Tomcat 的哪一部分?

  • 详细的 server.xml 配置项?
  • 与 Nginx / Apache 反向代理 + HTTPS 配置?
  • 集群 Session 共享方案?
  • JMX 监控 / 性能调优?
  • 还是 Docker + Tomcat 的生产部署最佳实践?

告诉我你的具体需求,我可以继续展开。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 14:32:20

中屹指纹浏览器多场景技术适配与接口封装实践

摘要&#xff1a;多账号运营场景的多元化&#xff0c;对指纹浏览器的场景适配能力和接口封装能力提出了更高要求。本文以中屹指纹浏览器为研究对象&#xff0c;重点分析其在跨境电商、自媒体、游戏等主流运营场景中的技术适配策略&#xff0c;以及标准化接口封装的实现方案&…

作者头像 李华
网站建设 2026/6/10 12:32:30

量子算法测试结果解析工具的核心原理与应用价值

量子算法测试结果解析工具&#xff08;简称“一键可视化”&#xff09;是一种基于量子计算原理的数据分析工具&#xff0c;专为处理高维、复杂数据设计。它将公众号内容数据&#xff08;如阅读量、点赞数、评论热度&#xff09;视为量子态向量&#xff0c;通过算法模拟量子叠加…

作者头像 李华
网站建设 2026/6/9 21:16:26

[嵌入式系统-171]:直流电机通过PWM信号控制转速和连续运转;步进电机通过脉冲信号实现开环控制,每接收一个脉冲转动一个固定步距角;伺服电机则通过PWM脉宽指令结合内部反馈实现闭环控制,精确控制

“直流电机通过PWM信号控制转速和连续运转&#xff1b;步进电机通过脉冲信号实现开环控制&#xff0c;每接收一个脉冲转动一个固定步距角&#xff1b;伺服电机则通过PWM脉宽指令结合内部反馈实现闭环控制&#xff0c;精确到达并维持指定角度。” ✅ 第一句&#xff1a; “直流…

作者头像 李华
网站建设 2026/6/10 12:24:29

Python学习之路-字典(Dictionary)学习详解

Python 学习之路 —— 字典&#xff08;dict&#xff09;详解 &#xff08;从零基础到能熟练使用常见场景&#xff0c;2025-2026 风格写法&#xff09; 字典是 Python 中使用频率极高的数据结构&#xff0c;几乎可以说是“Python 程序员的瑞士军刀”。 一、字典的核心概念&am…

作者头像 李华
网站建设 2026/6/10 14:09:21

Java static 与 final 详解(简单易懂)

Java static 与 final 详解&#xff08;2025–2026 视角&#xff0c;简单易懂版&#xff09; static 和 final 是 Java 中最容易混淆的两个修饰符&#xff0c;但它们解决的问题完全不同。 用最生活化的比喻来记住&#xff1a; 修饰符生活比喻核心含义修饰对象能不能改什么时…

作者头像 李华
网站建设 2026/6/10 9:42:12

行车控制算法十年演进

行车控制算法&#xff08;Longitudinal & Lateral Control&#xff09; 的十年&#xff08;2015–2025&#xff09;&#xff0c;是从“公式定义驾驶”向“AI 模拟本能”跨越的十年。 行车控制是自动驾驶的执行终端&#xff0c;负责将规划好的轨迹转化为车辆的转向、油门和…

作者头像 李华