说明:此次使用的是Tomcat 7.0

很多朋友都会很疑惑,既然我们都知道在Tomcat服务器上部署项目只要将项目打包,然后放到webapps目录下就可以了,为什么还需要配置虚拟路径?的确,把项目放到webapps目录下非常方便,至少在部署一个项目时,直接把项目扔到webapps目录下所进行的操作会比设置虚拟路径容易的多。但是如果考虑到长久性的操作以及多个项目呢?

设置虚拟路径的优势我总结有两点,当然这只是很普通、很常见的两点优势:第一、我们开发一个项目,在未定版之前需要进行无数次的修改,如果部署测试项目的时候直接将项目打成war包放到webapps目录下,那么每一次版本变更都需要将新的版本放到webapps目录下覆盖原先的版本,这样对于我们测试项目来说是不是非常麻烦呢?如果建立一个虚拟路径,直接映射到项目原件,这样一来在测试阶段是不是非常的方便?(当然这点对于使用集成开发环境工具的开发者来说可以忽略);第二、Tomcat是一个服务器,既然是一个服务器是不是就有容量这么一说呢?虽然这个容量是你说了算,但是再怎么大是不是也有盘符容量限制?如果将所有的项目都部署到webapps目录下,当项目比较大而且项目较多的时候是不是需要考虑一下盘符的感受呢?所以使用虚拟路径也可以为搭载Tomcat服务器的盘符分压!

==============这真的只是一条分割线 ==============

好了,废话就不多说了,直接切入正题!

如何设置虚拟路径呢?网上有很多的帖子,但是很多都只提到2-3中方法,其实在Tomcat7的官方文档中给出了5种设置的方法,下面我们就来看一下其中的4中,因为有一种实在是不常用:

方法1(修改配置文件):这是最最最常见的一种方法

在Tomcat7的安装目录下找到conf目录,在该目录下有一个server.xml文件,这个文件的任务是配置整个服务器信息。例如修改端口号,添加虚拟主机…… 打开这个文件,找到HOST标签,

在这个标签中处插入以下代码:

<Context path="/yang" docBase="f:\mysite1\xxx.war" debug="0" reloadable="true" crossContext="true" />

说明:

path:指定访问该 Web 应用的 URL 入口。
docBase:指定 Web 应用的文件路径,可以给定绝对路径,也可以给定相对于<Host>的appBase 属性的相对路径,如果 Web 应用采用开放目录结构,则指定 Web 应用的根目录,如果 Web 应用是个 war 文件,则指定 war 文件的路径。(指定项目所在地址)
reloadable:如果这个属性设为 true,tomcat 服务器在运行状态下会监视在WEB-INF/classes 和 WEB-INF/lib 目录下 class 文件的改动,如果监测到有 class 文件被更新的,服务器会自动重新加载 Web 应用。
crossContext:如果想在应用内调用 ServletContext.getContext()来返回在该虚拟主机上运行的其他 web application 的 request dispatcher,设为 true。在安全性很重要的环境中设为 false,使得 getContext()总是返回 null。缺省值为 false。
Debug:与这个 Engine 关联的 Logger 记录的调试信息的详细程度。数字越大,输出越详细。如果没有指定,缺省为 0。
这个方法一般在设置后都需要重启服务器才有效(有时候即使设置了reloadable=“true” 也需要重新启动)

-----------------------------------------------------------------------------------------------------------------------------------------------

方法2(添加配置文件):推荐使用,不需要重启服务器

在Tomcat根目录下的/conf/Catalina/localhost/ 路径下新建一个filename.xml,并在该xml中编写语句

<Context docBase="F:\Java\JavaWebWorkspace\news"/>

即可创建虚拟站点,虚拟站点名为filename。注意docbase指向你自己的应用程序目录,各参数参见方法1中的<Context>标签的参数(注意此文件名将作为Context中的path属性值,不管文件里的path属性值如何设置也是无效的 )。

如果需要分层虚拟站点,可以将文件名改成a#b#c,访问分层虚拟站点时用localhost:8080/a/b/c

----------------------------------------------------------------------------------------------------------------------------------------------

方法3:

在Tomcat根目录下的conf目录context.xml文件中插入

<Context path="/zhang" docBase="f:\mysite1" debug="0" reloadable="true" crossContext="true" />

注意,这个虚拟路径修改方法会让所有的站点都能加载,https://localhost:8080/zhang

使用这个之前最好将service.xml中的列表设置打开。

-----------------------------------------------------------------------------------------------------------------------------------------------
方法4:

在Tomcat根目录下的路径/conf/Catalina/localhost/context.xml.default ,在这里进行配置,这个虚拟路径修改方法会让该主机下的所有的站点都能加载,同上。

本文转自博客:https://blog.csdn.net/jdjdndhj/article/details/52693652

