深入解析Tomcat目录结构

Apache Tomcat 是一个强大的 Servlet 容器,它不仅支持 Java Servlet 和 JSP 技术,还提供了丰富的功能来帮助开发者构建和部署动态的 Web 应用。为了更好地理解和使用 Tomcat,了解其文件结构和组成部分是至关重要的。本文将深入探讨 Tomcat 的目录结构及其各个组件的作用。

Tomcat 的文件结构和组成

目录结构

目录 说明
bin 服务启动,停止等相关程序和文件
conf 配置文件
lib 库目录
log 日志目录
webapps 应用程序,应用部署目录
work jsp编译后的结果文件,建议提前预热访问,升级应用后,删除此目录数据才能更新

查看tomcat相关目录和文件

[root@ubuntu2404 tomcat]#pwd
/usr/local/src/tomcat
[root@ubuntu2404 tomcat]#ls
bin  BUILDING.txt  conf  CONTRIBUTING.md  lib  LICENSE  logs  NOTICE  README.md  RELEASE-NOTES  RUNNING.txt  temp  webapps  work
[root@ubuntu2404 tomcat]#ls bin/
bootstrap.jar       ciphers.sh                    daemon.sh     migrate.bat       shutdown.sh           tool-wrapper.bat
catalina.bat        commons-daemon.jar            digest.bat    migrate.sh        startup.bat           tool-wrapper.sh
catalina.sh         commons-daemon-native.tar.gz  digest.sh     setclasspath.bat  startup.sh            version.bat
catalina-tasks.xml  configtest.bat                makebase.bat  setclasspath.sh   tomcat-juli.jar       version.sh
ciphers.bat         configtest.sh                 makebase.sh   shutdown.bat      tomcat-native.tar.gz
[root@ubuntu2404 tomcat]#ls conf/
Catalina             context.xml           jaspic-providers.xsd  server.xml   tomcat-users.xml  web.xml
catalina.properties  jaspic-providers.xml  logging.properties    tomcat.conf  tomcat-users.xsd
[root@ubuntu2404 tomcat]#ls lib
annotations-api.jar       ecj-4.35.jar                          servlet-api.jar        tomcat-i18n-es.jar     tomcat-jdbc.jar
catalina-ant.jar          el-api.jar                            tomcat-api.jar         tomcat-i18n-fr.jar     tomcat-jni.jar
catalina-ha.jar           jakartaee-migration-1.0.9-shaded.jar  tomcat-coyote-ffm.jar  tomcat-i18n-ja.jar     tomcat-util.jar
catalina.jar              jasper-el.jar                         tomcat-coyote.jar      tomcat-i18n-ko.jar     tomcat-util-scan.jar
catalina-ssi.jar          jasper.jar                            tomcat-dbcp.jar        tomcat-i18n-pt-BR.jar  tomcat-websocket.jar
catalina-storeconfig.jar  jaspic-api.jar                        tomcat-i18n-cs.jar     tomcat-i18n-ru.jar     websocket-api.jar
catalina-tribes.jar       jsp-api.jar                           tomcat-i18n-de.jar     tomcat-i18n-zh-CN.jar  websocket-client-api.jar
[root@ubuntu2404 tomcat]#ls logs/
catalina.2025-05-03.log  catalina.out  localhost.2025-05-03.log  localhost_access_log.2025-05-03.txt
[root@ubuntu2404 tomcat]#ls webapps/
docs  examples  host-manager  manager  ROOT
[root@ubuntu2404 tomcat]#ls work/
Catalina
[root@ubuntu2404 tomcat]#ls work/Catalina/
localhost
[root@ubuntu2404 tomcat]#ls work/Catalina/localhost/
docs  examples  host-manager  manager  ROOT
[root@ubuntu2404 tomcat]#ls temp/
safeToDelete.tmp
[root@ubuntu2404 tomcat]#ll -i work/Catalina/localhost/
total 28
3804287 drwxr-x--- 7 tomcat tomcat 4096 May  3 18:24 ./
3804286 drwxr-x--- 3 tomcat tomcat 4096 May  3 18:24 ../
3804293 drwxr-x--- 3 tomcat tomcat 4096 May  3 18:29 docs/
3804290 drwxr-x--- 2 tomcat tomcat 4096 May  3 18:24 examples/
3804292 drwxr-x--- 3 tomcat tomcat 4096 May  3 19:05 host-manager/
3804288 drwxr-x--- 3 tomcat tomcat 4096 May  3 18:29 manager/
3804289 drwxr-x--- 3 tomcat tomcat 4096 May  3 18:28 ROOT/
[root@ubuntu2404 tomcat]#ll -i webapps/
total 28
3803488 drwxr-x---  7 tomcat tomcat 4096 Apr  1 22:40 ./
3803473 drwxr-xr-x  9 tomcat tomcat 4096 May  3 18:17 ../
3803491 drwxr-x--- 16 tomcat tomcat 4096 May  3 18:17 docs/
3803517 drwxr-x---  7 tomcat tomcat 4096 May  3 18:17 examples/
3803578 drwxr-x---  6 tomcat tomcat 4096 May  3 18:17 host-manager/
3803584 drwxr-x---  6 tomcat tomcat 4096 May  3 18:17 manager/
3803489 drwxr-x---  3 tomcat tomcat 4096 May  3 18:17 ROOT/
[root@ubuntu2404 tomcat]#tree work/Catalina/localhost/
work/Catalina/localhost/
├── docs
│   └── org
│       └── apache
│           └── jsp
│               └── WEB_002dINF
│                   └── jsp
├── examples
│   └── org
│       └── apache
│           └── jsp
│               └── WEB_002dINF
│                   └── jsp
├── host-manager
│   └── org
│       └── apache
│           └── jsp
│               └── WEB_002dINF
│                   └── jsp
├── manager
│   └── org
│       └── apache
│           └── jsp
│               └── WEB_002dINF
│                   └── jsp
└── ROOT└── org└── apache└── jsp29 directories, 2 files
[root@ubuntu2404 tomcat]#curl http://192.168.1.20:8080/
#当访问过后,work目录中生成新文件
[root@ubuntu2404 tomcat]#tree work/Catalina/localhost/
work/Catalina/localhost/
├── docs
│   └── org
│       └── apache
│           └── jsp
│               └── WEB_002dINF
│                   └── jsp
├── examples
│   └── org
│       └── apache
│           └── jsp
│               └── WEB_002dINF
│                   └── jsp
├── host-manager
│   └── org
│       └── apache
│           └── jsp
│               └── WEB_002dINF
│                   └── jsp
├── manager
│   └── org
│       └── apache
│           └── jsp
│               └── WEB_002dINF
│                   └── jsp
└── ROOT└── org└── apache└── jsp├── index_jsp.class   #字节码文件└── index_jsp.java    #servlet文件#tomcat会自动的将jsp文件生成java源文件,再编译成class文件
[root@ubuntu2404 tomcat]#less work/Catalina/localhost/ROOT/org/apache/jsp/index_jsp.java 
/** Generated by the Jasper component of Apache Tomcat* Version: Apache Tomcat/11.0.6* Generated at: 2025-05-03 11:25:58 UTC* Note: The last modified time of this file was set to*       the last modified time of the source file after*       generation to assist with modification tracking.*/
package org.apache.jsp;import jakarta.servlet.*;
import jakarta.servlet.http.*;
import jakarta.servlet.jsp.*;public final class index_jsp extends org.apache.jasper.runtime.HttpJspBaseimplements org.apache.jasper.runtime.JspSourceDependent,org.apache.jasper.runtime.JspSourceImports,org.apache.jasper.runtime.JspSourceDirectives {private static final jakarta.servlet.jsp.JspFactory _jspxFactory =jakarta.servlet.jsp.JspFactory.getDefaultFactory();private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;private static final java.util.Set<java.lang.String> _jspx_imports_packages;private static final java.util.Set<java.lang.String> _jspx_imports_classes;static {_jspx_imports_packages = new java.util.LinkedHashSet<>(4);_jspx_imports_packages.add("jakarta.servlet");_jspx_imports_packages.add("jakarta.servlet.http");

配置文件和日志

配置文件说明
官方帮助文档:https://tomcat.apache.org/tomcat-10.1-doc/index.html
在tomcat安装目录下的 conf 子目录中,有以下的 tomcat 的配置文件

文件名 说明
server.xml 主配置文件
web.xml 每个webapp只有“部署”后才能被访问,它的部署方式通常由web.xml进行定义,其存放位置为WEB-INF/目录中;此文件为所有的webapps提供默认部署相关的配置,每个web应用也可以使用专用配置文件,来覆盖全局文件
context.xml 用于定义所有web应用均需加载的Context配置,此文件为所有的 webapps提供默认配置,每个web应用也可以使用自已专用的配置,它通常由专用的配置文件context.xml来定义,其存放位置为WEB-INF/目录中,覆盖全局的文件
tomcat-users.xml 用户认证的账号和密码文件
catalina.policy 当使用security选项启动tomcat时,用于为tomcat设置安全策略
catalina.properties Tomcat 环境变量的配置,用于设定类加载器路径,以及一些与JVM调优相关参数
logging.properties Tomcat 日志系统相关的配置,可以修改日志级别和日志路径等

注意:配置文件大小写敏感
查看配置文件

[root@ubuntu2404 conf]#pwd
/usr/local/src/tomcat/conf
[root@ubuntu2404 conf]#wc -l context.xml jaspic-providers.xsd server.xml tomcat-users.xml web.xml catalina.properties jaspic-providers.xml logging.properties tomcat-users.xsd 31 context.xml52 jaspic-providers.xsd154 server.xml56 tomcat-users.xml4735 web.xml198 catalina.properties23 jaspic-providers.xml76 logging.properties59 tomcat-users.xsd5384 total

主要配置文件内容

[root@ubuntu2404 tomcat]#grep -v '\-\-' conf/server.xml
<?xml version="1.0" encoding="UTF-8"?>Licensed to the Apache Software Foundation (ASF) under one or morecontributor license agreements.  See the NOTICE file distributed withthis work for additional information regarding copyright ownership.The ASF licenses this file to You under the Apache License, Version 2.0(the "License"); you may not use this file except in compliance withthe License.  You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/93465.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/93465.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

专题:2025抖音电商与微短剧行业研究报告|附150+份报告PDF汇总下载

原文链接&#xff1a;https://tecdat.cn/?p43595 当618大促的硝烟散去&#xff0c;抖音电商的生态分化愈发刺眼&#xff1a;服饰内衣以27.5%的份额稳坐头把交椅&#xff0c;而无数中小商家却在“流量荒”中挣扎。这场看似繁荣的盛宴里&#xff0c;平台规则如同无形的手&#x…

3.Ansible自动化之-编写和运行playbook

3.Ansible编写和运行 Playbook Playbook 介绍 如果把 Ansible 的ad-hoc命令比作 “一次性脚本”&#xff08;适合临时执行单个简单任务&#xff09;&#xff0c;那么Playbook就是 “可重复执行的程序”&#xff08;适合复杂、多步骤的管理流程&#xff09;。 举个例子&#…

Vue实时刷新,比如我提交审核,审核页面还需要点查询才能看到最新数据

refreshTimer: null,lastRefreshTime: null}; }, created() {console.log(组件创建&#xff0c;初始化数据...);this.loadLatestData();this.setupAutoRefresh(); }, activated() {// 当使用keep-alive时&#xff0c;组件激活时刷新数据console.log(组件激活&#xff0c;刷新数…

Docker入门:容器化技术的第一堂课

Docker入门&#xff1a;容器化技术的第一堂课 &#x1f31f; 你好&#xff0c;我是 励志成为糕手 &#xff01; &#x1f30c; 在代码的宇宙中&#xff0c;我是那个追逐优雅与性能的星际旅人。 ✨ 每一行代码都是我种下的星光&#xff0c;在逻辑的土壤里生长成璀璨的银河&#…

【SLAM】不同相机模型及其常见的链式求导推导

【SLAM】不同相机模型及其常见的链式求导推导1. 鱼眼相机模型链式求导1. 鱼眼相机畸变模型2. 雅可比矩阵的推导畸变坐标相对于归一化坐标的雅可比矩阵 Hdz/dznH_{dz/dzn}Hdz/dzn​畸变坐标相对于相机内参的雅可比矩阵 Hdz/dzetaH_{dz/dzeta}Hdz/dzeta​3. 注意4. 输入输出含义5…

【人工智能】本地部署 KTransformers并加载大模型笔记

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G技术研究。 博客内容主要围绕…

TDengine IDMP 高级功能(3. 概念解释)

枚举集 为提升数据的可阅读性&#xff0c;IDMP 为数据提供枚举类型。您可以将一些整型数定义为一具有可读性的字符串。与其他软件一样&#xff0c;您可以定义多个枚举集&#xff0c;每个枚举集可以有多个枚举量。您可以增加、删除、修改、查询枚举集与枚举量。 但独特的是&am…

CUDA 入门教程(GPT优化版)

学习路径 一、环境准备与快速入门 搭建开发环境 ○ 安装 CUDA Toolkit,适用于 Windows(如 Visual Studio)或 Linux,确保你的设备为 NVIDIA GPU 并支持 CUDA。(wholetomato.com) ○ 如果你偏好轻量工具,也可用 VS Code + Nsight 开发环境进行 CUDA 编程。(wholetomato.com)…

react项目性能优化的hook

前言&#xff1a;在项目中开发中&#xff0c;性能优化是很重要的&#xff0c;react有提供专门的hook&#xff0c;useMemo 和useCallback 这里说一说他们。区别&#xff1a;特性useMemouseCallback返回值缓存一个 值&#xff08;计算结果&#xff09;缓存一个 函数依赖变化时重新…

Docker(springcloud笔记第三期)

p.s.这是萌新自己自学总结的笔记&#xff0c;如果想学习得更透彻的话还是请去看大佬的讲解 目录镜像与容器一些命令与镜像命名规范数据卷自定义镜像Dockerfile镜像与容器 当我们利用Docker安装应用时&#xff0c;Docker会自动搜索并下载应用镜像(image),镜像不仅包含应用本身&…

MySQL定时任务详解 - Event Scheduler 事件调度器从基础到实战

&#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Micro麦可乐的博客 &#x1f425;《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程&#xff0c;入门到实战 &#x1f33a;《RabbitMQ》…

redis存储原理与对象模型

redis中的不同线程 redis单线程是指什么&#xff1f; redis的所有命令处理都在同一个线程中完成 redis为什么采用单线程&#xff1f; redis中存在多种数据结构存储value&#xff0c;如果采用多线程&#xff0c;加锁会很复杂、加锁力度不阿红控制&#xff0c;同时&#xff0c…

基于微信小程序的家教服务平台的设计与实现/基于asp.net/c#的家教服务平台/基于asp.net/c#的家教管理系统

基于微信小程序的家教服务平台的设计与实现/基于asp.net/c#的家教服务平台/基于asp.net/c#的家教管理系统

安全审计-iptales防火墙设置

文章目录一、iptales防火墙设置1.ip规则设置2.ip端口规则设置3.删除规则4.INPUT默认设置5.ping、本地访问规则6.保存还原规则7.查看清除规则一、iptales防火墙设置 1.ip规则设置 #允许ip访问本服务器 iptables -I INPUT -s 192.168.205.129 -p tcp -j ACCEPT#允许某IP或某网段…

Linux小白加油站,第二周

1.grep命令中哪个选项可以忽略大小写进行搜索?grep -i 2.如何用grep命令查找包含”error关键字的日志文件并返回文件名?grep -lr3.解释grep命令中^f...d$这个表达式的含义^f&#xff1a;以f开头..&#xff1a;任意两个字符d$&#xff1a;以d结尾4.如何过滤掉文件中的注释行以…

【前端基础】19、CSS的flex布局

一、FlexBox概念 FlexBox翻译为弹性盒子。 弹性盒子是一种用于按行或按列布局元素的一维布局方式。元素可以膨胀以填充额外的空间&#xff0c;收缩以适应更小的空间。我们使用FlexBox来进行布局的方案称为flex布局。二、flex布局的重要概念 两个重要的概念 开启flex布局的元素叫…

Effective C++ 条款46:需要类型转换时请为模板定义非成员函数

Effective C 条款46&#xff1a;需要类型转换时请为模板定义非成员函数核心思想&#xff1a;当模板类需要支持隐式类型转换时&#xff0c;应将非成员函数声明为友元并定义在类内部&#xff08;或通过辅助函数实现&#xff09;&#xff0c;以绕过模板参数推导的限制&#xff0c;…

用Python对机器学习数据进行缩放

许多机器学习算法期望数据被一致地缩放。 在为机器学习扩展数据时&#xff0c;你应该考虑两种常用的方法。 在这个教程中&#xff0c;您将了解如何为机器学习重新缩放您的数据。阅读完这个教程后&#xff0c;您将知道&#xff1a; 如何从头开始对您的数据进行标准化。如何从…

Application-properties 配置大全

SpringBoot - application.properties 配置大全 SpringBoot项目最重要也是最核心的配置文件就是application.properties&#xff0c;所有的框架配置都需要在这个配置文件中说明&#xff0c;以下配置不会的可以进行查阅并修改 &#xff03;SPRING CONFIG&#xff08;ConfigFileA…

MXFP4量化:如何在80GB GPU上运行1200亿参数的GPT-OSS模型

大型语言模型&#xff08;Large Language Models, LLMs&#xff09;如GPT-OSS、GPT-4、LLaMA和Mixtral的快速发展显著提升了人工智能的能力边界&#xff0c;但同时也带来了严峻的内存资源挑战。以1200亿参数的模型为例&#xff0c;在FP16精度下仅权重存储就需要约240GB的内存空…