首先,我们要知道虚拟目录的好处。虚拟目录不同于原始的Tomcat运行方式,原始的方式是把项目拷贝到webapps下,然后启动tomcat,就可以访问webapps下的项目。我们使用eclipse配置tomcat,实际上的原理也是这种方式。

但这种方式的弊端在于,webapps下的项目不是最新的动态,一旦我们修改了eclipse工作目录下的项目,并不能立刻的反应到tomcat/webapps下。所以我们不得不编译项目后,清除webapps下的缓存,甚至要移除项目,然后在放进去。这样来回折腾,大大降低了工作效率。我们只要改动一个小地方,就要重复的进行一次上面的工作。

聪明的人,总是懒惰的。我们想到能不能改变一下当前的方式,有一种更好的方式呢?这时候,虚拟目录就浮现出来。

虚拟目录的作用是把Web的发布目录直接定位到eclipse工作目录下,实现实时更新,实时使用。

其次,虚拟目录另一个功能是映射web项目的静态文件(如图片等),当项目重新部署时不会讲原来的静态文件覆盖。

这里提供两种方法来配置虚拟目录

方式一(推荐):在Tomcat/conf/catalina/localhost 新建“项目名.xml”


<!-- This is the virtual directory --><Context path="/web_virtual_directory" docBase="f:\web_virtual_directory"" workDir="E:\workspace\cecb2b\word" reloadable="true" debug="1"></Context>


属性解释:

  path:网络访问名

  docBase:项目实际路径

  wordDir:指定jsp转换为java的存放目录。这样配置,免得移植的时候重新编译jsp

  reloadable:指定当class文件变化的时候,是否重新加载

  debug:是否是调试模式

配置的虚拟目录中的文件如下:


虚拟目录共享session 虚拟目录优点_虚拟目录

启动tomcat,则浏览器中输入http://localhost:8080/web_virtual_directory/hello.html,则tomcat就会到localhost对应的主机的F盘下找到web_virtual_directory这个web应用。最终浏览器中的内容如下:


虚拟目录共享session 虚拟目录优点_tomcat_02

注意:tomcat7.0和以往不同:<Context path="/vsearch" docBase="E:/workspace/vsearch2012/WebContent" reloadable="true" debug="5" crossContext="true" /> 

需要注意,xml文件名必须和path的名相同!



 

方式二:修改server.xml

在$CATALINA_BASE/conf/server.xml中,打开<Host></Host>,在其中添加内容同上。

最终显示如下:


虚拟目录共享session 虚拟目录优点_xml_03