Tomcat映射虚拟目录的三种方式(2021版)
Posted 于大圣
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tomcat映射虚拟目录的三种方式(2021版)相关的知识,希望对你有一定的参考价值。
前言:首先要弄明白什么是TOMCAT的虚拟目录:当WEB应用开发完毕后,如果想要对外发布就需要部署到服务器上面,服务器的主要功能就是需要监听端口、接收和解析访问请求并转发给相应的WEB应用进行处理。比如用户访问A应用(https://host:port/A)时,那么服务器就需要找到应用名A和WEB应用的映射关系,以便服务器能够正确地转发客户访问请求到WEB应用,这个应用名A就是一个虚拟目录,这个虚拟目录映射到WEB应用所在的目录;我们把将虚拟目录与WEB应用所在目录的映射过程称为虚拟目录的映射。
一、TOMCAT服务器的自动映射
TOMCAT有个webapps目录且会自动管理该目录下的所有web应用,并把它映射成虚拟目录。换句话说只要你把WEB应用项目放到这个webapps目录下,启动服务器后外界可以直接访问。日常开发中,我们需要把WEB应用打包成war包后放到这个webapps目录下,启动服务器后会自动解压缩到当前目录中。比如我们把JavaWebDemo.war放置到webapps目录下,启动服务器后,会解压成JavaWebDemo目录并映射成一个同名虚拟目录"/JavaWebDemo",然后就可以通过https://host:port/JavaWebDemo访问了。
二、在server.xml中的Host元素进行配置Context
首先看下面这个配置,特别是Context元素。可以简单的理解为一个WEB应用对应一个Context元素。
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context path="/JavaWebDemo" docBase="C:/Users/Administrator/Desktop/JavaWebDemo" />
</Host>
Context元素的作用就是虚拟目录的映射,该元素有两个属性:path和docBase
- path:用来配置虚拟目录名称,必须以"/"开头;
- docBase:WEB应用所在的物理路径;
以后访问"/JavaWebDemo/index.jsp"时,根据虚拟目录的映射,相当于访问"C:/Users/Administrator/Desktop/JavaWebDemo/index.jsp"。
注意:这种方式虽然可行,但Tomcat官方以不推荐,原因如下,大家了解下即可:
- 在server.xml中配置的任何元素和属性,在重启服务器后server.xml才会被重新加载配置才可以生效;
- 这种配置方式容易被默认的Context元素重写;
三、基于$CATALINA_BASE/conf/[enginename]/[hostname]的虚拟目录映射
这里首先需要首先借助下面的图来理解下什么是CATALINA_HOME和CATALINA_BASE。一个服务器可以配置多个WEB应用,可以简单理解为CATALINA_HOME就是服务器安装目录,一个WEB应用对应一个CATALINA_BASE(TOMCAT实例),由于此次不涉及多实例多应用,那么也可以把CATALINA_BASE理解为服务器安装目录。
接下来看一下enginename和hostname,可以借助server.xml中的Engine元素中的配置理解下;那么$CATALINA_BASE/conf/[enginename]/[hostname] -> tomcat安装目录/conf/Catalina/localhost
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context path="/upload/images" docBase="C:/Users/Administrator/Desktop/a" />
</Host>
</Engine>
好的,了解完以上常识,下面进入该映射配置正题:
简单来说就是要在$CATALINA_BASE/conf/[enginename]/[hostname](tomcat安装目录/conf/Catalina/localhost)下新建一个JavaWebDemo.xml,内容如下:
<Context docBase="C:/Users/Administrator/Desktop/JavaWebDemo" />
虚拟目录的映射中path取自为文件名,即JavaWebDemo.xml -> JavaWebDemo。"docBase"取自文件中的docBase配置的属性值;
总结:
- TOMCAT服务器映射虚拟目录需要两个必要信息来建立映射:虚拟路径名称、WEB应用所在目录;
- 以上三种方式无非通过不同的方式来告诉TOMCAT服务器必要信息来映射虚拟目录;
- 以上三种方式各有利弊,具体问题具体分析即可;
以上,完了!
以上是关于Tomcat映射虚拟目录的三种方式(2021版)的主要内容,如果未能解决你的问题,请参考以下文章