6 Tomcat介绍

6 Tomcat介绍

6.1 版本

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

6.2 Tomcat安装目录

  1. 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。
  2. conf 目录
    存放 Tomcat 服务器的全局配置文件。其中 server.xml 是主要配置文件,配置了 Tomcat 的关键端口号等重要参数;Tomcat - users.xml 用于配置 Tomcat 用户的账户名和密码;web.xml 则定义了一些全局的 Servlet 配置等信息。
  3. lib 目录
    存放 Tomcat 服务器以及所有 web 应用都能访问的 jar 文件,这些 jar 文件提供了 Tomcat 运行和 web 应用执行所需的类库。
  4. logs 目录
    记录 Tomcat 执行过程中的日志文件,通过查看这些日志可以了解 Tomcat 的运行状态,如是否正常启动、是否出现错误等。如果启动失败,此时startup.bat会直接关闭,来不及看哪里有问题。此时,在logs中只要找到对应日期的文件,打开,翻到对应的启动时间,即可查看具体的哪里出错。
  5. temp 目录
    在 Tomcat 运行时产生临时文件,比如在处理请求过程中生成的一些临时数据文件。
  6. webapps 目录
    Tomcat 的主要 Web 发布目录,默认情况下,JAVAEE 开发人员会将 Web 项目文件放置在此目录下,Tomcat 会自动部署和管理该目录下的应用。此时启动 Tomcat,就可以访问项目 里的内容。此外,如果是开发软件启动Tomcat,软件会帮你把项目打包好,然后自动放到 webapps 目录里,或者用一种更高效的方式让 Tomcat 直接加载。
    webapps下面还会有一个默认的ROOT目录。它是 Tomcat 自带的一个默认项目,当你访问 http://localhost:8080/ 而不指定任何项目名时,Tomcat 就会展示这个 ROOT 项目里的内容。
  7. work 目录
    Tomcat 将 JSP 文件生成的 Servlet 源文件和字节码文件放置到这个目录下。JSP 文件在被访问时,会被 Tomcat 转换成 Servlet 代码并编译成字节码,以提高后续访问的效率。
  8. 其他文件
    包含许可证(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依旧访问不到。

  1. web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。
  2. classes:包含所需要的 class 文件,包括 servlet class 和其他的一些class,他们不能包含在 .jar文件中。
  3. lib:存放web应用需要的各种JAR文件。
    META-INF:用来配置应用程序、扩展程序、类加载器和服务。
    注:完整的目录见idea 5 idea创建项目的方式。
相关推荐
次次皮1 天前
Linux 下通过 XShell 手动更新 Tomcat 应用并重启
前端·tomcat·jar
Listen·Rain3 天前
用AI开发出一个AI
java·人工智能·spring boot·tomcat·intellij-idea·mybatis·visual studio
Full Stack Developme4 天前
SpringBoot 内嵌 Tomcat 的启动流程
spring boot·后端·tomcat
Full Stack Developme4 天前
Tomcat 如何处理HTTP请求
java·http·tomcat
Full Stack Developme5 天前
Tomcat 设计原理
java·tomcat
Full Stack Developme5 天前
Tomcat NIO连接器内部如何实现零拷贝 Session管理如何实现集群同步
java·tomcat·nio
BullSmall5 天前
Tomcat 部署 Jenkins → Docker Jenkins 完整迁移方案
docker·tomcat·jenkins
baozhengw6 天前
信创改造-SpringBootJar包改为WAR包部署Tomcat
java·tomcat
Java面试题总结11 天前
mybatis插件
java·tomcat·mybatis
左左右右左右摇晃12 天前
手写Tomcat原理整理
java·开发语言·笔记·tomcat