6 Tomcat介绍
6.1 版本
- 常用版本
Tomcat 常用版本为 8.0 及以上,其中 8.5、9.0 使用较多,8.0 以前的版本(如 7.0 等)基本不再使用。 - 8.0 以前和以后版本的区别
- 编码处理:8.0 及以前版本编码设置繁琐,易出现中文乱码等问题,多处要手动配;8.5 及之后版本能自动处理编码,减少编码相关问题。具体体现在:
- Tomcat 8.0 及以前:
- GET 请求:默认用 ISO - 8859 - 1 编码,不支持中文,处理含中文的 GET 参数易乱码,得手动在server.xml的 Connector 节点设URIEncoding="UTF-8"。
- POST 请求:编码由客户端定,没手动用setCharacterEncoding设编码的话,接收参数易乱码,需手动转码。
- 响应:默认 ISO - 8859 - 1,要显示中文得用response.setCharacterEncoding("UTF-8")设响应编码。
- Tomcat 8.0 及以后:
- GET 请求:默认 UTF - 8 编码,处理含中文的 GET 参数,乱码少了。
- POST 请求:若请求头contentType没指定编码,且没手动用setCharacterEncoding设,默认还是 ISO - 8859 - 1,编码不一致会乱码,可在过滤器里用setCharacterEncoding设。
- 响应:虽然默认编码有变化,建议仍用response.setCharacterEncoding("UTF-8")主动设响应编码,保证显示正常。
- 性能:8.0 及以前版本采用阻塞式 I/O,高并发下性能受限;8.0 及以后版本增强对非阻塞 I/O 的支持,还支持 HTTP/2 协议(部分版本需补充本地库),高并发处理能力和资源加载速度提升。
- Servlet 规范支持:8.0 及以后版本支持更高级的 Servlet 规范(如 Tomcat 8 支持 Servlet 3.1,Tomcat 9 支持 Servlet 4.0),能利用更多新特性(如异步 I/O、HTTP/2 推送等),而 8.0 以前版本(如 7.0)仅支持到 Servlet 3.0。
- Java 版本依赖:8.0 及以后版本对 Java 版本要求更高(如 Tomcat 9 需 Java 8 及以上),可使用 Java 新特性开发应用,8.0 以前版本对 Java 版本要求相对较低。
6.2 Tomcat安装目录

- bin 目录
包含在不同操作系统平台(Windows 和 Linux 等)上启动和关闭 Tomcat 的脚本文件,如 Windows 下的 startup.bat 用于启动 Tomcat,shutdown.bat(启动Tomcat后,如果想关闭只要运行shutdown.bat就会自动关闭Tomcat以及startup.bat的弹框) 用于关闭;Linux 及其他系统下的 startup.sh 启动、shutdown.sh 关闭。此外,还包含一些支持脚本运行的 jar 包,如 tomcat - juli.jar。 - conf 目录
存放 Tomcat 服务器的全局配置文件。其中 server.xml 是主要配置文件,配置了 Tomcat 的关键端口号等重要参数;Tomcat - users.xml 用于配置 Tomcat 用户的账户名和密码;web.xml 则定义了一些全局的 Servlet 配置等信息。 - lib 目录
存放 Tomcat 服务器以及所有 web 应用都能访问的 jar 文件,这些 jar 文件提供了 Tomcat 运行和 web 应用执行所需的类库。 - logs 目录
记录 Tomcat 执行过程中的日志文件,通过查看这些日志可以了解 Tomcat 的运行状态,如是否正常启动、是否出现错误等。如果启动失败,此时startup.bat会直接关闭,来不及看哪里有问题。此时,在logs中只要找到对应日期的文件,打开,翻到对应的启动时间,即可查看具体的哪里出错。 - temp 目录
在 Tomcat 运行时产生临时文件,比如在处理请求过程中生成的一些临时数据文件。 - webapps 目录
Tomcat 的主要 Web 发布目录,默认情况下,JAVAEE 开发人员会将 Web 项目文件放置在此目录下,Tomcat 会自动部署和管理该目录下的应用。此时启动 Tomcat,就可以访问项目 里的内容。此外,如果是开发软件启动Tomcat,软件会帮你把项目打包好,然后自动放到 webapps 目录里,或者用一种更高效的方式让 Tomcat 直接加载。
webapps下面还会有一个默认的ROOT目录。它是 Tomcat 自带的一个默认项目,当你访问 http://localhost:8080/ 而不指定任何项目名时,Tomcat 就会展示这个 ROOT 项目里的内容。

- work 目录
Tomcat 将 JSP 文件生成的 Servlet 源文件和字节码文件放置到这个目录下。JSP 文件在被访问时,会被 Tomcat 转换成 Servlet 代码并编译成字节码,以提高后续访问的效率。 - 其他文件
包含许可证(LICENSE)和说明文件(如 NOTICE、RELEASE - NOTES 等),用于说明 Tomcat 的使用许可、版本信息等。
6.3 web项目部分目录介绍
java web项目分为普通的javaweb项目(比如Servlet项目)和maven javaweb项目。(SpringBoot也是web项目,但是因为里面内置Tomcat,目录不同)他们部分目录如下:

项目名: 项目名下面有WEB-INF ,META-INF,两个文件夹,和一些给浏览器访问的资源,如html文件。
WEB-INF:可以称为是安全目录,因为在这下面的文件,浏览器是访问不到的。我打包成war包部署到Tomcat,Tomcat解析后,里面的webinf依旧访问不到。
- web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。
- classes:包含所需要的 class 文件,包括 servlet class 和其他的一些class,他们不能包含在 .jar文件中。
- lib:存放web应用需要的各种JAR文件。
META-INF:用来配置应用程序、扩展程序、类加载器和服务。
注:完整的目录见idea 5 idea创建项目的方式。