Tomcat
基本信息暂时不作过多介绍了,本文聚焦于Tomcat的目录结构理解
目录结构一览
|
|
其他没有列出的根目录下的普通文件不重要
Webapps
Tomcat
的目录结构中,最值得关注的目录这个是发布和访问目录
webapps
目录用来存放应用程序,当tomcat启动时会去加载webapps目录下的应用程序。可以以文件夹、war包、jar包的形式发布应用。
也可以把应用程序放置在磁盘的任意位置,在配置文件中映射好就行,如下
其中又分为ROOT
目录和其他目录
ROOT
默认情况下,没有访问路径的请求,会被映射到ROOT
目录中
举例:如果访问http://localhost:8080/
的话,就回去查找ROOT
目录
证明:
12133.txt
内容如下
这时候,如果访问http://127.0.0.1:8080/12133.txt
,结果如下
App目录
其他目录一般遵循一个标准结构,我们统称这种目录为App目录
下图中的前4个目录都可以称为App目录
例如:访问http://127.0.0.1:8080/examples/
,那么默认访问的是http://127.0.0.1:8080/examples/index.html
效果如下
index.html
内容如下
|
|
完全对应了
App目录标准结构
Tomcat 自带的 App目录的目录内容如下
|
|
其中,WEB-INF
是必要的重要目录,且必须是这个名字!
WEB-INF
WEB-INF
一般是受保护的资源目录,浏览器通过url不可以直接访问的目录
- /WEB-INF/web.xml Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。 必要文件,web项目的基本配置文件。(较新的版本中可以没有该文件,但是学习过程中还是需要该文件)
- /WEB-INF/classes/ 包含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中。 web项目中如果没有源码,则该目录不会出现
- /WEB-INF/lib/
存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的
jar
文件,如数据库驱动jar
文件。 web项目要是没有依赖任何jar,则该目录不会出现 - /WEB-INF/src/ 源码目录,按照包名结构放置各个 Java 文件。
- /WEB-INF/database.properties 数据库配置文件
- /WEB-INF/tags/
存放了自定义标签文件
该目录并不一定为 tags,可以根据自己的喜好和习惯为自己的标签文件库命名,当使用自定义的标签文件库名称时,在使用标签文件时就必须声明正确的标签文件库路径。例如:当自定义标签文件库名称为 simpleTags 时,在使用 simpleTags 目录下的标签文件时,就必须在 jsp 文件头声明为:
<%@ taglibprefix="tags" tagdir="/WEB-INF/simpleTags" % >
- /WEB-INF/jsp/ jsp 文件的存放位置。改目录没有特定的声明,同样,可以根据自己的喜好与习惯来命名。此目录主要存放的是 jsp 1.2 以下版本的文件,为区分 jsp 2.0 文件,通常使用 jsp 命名,当然你也可以命名为 jspOldEdition 。
META-INF
- jar文件
开发中可以直接使用java class文件来运行程序,不过这样不太方便,所以出现了jar文件来提供发布和运行,jar文件实际上是class文件的zip压缩存档,有很多工具都可以操纵这种格式的文件,
但是jar文件本身并不能表达应用程序的便签信息,于是出现了META-INF目录
jar文件中有一个特定的目录来存放标签信息:META-INF目录
为了提供存档的便签信息,出现了
META-INF/Manifest.mf
文件,它包含了jar文件的内容描述,在应用程序运行时向JVM提供应用程序的信息。
jar文件都有一个默认产生的META-INF目录和其中的manifest.mf文件
使用jar命令可以直接产生META-INF目录和manifest.mf文件
Manifest.mf
文件示例:
|
|
解析
|
|
其实manifest.mf
文件中的配置信息除了上面的四个之外,还是有很多的,以下是几个常见的属性:
一般属性
- Signature-Vresion:定义jar文件的签名版本
- Class-Path:内部的类搜索路径,提供给应用程序或者类装载器
应用程序的相关属性
- Main-Class:定义jar文件的入口类,该类必须可执行!一旦定义了该属性就可以使用
java -jar 程序名.jar
来运行该jar文件
Manifest.mf
文件格式要求
manifest
文件中的每一行都是key-value
对应的;属性名开头,接着是 “:” ,然后是属性值;
每行最多72个字符,如果需要增加,可以在下一行续行,续行以空格开头,以空格开头的行都会被视为前一行的续行。
其他位置文件映射
找到conf/server.xml
文件中的 host
标签,在 host
标签内定义子标签Context
Context标签必须定义 docBase(实际文件所在文件夹路径:例F:\test)属性,path(访问虚拟路径:例/files)属性
举例
|
|
配置好后,访问路径 localhost:8080/files/css.txt
即可访问到实际路径 F:\test\css.txt
文件
conf\Catalina
这个目录由上可知,这个目录的配置有关于默认加载的项目
而大名鼎鼎的IDEA,即是通过控制conf\Catalina\localhost
下的*.xml
文件,来映射设置Tomcat
与项目output目录之间的关系
上图可以看到,内容其实与conf/server.xml
中的配置内容无二,只是这个无需考虑放入到指定位置
补充:
xml 文件内容含义如下:
path
表示工程的访问路径:/jndidemo_war_exploded
docBase
表示实际的工程目录在哪里,也就是我们需要访问jndidemo_war_exploded
文件夹在我们主机上的全路径注意:这个地方
path
的参数即/jndidemo_war_exploded
要与配置文件名称相一致,可以看到配置文件为jndidemo_war_exploded.xml
,其文件名称与path
的参数即/jndidemo_war_exploded
相一致
Ref
https://blog.csdn.net/m0_68988603/article/details/124285667
https://blog.csdn.net/Helen_1997_1997/article/details/131935349
https://blog.csdn.net/u011479200/article/details/108244382