前言:首先要弄明白什么是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 &quot;%r&quot; %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官方以不推荐,原因如下,大家了解下即可:

  1. 在server.xml中配置的任何元素和属性,在重启服务器后server.xml才会被重新加载配置才可以生效;
  2. 这种配置方式容易被默认的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 &quot;%r&quot; %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配置的属性值;

总结:

  1. TOMCAT服务器映射虚拟目录需要两个必要信息来建立映射:虚拟路径名称、WEB应用所在目录;
  2. 以上三种方式无非通过不同的方式来告诉TOMCAT服务器必要信息来映射虚拟目录;
  3. 以上三种方式各有利弊,具体问题具体分析即可;

以上,完了!

Tomcat映射虚拟目录的三种方式(2021版)相关推荐

  1. git工具 将源码clone到本地指定目录的三种方式

    git工具 将源码clone到本地指定目录的三种方式 CreationTime--2018年7月27日15点34分 Author:Marydon 1.情景展示 运行git-bash.exe,输入命令: ...

  2. 在Tomcat配置JNDI数据源的三种方式

    转载自   在Tomcat配置JNDI数据源的三种方式 在我过去工作的过程中,开发用服务器一般都是Tomcat,数据源的配置往往都是在applicationContext.xml中配置一个dataSo ...

  3. 在Linux安装配置Tomcat 并部署web应用 ( 三种方式 )

    系统版本:centos6.5版本 java版本:1.7 一.准备工作 1.java -version 检查是否有java环境,没有则需要去安装并配置到环境变量中. 2.下载tomcat包,下载地址:h ...

  4. tomcat部署web应用的三种方式(转)

    1.直接放到Webapps目录下       Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这 个目录下的应用.也可以将JSP程序打包成一个war包放在目录下 ...

  5. Tomcat配置虚拟主机的两种方式

    1.基于主机名的虚拟主机配置 在随意盘符下建立一个目录作为虚拟地址的目录.例如:F:\virtualhost1,在其下建立 test1.html,写入内容例如:test 在tomcat/conf/se ...

  6. Tomcat 映射虚拟目录

    2019独角兽企业重金招聘Python工程师标准>>> 运行环境:Tomcat6.0,eclipseMars 实现方法 (建议)方法1.%TOMCAT_HOME%/conf/serv ...

  7. Tomcat部署web应用的三种方式

    原文:http://my.oschina.net/sunchp/blog/90235 一:相关概念 CATALINA_HOME:tomcat安装目录 CATALINA_BASE:tomcat工作目录 ...

  8. 【转】Apache 配置虚拟主机三种方式

    Apache 配置虚拟主机三种方式 原文博客http://www.cnblogs.com/hi-bazinga/archive/2012/04/23/2466605.html 一.基于IP 1. 假设 ...

  9. 简单介绍apache虚拟主机配置的三种方式

    本文主要介绍了apache虚拟主机配置的三种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 记事本打开httpd.conf文 ...

最新文章

  1. 2021年春季学期-信号与系统-第八次作业参考答案-第八小题
  2. 【转】Impala导出查询结果到文件
  3. Ubuntu 14.04 登陆界面循环问题解决
  4. 12.IDA-虚函数和虚表
  5. 前端学习(2217):react元素渲染之时钟
  6. LeetCode 911. 在线选举(二分查找)
  7. 过拟合解决方法之L2正则化和Dropout
  8. 协议圣经 RTSP(三)
  9. css3直线运动_纯css3实现曲线运动——贝塞尔曲线(cubic-bezier)
  10. 传微软移动设备部门开始扩招员工
  11. apache+php
  12. BestCoder Round #75
  13. javascript中的滚动到顶部和Scroll有关的方法
  14. kalipython图形界面_Kali入侵入门版笔记!!!
  15. 矩阵分析与应用(二)
  16. 如何选取适合自己的三维扫描仪
  17. androidx86编译踩坑
  18. 春秋战国时期灭了三个国家的陈国女人
  19. MySQL--基础知识点--64--等值连接/自连接/自然连接/外连接
  20. 逻辑斯蒂分布模型、二项逻辑斯蒂回归模型、多项逻辑斯蒂回归模型

热门文章

  1. vs2015企业版密钥
  2. iOS : 静态库(.framework)合并
  3. android中实现“再按一次退出”功能
  4. Linux本地无法登录,远程却可以登录
  5. [Node.js] 模块化 -- http服务器模块
  6. JS-图片其他事件-Event对象-事件委托-DOM对象
  7. 入门机器学习(三)--课后作业解析-线性回归(Python实现)
  8. OmniVision的CMOS 图像传感器技术发展路线
  9. C语言图像处理二值图细化,Visual C 实现二值图像处理
  10. scala java抽象理解_Scala学习笔记(五) 抽象类以及类中的一些语法糖