Tomcat 目录结构和应用实现

news/2025/2/27 8:14:55

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/


http://www.niftyadmin.cn/n/5869786.html

相关文章

解决Deepseek“服务器繁忙,请稍后再试”问题,基于硅基流动和chatbox的解决方案

文章目录 前言操作步骤步骤1&#xff1a;注册账号步骤2&#xff1a;在线体验步骤3&#xff1a;获取API密钥步骤4&#xff1a;安装chatbox步骤5&#xff1a;chatbox设置 价格方面 前言 最近在使用DeepSeek时&#xff0c;开启深度思考功能后&#xff0c;频繁遇到“服务器繁忙&am…

C++ Primer Plus第八章课后习题总结

1. 编写通常接受一个参数&#xff08;字符串的地址&#xff09;&#xff0c;并打印该字符串的函数。然而&#xff0c;如果提供了第二个参数&#xff08;int类型&#xff09;&#xff0c;且该参数不为0&#xff0c;则该函数打印字符串的次数将为该函数被调用的次数&#xff08;注…

JVM垃圾回收器深度底层原理分析与知识体系构建

一、垃圾回收的基本步骤 标记&#xff08;Marking&#xff09; 从GC Roots&#xff08;如虚拟机栈、方法区静态变量、本地方法栈等&#xff09;出发&#xff0c;遍历对象引用链&#xff0c;标记所有可达对象为存活对象&#xff0c;未被标记的则视为垃圾。此阶段需暂停用户线程&…

224Gb/s信号完整性测试治具设计(二)

第一篇看这里&#xff1a; 224Gb/s信号完整性测试治具设计&#xff08;一&#xff09;-CSDN博客 聚焦解决方案空间 始终满足 1.6T 测试夹具的目标插入损耗要求 IEEE P802.3dj 中当前的插入损耗规范要求&#xff0c;在 53.125 GHz 频率下&#xff0c;主机合规板&#xff08…

无人机遥控器的亮度 和 两个工作频率

工作频率 2.4000-2.4835 GHz &#xff0c; 5.725-5.850 GHz 1.这是一个无人机的遥控器的两个工作频率&#xff0c;为什么会有两个工作频率&#xff1f; 无人机的遥控器采用双频段设计&#xff08;2.4GHz 和 5.8GHz&#xff09;&#xff0c;主要是为了解决以下问题并优化性…

HTTP非流式请求 vs HTTP流式请求

文章目录 HTTP 非流式请求 vs 流式请求一、核心区别 服务端代码示例&#xff08;Node.js/Express&#xff09;非流式请求处理流式请求处理 客户端请求示例非流式请求&#xff08;浏览器fetch&#xff09;流式请求处理&#xff08;浏览器fetch&#xff09; Python客户端示例&…

react native中如何实现吸顶的效果

rn中实现吸顶效果用ScrollView、SectionList、FlatList都可以实现&#xff0c;因为SectionList、FlatList都是继承自ScrollView&#xff0c;都会有stickyHeaderIndices属性&#xff0c;这个属性是一个数组&#xff0c;可以决定下标为几的组件有吸顶的效果。 <FlatListdata{…

【EB-06】SystemCreator dbc转arxml

SystemCreator dbc转arxml 1. SystemCreator 意义2. SystemCreator使用方法2.1 实现步骤2.2 参考官方文档方法1. SystemCreator 意义 EB Tresos 对dbc直接导入的支持不是很完善,dbc也不是AUTOSAR标准的数据库文件,EB建议所有通信矩阵通过ARXML交互比较合理(AUTOSAR定义的)…