将Web项目与文件分开存储,在请求的url中,通过tomcat将指定的虚拟路径指向真实的磁盘文件路径,此为虚拟目录映射。
在进行虚拟目录映射的时候,一般都会进行如下部署
<Context path="/cmw/staticFile" docBase="H:\javaFile\cmw" debug="0" reloadbale="true"/>
Linux下docBase的路径表示方式
<Context path="/transhelper/staticFile" docBase="/mnt/static/transhelper" debug="0" reloadable="true"/>
解释
- path是虚拟路径;
- docBase 是应用程序的物理路径;
- reloadable 如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,可以在不重起tomcat的情况下改变应用程序,实现 热部署
注意:
如果工程中有静态类或者预读取的配置文件改掉,那tomcat是必须要重启的,否则无法更新内存,一般的修改,eclipse是自动后台发布的,机理应该是基于文件发布时间的判定。
比如访问
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="/cmw/staticFile" docBase="C:\files\cmw" debug="0" reloadable="true"/>
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
当请求地址中包含path时,会将path内容替换为docBase的内容,此为虚拟目录的映射
注意:虚拟目录的映射必须是两级目录
修改虚拟路径后必须要重启