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
└── jsp
29 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.HttpJspBase
implements 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.xml
52 jaspic-providers.xsd
154 server.xml
56 tomcat-users.xml
4735 web.xml
198 catalina.properties
23 jaspic-providers.xml
76 logging.properties
59 tomcat-users.xsd
5384 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 more
contributor license agreements. See the NOTICE file distributed with
this 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 with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS"