
简介apache-tomcat-9.0.55-windows-x64位官方版是Apache Tomcat 9系列面向64位Windows系统的官方发行包主要供Java Web开发者在开发、测试及生产环境部署Servlet/JSP应用也适合新手通过实际目录结构理解Tomcat运行机制。压缩包共641个文件涵盖html静态页面、class与jar运行库、java源码、jsp示例、xml配置、bat/sh启停脚本及exe可执行文件等整体大小12.25MB。9.0.55版本基于Java EE 8规范支持Servlet 4.0、JSP 2.3等标准并包含最新安全补丁。已有906人学习下载资源包含完整Tomcat目录如bin下的startup.bat/shutdown.bat脚本、conf下的server.xml与tomcat-users.xml安全配置、webapps示例应用以及日志与临时目录可支撑从环境搭建、应用部署到端口与角色权限设置的全流程练习。适合想系统掌握Tomcat配置、部署和常见优化方法的Java学习者使用。 如果你手里正好有一份apache-tomcat-9.0.55-windows-x64压缩包那你多半是准备在 Windows 上搭一套 Java Web 运行环境。作为一个从 Tomcat 6 时代一路折腾过来的老开发我可以负责任地说这个包看起来只是个 zip但背后涉及的配置细节足够让新手踩一整天坑。这篇文章我就把从解压到实战部署的全流程拆开讲一遍端口怎么改、内存给多大、中文乱码怎么治、war 包怎么扔一条线给你捋顺。Tomcat 是什么、能做什么一句话就能说明白它是一个开源的 Servlet 容器也是一个 HTTP 服务器。你写好的 Java Web 程序Servlet、JSP、Spring Boot 打出来的 war最终都要扔到它里面由它监听端口、接收请求、调用你的代码再把结果返回给浏览器。这个压缩包装的就是这么个东西。适合谁刚学 JavaWeb 的学生、要接手维护老项目的新人、以及需要在 Windows 本地搭一套测试环境的开发者都是它的目标用户。1. 这个包到底是干嘛的先搞清楚 Tomcat 的定位1.1 为什么推荐 9.0.55 这个版本Tomcat 版本很多8.5、9.0、10.0、11.0 各有各的坑。9.0.55 属于 Tomcat 9 里一个比较稳的版本官方支持 Servlet 4.0、JSP 2.3、EL 3.0、WebSocket 1.1 这些规范对应 Java EE 8 的体系。相比 8.5它在 HTTP/2、安全方面有不少改进相比 10 以后的版本又避开了javax.servlet换成jakarta.servlet这个让老项目集体翻车的包名迁移问题。一句话总结这个选型如果你在维护一个用 Spring 5 / Spring Boot 2.x 写的项目或者课程设计、毕业设计打包出来的 war 包Tomcat 9.0.55 是最省心的选择。它不挑 JDKJDK 8 到 17 都跑得动兼容性极广。下载的时候注意认准 windows-x6432 位老系统就换 32 位包不过现在基本上都是 64 位了。1.2 谁需要这个东西如果你是纯前端开发那确实用不上它但只要你做 Java 后端或者哪怕只是把学长留下的老项目跑起来Tomcat 基本绕不开。很多人学习阶段用 IDEA 自带 Tomcat工作之后才发现生产环境还得自己动手装。还有一类人需要它运维小白刚接手一台 Windows Server需要把一个 Java 站点跑起来这时候最直接的办法就是解压一份 Tomcat 包配好 JDK 就开始部署。2. 环境准备与安装从解压到跑起来2.1 先确认 JDK 版本这一步太关键了我见过太多人双击 startup.bat 一闪而过最后发现是 JDK 没装。Tomcat 本质是 Java 程序没有 JDK 它根本起不来。打开命令行敲一下java -version如果提示找不到命令说明 JDK 没装或者没配环境变量。Tomcat 9 要求 JDK 8 及以上这里有个细节强烈建议装 JDK 而不是只装 JRE。虽然 Tomcat 本身跑起来只需要 JRE但 JSP 首次访问时需要动态编译没有完整的 JDK 编译器有些环境会给你报莫名的错。Windows 下把JAVA_HOME指向 JDK 安装目录一般在C:\Program Files\Java\jdk1.8.0_xx这样的位置。2.2 解压、环境变量与目录结构拿到apache-tomcat-9.0.55-windows-x64.zip后不要解压到带中文或带空格的路径这个坑我踩过D:\Program Files\Tomcat这种路径在解析某些配置时容易出幺蛾子建议直接放D:\tomcat9这种纯英文短路径。顺带说一句下载尽量走官方渠道别在乱七八糟的下载站找“优化版”“绿色版”那种被改过的包指不定夹带什么私货。解压完目录结构是这样的bin启动、关闭脚本都在这里还有 Windows 服务注册脚本 service.bat。conf全局配置文件所在地server.xml、web.xml、tomcat-users.xml 都在这里。libTomcat 自身依赖的 jar 包也是公共类库目录。logs所有日志输出在这里排错第一站。temp运行时的临时文件目录。webapps默认的应用部署根目录war 包直接扔这里就能被识别。workJSP 编译后的 class 文件缓存目录改完 JSP 不生效时清这里。不配CATALINA_HOME环境变量也能跑我的建议是本地测试完全不用配但如果你想在任意目录敲startup.bat或者用脚本化方式管理那就配一下指到 Tomcat 解压根目录即可。2.3 启动验证双击bin\startup.bat会弹出一个黑窗口看到类似下面的输出就是起来了Server startup in [xxx] milliseconds然后浏览器访问http://localhost:8080看到默认首页就代表成功。如果你双击后窗口一闪而过不要慌这是最常见的坑后面第 5 节专门讲怎么排查。如果想要更直观的启动方式也可以在命令行里手动执行catalina.bat run这样日志会直接打到当前窗口排查问题比 startup.bat 好用得多。3. 核心配置实操端口、内存、编码一次讲清3.1 端口怎么改不踩坑默认端口是 8080但 8080 太容易被别的程序抢占。改端口的入口在conf\server.xml里搜Connector节点默认长这样Connector port8080 protocolHTTP/1.1 connectionTimeout20000 redirectPort8443 /把port改成你想要的比如 8088。这里有个绝大多数人不知道的坑server.xml 里除了这个 HTTP Connector还有两个端口也很关键一个是 8005关闭 Tomcat 的监听端口一个是 8009AJP 端口。如果你的服务器同时跑多个 Tomcat 实例、或者某些组件要占用这些端口光改 8080 是不行的8005、8009 冲突了照样启动失败。所以稳妥的做法是改之前先看这几个端口都被谁占用了netstat -ano | findstr :8080 netstat -ano | findstr :8005 netstat -ano | findstr :8009改完端口记得重启 Tomcat日志里会明确告诉你实际监听的是哪个端口。3.2 JVM 内存参数该给多大这一节是给生产环境用的。默认情况下 Tomcat 启动用的 JVM 堆内存偏小逻辑上够用但一旦并发上来或者应用里面有大量缓存立刻就会报OutOfMemoryError: Java heap space。改内存的正确姿势不是去改 catalina.bat而是新建一个setenv.bat放在bin目录下。Tomcat 启动时会自动检测bin\setenv.bat是否存在存在就先执行它。这样最大的好处是以后升级 Tomcat、替换整个目录你的配置不用重新改。写一个最小可用版本set JAVA_OPTS-Xms512m -Xmx1024m -XX:MetaspaceSize256m这里的-Xms是初始堆大小-Xmx是最大堆大小。生产环境我的经验是两者设成一样的值比如都设 2048m避免 JVM 在运行过程中频繁扩容和收缩带来不必要的性能抖动。至于给多大没有标准答案取决于机器总内存和应用负载。一个参考总内存 8G 的机器Tomcat 给 2G 算起步总内存 16G给 4G 也不过分。别把整台机器的内存都塞给 Tomcat操作系统和别的进程也要活。3.3 中文乱码的根源与根治Windows 上跑 Tomcat 几乎必遇乱码说多了都是泪。乱码通常分两种第一种是控制台启动日志乱码第二种是页面或接口返回的中文乱码。控制台乱码的原因很直接Windows 命令行默认编码是 GBK而 Tomcat 9.0.55 的日志输出默认走 UTF-8两边对不上自然全是方框。处理办法是改conf\logging.properties把下面这行的编码改成 GBK 或者直接注释掉java.util.logging.ConsoleHandler.encoding UTF-8如果你是访问页面出现中文乱码那就得上server.xml的 Connector 节点加一个参数Connector port8080 protocolHTTP/1.1 connectionTimeout20000 URIEncodingUTF-8 /URIEncoding控制的是 URL 里的中文参数编码GET 请求中文乱码基本都是这个没配。POST 请求的乱码则要检查应用代码里的过滤器那是应用层的活Tomcat 管不了。4. 项目部署与日常运维4.1 WAR 包部署的三条铁律war 包是最常见的部署形式。把 xxx.war 拷到webapps目录下Tomcat 会自动解压成同名目录并启动应用。经验告诉我war 包部署有三条铁律第一war 包的名字就是应用的访问路径。demo.war部署后访问地址是http://localhost:8080/demo/想换路径就改文件名。第二更新包之前先把 Tomcat 停掉再替换 war 包否则 Windows 上文件被锁定替换会失败或者解压出一半就启动导致各种诡异问题。第三如果替换后还是跑旧代码把webapps下对应解压目录和work目录都删掉再重启保证重新编译。4.2 把项目目录放到 webapps 外面webapps 目录不是唯一的部署位置。如果你不想把项目文件堆在 Tomcat 目录里很多公司是这样代码放数据盘Tomcat 放系统盘可以用虚拟目录方式。在conf\server.xml的 Host 节点里加Context path/myapp docBaseD:\projects\myapp reloadabletrue /这里的path是浏览器访问的上下文路径docBase是实际项目目录的绝对路径。加了reloadabletrue后WEB-INF 下 class 文件变了会自动重新加载开发调试很方便但生产环境通常不建议开会拖性能。改完 server.xml 必须重启 Tomcat 才生效。4.3 注册成 Windows 服务实现开机自启本地怎么折腾都行但如果部署在服务器上你不可能每次都远程登录去点 startup.bat。把 Tomcat 注册成 Windows 服务才是正经做法。用管理员权限打开命令行进入bin目录执行service.bat install Tomcat9执行成功后去 Windows 服务管理里能看到一个名为 Tomcat9 的服务把启动类型改成“自动”重启服务器后 Tomcat 就能自己起来。这里注意两点一是必须管理员权限否则注册报错二是服务模式下 Tomcat 的工作目录、用户环境变量和手动启动不一样如果之前靠setenv.bat配置了 JAVA_OPTS确认路径和内容没问题。5. 常见问题速查表与排查技巧5.1 启动闪退闪退是新手最常见的问题原因九成出在环境变量上。双击 startup.bat 一闪而过别指望窗口给你看报错直接在命令行里手动执行catalina.bat run这样错误信息会停留在窗口里。常见报错无非几种JAVA_HOME设置不正确、JDK 版本不兼容、端口被占用。按图索骥大部分能当场解决。5.2 端口被占用如果日志里看到Address already in use: JVM_Bind那就是端口被占了。排查办法netstat -ano | findstr 8080拿到占用进程的 PID 后再用tasklist | findstr PID看是谁确认不是系统关键服务就直接taskkill /pid PID /f。如果你不想动那个进程那就改 Tomcat 的端口两个方向撞一个合适的都行。5.3 内存溢出日志里出现java.lang.OutOfMemoryError: Java heap space第一反应是堆内存不够按 3.2 节的方法调大-Xmx。另一种常见的溢出是Metaspace通常是加载的类太多或者有类加载器泄漏对应调大-XX:MetaspaceSize。如果调大内存后仍然持续溢出那就别硬扛了用jmap -dump抓一份堆转储文件用 MAT 分析一下业务代码是不是在疯狂存引用不释放。光加内存治标不治本的情况我遇到过太多次。5.4 部署后 404war 包放了Tomcat 也起来了但访问一直 404。我总结出来四条路依次排查第一确认访问路径对不对demo.war访问的是/demo/不是根路径第二去webapps下看有没有 war 对应的解压目录如果没解压出来多半是 war 包损坏或者磁盘权限问题第三打开logs\localhost.日期.log这里面记录着每次应用部署的启动过程任何异常都有线索第四如果之前部署过同名应用先清掉work下的缓存再重启。最后分享一个我自己的习惯每次拿到一份apache-tomcat-9.0.55-windows-x64包第一时间不是去解压而是先建一份部署清单记下三件事——JDK 版本、要改的端口、期望的内存大小。就这几行字能省下后面排查问题的很多时间。还有个小技巧把webapps里默认的ROOT换成你自己的应用访问http://localhost:8080就能直接进项目省去输入一堆路径的麻烦。Tomcat 这个东西用熟了你会觉得它平淡无奇但每个坑都踩过一遍之后你才真正敢说会用。本文还有配套的精品资源点击获取