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创建项目的方式。
相关推荐
7澄12 小时前
Java Web 底层解析:Servlet 执行流程、Tomcat 工作原理与自定义 Tomcat 实现
java·前端·servlet·tomcat·自定义tomcat·tomcat执行流程·servlet执行流程
Klong.k18 小时前
谈谈session、application存储对象
java·tomcat
0***v77718 小时前
JavaWeb项目打包、部署至Tomcat并启动的全程指南(图文详解)
java·tomcat
自在极意功。19 小时前
Socket学习
tomcat·socket·线程池
w1wi1 天前
【环境部署】MacOS安装Tomcat
java·macos·tomcat
杀死那个蝈坦2 天前
Caffeine
java·jvm·spring cloud·tomcat
q***16082 天前
解决 IntelliJ IDEA 中 Tomcat 日志乱码问题的详细指南
java·tomcat·intellij-idea
世界尽头与你2 天前
CVE-2020-1938_ Apache Tomcat AJP 文件读取与包含漏洞
java·网络安全·渗透测试·tomcat·apache
古城小栈2 天前
SpringBoot Web容器选型指南:Tomcat与Undertow技术对比及迁移实践
spring boot·后端·tomcat