Tomcat 目录结构和应用实现

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 和其映射:

XML 复制代码
 <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/ |

相关推荐
XiYang-DING6 小时前
【Java】二叉搜索树(BST)
java·开发语言·python
weixin_437957616 小时前
Mysql安装不成功
java
Lyyaoo.6 小时前
【JAVA基础面经】进程安全问题(synchronized and volatile)
java·开发语言·jvm
Andya_net6 小时前
Java | 基于 Feign 流式传输操作SFTP文件传输
java·开发语言·spring boot
_Evan_Yao6 小时前
别让“规范”困住你:前后端交互中的方法选择与认知突围
java·后端·交互·restful
星乐a7 小时前
String vs StringBuilder vs StringBuffer深度解析
java
萧逸才7 小时前
【learn-claude-code-4j】S14FeiShu - 飞书群聊智能体
java·人工智能·ai·飞书
好家伙VCC7 小时前
**发散创新:基于Rust的轻量级权限管理库设计与开源许可证实践**在现代分布式系统中,**权限控制(RBAC
java·开发语言·python·rust·开源
m0_719084118 小时前
天机学堂aaaa
java
孙鹏宇.8 小时前
左值右值.
java·开发语言