深入解析Tomcat目录结构

发布于:2025-08-16 ⋅ 阅读:(18) ⋅ 点赞:(0)

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"

网站公告

今日签到

点亮在社区的每一天
去签到