Tomcat介绍

Tomcat 11

1 WEB服务器

Web服务器通常由硬件和软件共同构成,是互联网内容对外提供访问的核心载体。

  • 硬件:本质是一台7×24小时稳定运行的电脑,它接入公网、拥有专属网络地址,核心作用是为其他客户端电脑提供网络服务。

生活化举例:这就像一家24小时营业的线下便利店的实体门店,有固定的门牌地址,能容纳商品、接待到店的顾客。

  • 软件:安装在硬件服务器上的服务程序,它能接收网络中其他计算机的访问请求,找到对应的资源并返回给访问者,把本地的文件、程序映射成可通过网络访问的虚拟URL地址。

生活化举例:这就像便利店里的整套运营体系,包括导购、收银、仓储管理,顾客说要什么商品,店员能快速找到商品并交到顾客手上,完成一次完整的服务。

常见的JavaWeb服务器:

  • Tomcat(Apache):Java领域应用最广泛的开源Web服务器,轻量稳定、完全免费,是中小企业和Java开发者的首选,Tomcat 11是其最新的稳定正式版本

  • Jetty:比Tomcat更轻量级、更灵活的Servlet容器,启动速度快、资源占用低,适合嵌入式场景和轻量化应用

  • JBoss(Redhat红帽):完整支持JavaEE/Jakarta EE规范的企业级应用服务器,内置EJB容器,适合大型分布式项目

  • GlassFish(Oracle):Oracle官方推出的JavaEE/Jakarta EE参考实现服务器,功能完整但市场普及率较低

  • Resin(Caucho):高性能JavaEE应用服务器,并发处理能力突出,在国内互联网企业有一定应用

  • Weblogic(Oracle):商业付费企业级应用服务器,完整支持Jakarta EE全规范,具备超强的集群、容灾能力,适合超大型核心商业项目

  • Websphere(IBM):IBM旗下的商业付费企业级应用服务器,深度适配企业级中间件生态,多用于金融、政务等大型传统行业

2 Tomcat服务器

2.1 简介

Apache Tomcat® 是Apache软件基金会旗下的开源项目,是Jakarta EE平台的核心实现产品,由全球顶尖的Java开发者社区协同维护,完全开源免费、技术先进、性能稳定,是目前全球使用最广泛的Java Web应用服务器。

Tomcat 11是2025年发布的最新稳定正式版本,完整实现了Jakarta EE 11平台的核心规范,包括Jakarta Servlet 6.1、Jakarta Pages、Jakarta Expression Language、Jakarta WebSocket等核心组件,专为云原生Java应用设计,在轻量化、模块化和云原生适配性上做了全面优化。

这里需要特别说明:Tomcat 10及以上版本均实现Jakarta EE规范,核心API的包名从传统Java EE的javax.*全面变更为jakarta.*,Tomcat 9及更早版本则实现传统Java EE规范,二者应用无法直接兼容。

生活化举例:这就像一个品牌完成了商标升级,原来的商品包装印的是旧品牌名javax,升级后新货架只接受印新品牌名jakarta的商品,旧包装商品需要更换包装才能上架,Tomcat自带的迁移工具就是帮你快速完成“换包装”的工具。

2.2 安装

版本说明

  • 稳定版:Tomcat 11.0.x 是当前最新正式稳定版本,适配Jakarta EE 11规范,适合新项目、云原生场景使用,生产环境建议选用该系列的正式发布版

  • 维护版:Tomcat 10.1.x 为长期维护版本,适配Jakarta EE 10规范,仍在持续更新安全补丁,适合存量Jakarta EE项目长期使用

  • legacy版:Tomcat 9.0.x 及更早版本,适配传统Java EE规范,已逐步进入维护末期,仅建议存量老项目兼容使用

核心版本对应关系

Tomcat的版本与Servlet规范、Jakarta EE/Java EE平台、JDK版本强绑定,对应关系如下:

Servlet版本与EE平台对应表
Servlet Version 对应EE平台版本 核心特性与定位
6.1 Jakarta EE 11 最新云原生企业级Java规范,轻量化优化
6.0 Jakarta EE 10 现代化云原生Java规范,精简废弃API
5.0 Jakarta EE 9/9.1 完成javax→jakarta包名全面迁移
4.0 Java EE 8 传统Java EE最终稳定版本
Tomcat版本与运行环境对应表
Servlet Version Tomcat Version 最低JDK版本要求 适配规范平台
6.1 11.0.x 17 and later Jakarta EE 11
6.0 10.1.x 11 and later Jakarta EE 10
5.0 10.0.x (已停用) 8 and later Jakarta EE 9/9.1
4.0 9.0.x 8 and later Java EE 8

下载与安装准备

  • Tomcat官方网站:http://tomcat.apache.org/

  • 安装包类型:

    • 安装版:需要通过安装向导一步步安装,会写入系统注册表,配置灵活性低,不推荐开发和生产使用

    • 解压版(绿色版):下载后直接解压即可使用,配置灵活、可随时迁移,是开发和生产环境的首选

  • 前置依赖:必须提前安装对应版本的JDK并配置JAVA_HOME环境变量(Tomcat 11必须安装JDK 17及以上版本),JDK可通过国内镜像站下载适配版本。

详细安装步骤

  1. 配置JDK与JAVA_HOME环境变量

正确安装对应版本的JDK,在系统环境变量中新建JAVA_HOME,值为JDK的安装根目录。

生活化举例:这一步就像给便利店提前对接好总部的供货系统,没有这个系统,店里的商品就没法正常上架、售卖,Tomcat必须通过JAVA_HOME找到Java运行环境才能正常启动。

1). 解压Tomcat安装包

将下载的Tomcat 11解压包,解压到非中文、无空格、无特殊字符的目录下(例如D:\server\apache-tomcat-11.0.8),避免因路径特殊字符导致启动异常。

2). 启动Tomcat服务

进入Tomcat解压目录的bin文件夹,Windows系统双击startup.bat启动服务;Linux/Mac系统执行sh startup.sh命令启动。

启动成功后,会弹出命令行窗口,显示启动时长、服务端口等核心信息,无报错即代表启动成功。

3). 访问测试验证

打开浏览器,在地址栏输入 http://localhost:8080http://127.0.0.1:8080,若能正常打开Tomcat官方默认首页,即代表安装、启动成功。

若无法访问,需检查:Tomcat是否正常启动无报错、8080端口是否被其他程序占用、URL地址是否拼写正确。

4). 关闭Tomcat服务

如需停止服务,Windows系统双击bin目录下的shutdown.bat;Linux/Mac系统执行sh shutdown.sh命令,即可正常关闭Tomcat服务,直接关闭命令行窗口属于强制终止,不推荐常规使用。

5). 解决命令行窗口中文乱码问题

若启动后命令行日志出现中文乱码,只需修改conf/logging.properties配置文件,将文件中所有的UTF-8编码修改为GBK,保存后重启Tomcat即可恢复正常。

3 Tomcat目录结构及核心功能

我们把Tomcat解压后的根目录,称为Tomcat安装目录/主目录,该目录下的每个文件夹都有固定的作用,就像便利店的不同功能分区,各司其职,核心目录说明如下:

目录名 核心作用与功能说明 生活化类比
bin 存放Tomcat的二进制可执行文件,核心是启动脚本startup、关闭脚本shutdown,以及服务相关的核心执行程序 便利店的运营操作间,存放开门、打烊、设备启停的所有操作按钮和工具
conf Tomcat的核心配置目录,存放服务的所有配置文件,是整个Tomcat的“大脑中枢” 便利店的规章制度和运营配置手册,门店的营业时间、窗口设置、人员权限都在这里定义
↳ server.xml 整个Tomcat服务器的核心配置文件,可修改服务端口号、连接池配置、线程数等核心参数,默认HTTP服务端口为8080 门店的整体布局配置,比如改门牌号(端口号)、调整收银台数量(线程数)
↳ tomcat-users.xml 存放Tomcat的用户、密码及角色权限配置,用于管理Tomcat后台管理页面的访问权限 门店的员工花名册和权限表,定义谁是店长、谁是店员,分别能进哪些区域
↳ web.xml 全局部署描述符文件,注册了所有MIME文件类型,定义了Web应用的全局默认配置 门店的商品分类规范,定义了什么类型的商品该用什么方式展示给顾客
↳ context.xml 所有Web应用的统一公共配置,一般无需修改 门店对所有入驻商家的统一管理规则
lib Tomcat的核心类库目录,存放Tomcat运行依赖的所有jar包,该目录下的jar包可被所有部署的Web项目共享 便利店的公共耗材仓库,存放门店运营所需的通用工具,所有入驻商家都可以使用
logs 日志文件目录,存放Tomcat启动、运行、关闭的所有日志,以及异常报错信息,是排查问题的核心依据 门店的运营日志本,每天的客流量、设备异常、运营事件都完整记录在这里
temp 临时文件目录,存放Tomcat运行过程中产生的临时文件,服务停止后可直接清空 门店的临时储物区,存放临时周转的物品,定期清理即可
webapps Web应用部署目录,是Tomcat的默认项目部署区,每个文件夹对应一个可访问的Web项目,ROOT为默认根项目 便利店的核心货架区,每个货架对应一个品牌专区,顾客可以直接选购货架上的商品
work 运行时工作目录,存放JSP文件编译后生成的Java文件和Class文件,清空后重启Tomcat会自动重新生成 门店的商品加工间,顾客选购的半成品(JSP文件),在这里加工成成品(Class文件)后交付
LICENSE Tomcat的开源许可证文件,定义了Apache 2.0开源协议的使用规范 门店的经营许可证
NOTICE 项目说明文件,包含Tomcat的开发者、版权声明等信息 门店的品牌介绍和版权声明

4 WEB项目的标准目录结构

一个能在Tomcat 11上正常部署、运行的Java Web项目,必须遵循固定的标准目录结构,就像连锁便利店有统一的门店布局规范,不管哪个门店,顾客都能快速找到自己想要的东西,Tomcat也能通过固定结构快速识别项目、加载资源。

标准Web项目目录结构如下:

app(项目根目录,对应项目的访问上下文路径)
├── static(非必需,约定俗成的静态资源目录)
│   ├── css(样式文件)
│   ├── js(脚本文件)
│   └── img(图片资源)
├── WEB-INF(必需目录,名称固定,受服务器保护的目录,浏览器无法通过URL直接访问)
│   ├── classes(必需目录,存放Java源码编译后的Class文件、项目配置文件)
│   ├── lib(必需目录,存放项目依赖的所有jar包)
│   └── web.xml(项目核心配置文件,新版本可省略,学习阶段建议保留)
└── index.html/index.jsp(非必需,项目的默认欢迎页,访问根路径时默认打开) 

各核心目录的详细说明:

  1. 项目根目录app:整个Web项目的根目录,对应Tomcat中的项目访问路径,比如根目录名为app,访问路径就是http://localhost:8080/app

  2. static静态资源目录:约定俗成的目录名,用来存放css、js、图片等静态资源,这些资源浏览器可直接通过URL访问,就像便利店门口的促销展架,顾客路过就能直接看到。

  3. WEB-INF目录:项目的核心保护目录,名称必须完全一致,浏览器无法直接访问该目录下的任何内容,只有Tomcat服务器能读取和操作,就像便利店的后台仓库和办公区,顾客不能直接进入,只有店员能操作。

  4. classes目录:存放项目Java源代码编译后的class字节码文件,以及xml、properties等配置文件,是项目的核心业务代码存放区,就像仓库里的成品货架,存放已经加工好的商品。

  5. lib目录:存放项目运行所依赖的所有第三方jar包,比如数据库驱动、框架工具包等,就像仓库里的耗材和配件区,存放商品售卖所需的配套工具。

  6. web.xml文件:项目的部署描述符文件,可配置项目的欢迎页、拦截器、Servlet映射等核心规则,是项目的“运营规则手册”。

  7. index.html/index.jsp默认欢迎页:访问项目根路径时,Tomcat会默认优先打开的页面,就像便利店的入口橱窗,顾客进店第一眼看到的内容。

2.5 WEB项目的部署方式

Tomcat 11提供了多种灵活的项目部署方式,可根据开发、生产的不同场景选择,核心部署方式有以下3种,同时针对老项目迁移提供了专属解决方案。

方式1:直接将编译好的项目放入webapps目录

这是最常用、最简单的部署方式,也是开发阶段的首选方式。

  1. 将编译完成、符合标准结构的Web项目完整文件夹,直接放入Tomcat根目录的webapps文件夹下

  2. 启动Tomcat服务,服务启动时会自动加载该目录下的所有项目

  3. 浏览器通过http://localhost:8080/项目文件夹名即可访问对应的项目

补充:webapps目录下的ROOT文件夹是默认根项目,访问http://localhost:8080不写项目名时,默认访问的就是ROOT项目。

方式2:将项目打成WAR包放入webapps目录

这是生产环境最常用的部署方式,WAR包是Java Web项目的标准归档格式,相当于把整个项目打包成一个单独的文件,便于传输、部署和版本管理。

  1. 通过开发工具(IDEA/Eclipse)或Maven/Gradle构建工具,将项目打包为后缀为.war的文件

  2. 将打包好的WAR包直接放入Tomcat的webapps目录下

  3. 启动Tomcat服务,服务启动后会自动解压WAR包,生成同名的项目文件夹,完成部署

  4. 访问路径和文件夹部署方式一致,为http://localhost:8080/WAR包名

优势:WAR包不会出现文件传输缺失、目录结构错乱的问题,版本管理更规范,是生产环境的标准部署方案。

方式3:外部路径映射部署(虚拟路径部署)

该方式无需将项目放入webapps目录,可将项目存放在磁盘的任意位置,通过Tomcat配置文件映射项目路径,适合多项目管理、磁盘分区规划的场景。

  1. 在磁盘的任意非中文无空格目录下,准备好编译完成的Web项目(例如D:\myweb\app

  2. 进入Tomcat的conf目录,创建Catalina/localhost两级文件夹(若已存在则无需创建)

  3. localhost文件夹下,创建一个XML配置文件,文件名与项目访问路径一致(例如app.xml,对应访问路径/app

  4. 在XML文件中写入如下配置,核心配置path为项目访问路径,docBase为项目在磁盘中的实际绝对路径:

<!-- 
 path: 项目的访问上下文路径,浏览器中输入的项目访问名
 docBase: 项目在本地磁盘中的实际完整路径
 -->
<Context path="/app" docBase="D:\myweb\app" />```

1).  保存配置文件,启动Tomcat服务,即可通过`http://localhost:8080/app`访问该项目

### 老项目迁移补充说明

针对Tomcat 9及更早版本、基于传统Java EE(`javax.*`包)开发的老项目,无法直接在Tomcat 11上运行,Tomcat提供了两种迁移解决方案:

2).  **自动迁移**:将老项目的文件夹或WAR包,放入Tomcat根目录下的`webapps-javaee`文件夹,Tomcat启动时会自动通过内置的迁移工具,将项目中的`javax.*`包名批量转换为`jakarta.*`,并将转换后的项目自动复制到`webapps`目录完成部署

3).  **手动迁移**:可单独下载Apache Tomcat Migration Tool for Jakarta EE迁移工具,离线完成项目的包名转换,转换后再部署到Tomcat 11中

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容