Tomcat 是一款开源的、轻量级的 Web 服务器,它不仅能够提供 HTTP 服务,还能够运行 Java Servlet 和 JavaServer Pages(JSP)。对于许多开发者来说,理解 Tomcat 的目录结构以及如何在该结构中组织应用,往往是入门的第一步。
一、Tomcat 目录结构概述
Tomcat 的目录结构相对简单,但每个目录和文件都有其明确的用途。
1. bin 目录
bin 目录包含启动和停止 Tomcat 所需的脚本。它的内容包括:
startup.sh/startup.bat:启动 Tomcat。
shutdown.sh/shutdown.bat:停止 Tomcat。
catalina.sh/catalina.bat:Tomcat 启动时的核心脚本,包含了一些启动参数的设置。
setenv.sh/setenv.bat:用于设置 Tomcat 环境变量,通常用于配置 Java 堆大小、日志设置等。
2. conf 目录
conf 目录包含 Tomcat 的核心配置文件,这些文件直接影响 Tomcat 的行为。常见的配置文件有:
server.xml:Tomcat 的主要配置文件,定义了服务器的端口、连接器、虚拟主机等。
web.xml:Web 应用的默认部署描述符。
context.xml:为每个 Web 应用提供额外的配置。
3. lib 目录
lib 目录存放 Tomcat 运行时所需要的 Java 类库和 JAR 包,包括:
servlet-api.jar:Java Servlet API 的实现。
jsp-api.jar:Java Server Pages(JSP)API 的实现。
其他第三方库和 Tomcat 特有的库文件。
4. logs 目录
logs 目录用于存储 Tomcat 启动、运行过程中的日志文件。常见的日志文件有:
catalina.out:Tomcat 启动和运行时的主要日志文件。
localhost_access_log.*.txt:记录每个请求的访问日志。
5. webapps 目录
webapps 目录是 Tomcat 的应用目录,所有部署的 Web 应用都应该放在此目录下。每个应用通常以一个文件夹的形式存在,目录中包含了应用的 WEB-INF 和 META-INF 等文件夹。
6. work 目录
work 目录用于存放 Tomcat 编译 JSP 文件后的中间文件。每当 Tomcat 运行一个 JSP 文件时,都会将其编译成 Java 类文件并存放在这个目录中。
7. temp 目录
temp 目录是 Tomcat 用来存放临时文件的地方。例如,Tomcat 会将文件上传的内容存放在该目录中,处理过程中生成的临时数据也会保存在这里。
二、Tomcat Web 应用部署
接下来,我们来实现一个简单的 Web 应用并部署到 Tomcat 上。我们以一个简单的 Servlet 应用为例,展示如何在 Tomcat 的 webapps/ 目录下进行部署。
1. 创建 Web 应用目录结构
有一个简单的 Web 应用名为 MyClass,其目录结构如下:
2.编写servlet
在 WEB-INF/classes/ 目录下,我们编写一个简单的 Servlet MyServlet.java。这里直接使用编译后的.class 文件
3. 编译 Servlet
将 HelloServlet.java 编译为 .class 文件并放入 WEB-INF/classes/ 目录。这里直接使用编译后的.class 文件。
4. 配置 web.xml
在 WEB-INF/web.xml 文件中配置 Servlet 和其映射:
<servlet>
<servlet-name>my</servlet-name> <!-- 给当前文件取的别名 -->
<servlet-class>MyServlet</servlet-class> <!-- 要映射的.class文件的名称 -->
</servlet>
<!-- servlet-mapping 是对上面servlet 文件的地址映射 -->
<servlet-mapping>
<servlet-name>my</servlet-name>
<url-pattern>/myServlet </url-pattern> <!-- 外部访问的具体路径 -->
</servlet-mapping>
5. 部署到 Tomcat
将 MyWebApp 目录放入 Tomcat 的 webapps/ 目录下。然后,启动 Tomcat,访问 localhost:8080/myweb/myServlet,你将看到页面输出 my servlet 。
三、Tomcat 配置文件与目录内容对比
目录/文件 | 内容描述 | 配置作用 | 示例 |
bin/ | 启动和停止 Tomcat 的脚本 | 启动、停止、配置 Tomcat 环境变量 | startup.sh,shutdown.sh |
conf/ | 存放核心配置文件 | 配置服务器端口、Web 应用配置、日志等 | server.xml,web.xml,context.xml |
lib/ | 存放 Tomcat 所需的 JAR 包 | 存放 Tomcat 运行所需的 Java 类库和支持文件 | servlet-api.jar,jsp-api.jar |
logs/ | 存放日志文件 | 存储 Tomcat 运行过程中的日志,便于调试和监控 | catalina.out,localhost_access_log |
webapps/ | 存放 Web 应用的目录 | 部署的应用程序所在的目录,支持 Web 应用自动部署 | ROOT/,MyWebApp/ |
work/ | 存放 Tomcat 编译 JSP 文件后的临时文件 | 临时存放 JSP 编译后的.class文件 | catalina/,localhost/ |
temp/ | 存放临时文件 | 存放临时上传的文件和处理中的临时数据 | upload/,tmp/ |