详细解说Tomcat 设置虚拟路径的几种方法及为什么设置虚拟路径的更多相关文章

  1. 48-设置tomcat虚拟路径的两种方法(Eclipse、tomcat、IDEA)

    设置tomcat虚拟路径的两种方法(Eclipse.tomcat.IDEA) 三种方式设置虚拟服务器路径如果我们要实现一个上传文件的功能,但是又想要上传的文件不会随着自己web服务器的重启而不能访问了 ...

  2. Tomcat系列(11)——Tomcat 部署web应用的4种方法

    核心内容 1.在Tomcat中有四种部署Web应用的方式,分别是: (1)利用Tomcat自动部署(项目直接拷贝OR WAR包拷贝 到webapps下) (2)利用控制台进行部署(tomcat的man ...

  3. tomcat部署web应用的4种方法以及部署多个应用

    原文: tomcat部署web应用的4种方法 在Tomcat中有四种部署Web应用的方式,简要的概括分别是: (1)利用Tomcat自动部署 (2)利用控制台进行部署 (3)增加自定义的Web部署文件 ...

  4. linux 环境变量PATH路径的三种方法

    转:http://www.jb51.net/LINUXjishu/150167.html 总结:修改1.#PATH=$PATH:/etc/apache/bin  或者#vi /etc/profile ...

  5. iOS 获取文件的目录路径的几种方法 [转]

    iOS 获取文件的目录路径的几种方法 2 years ago davidzhang iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么. d ...

  6. 【转】介绍设置Session失效的几种方法

    转载地址:http://developer.51cto.com/art/201106/269493.htm Session对象是HttpSessionState的一个实例.该类为当前用户会话提供信息, ...

  7. Linux系统下修改环境变量PATH路径的三种方法

    这里介绍Linux的知识,比如把/etc/apache/bin目录添加到PATH中有三种方法,看完之后你将学会Linux系统下如何修改环境变量PATH路径,需要的朋友可以参考下 电脑中必不可少的就是操 ...

  8. 【转】c# Image获得图片路径的三种方法 winform

    代码如下:c# pictureBox1.Image的获得图片路径的三种方法 winform 1.绝对路径:this.pictureBox2.Image=Image.FromFile("D:\ ...

  9. 通过PID获取进程路径的几种方法

    通过PID获取进程路径的几种方法 想获得进程可执行文件的路径最常用的方法是通过GetModuleFileNameEx函数获得可执行文件的模块路径这个函数从Windows NT 4.0开始到现在的Vis ...

随机推荐

  1. 海瑞菌的web前端学习直播间

    这是本人的web前端学习直播间 一般每天晚上10点--12点为直播时间...以web前端开发为主. 若设备无法打开,请点击链接进入:https://www.huya.com/14958154 setT ...

  2. 2019/3/25 wen 包,对象的行为

  3. opencv学习之路(13)、图像阈值化threshold

    一.图像阈值化简介 二.固定阈值 三.自适应阈值 #include<opencv2/opencv.hpp> using namespace cv; void main(){ Mat src ...

  4. Mysql 用命令行导出导入数据方法

    方法一: 导出参考:https://www.cnblogs.com/activiti/p/6700044.html 用mysqldump可以导出整个数据库里的表和数据,不单单是只导出某个表的数据 命令 ...

  5. 在C#中使用OpenCV(使用OpenCVSharp)

    在C#中使用OpenCV(使用OpenCVSharp) 1.什么是OpenCVSharp       为了解决在Csharp下编写OpenCV程序的问题,我做过比较深入的研究,并且实现了高效可用的方法 ...

  6. Mac10.13 telnet不能用的解决方法

    telnet在Mac 10.13上不能用了 Restore的方法 brew install inetutils To be clear, brew install inetutils will ins ...

  7. linux远程方式,以及基础命令

    最近准备学习linux系统,购买了阿里巴巴的云服务器,系统为CentOS. 一.连接实例 1.使用管理终端. 这是阿里巴巴云服务器管理控制台,需要登录阿里巴巴,找到自己实例后,点击右侧远程连接即刻. ...

  8. Selenium Webdriver弹出框的种种类型

    普通弹出框 div 一般这种 弹出框都属于dom的一部分,我们查看一下页面源码就可以定位到改弹出框了,然后定位下右上角的那个关闭, 这里有id,所以很方便通过 dr.findElement(By.id ...

  9. linux内核中的DMI是什么?

    答: 桌面管理接口(Desktop Management Interface).是用来获取硬件信息的,在内核中有一个配置项CONFIG_DMI用来添加此功能到内核中!

  10. thinkphp如何省略index.php

    省略index.php叫做 伪静态化; 共有四个步骤: MariaDB[(none)]: 表示, 目前没有选择/使用 任何数据库. 如果use了数据库, 会提示: MariaDB[mysql]... ...