我们常常站点中会提供给用户上传文件、图片、视频或者诸如为了提高性能生成的静态文件等存储在站点应用中。但如果静态资源文件和项目文件在同一个目录下,当我们重新部署文件时,war重新解压会导致静态资源文件的丢失。如果通过提前备份这些静态文件,一来添加了不少麻烦,而来随着上传的数据文件的增加,文件数和文件大小的增加,增加了部署的时间。
在实际开发中,通常为tomcat服务器配置虚拟路径。可以这样理解这个虚拟路径,就是相当于把该路径映射成一个web工程,这样这些静态资源就相当于在web路径下了,用户也就可以访问了。
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="wechat_small_applications" />
<Context path="/uploadApk" docBase="D:/uploadApk" reloadable="false" ></Context>
<!-- 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>
在<Context>标签中,“path”指浏览器访问路径,“docBase”指的是服务器指定目录。
第一个<Context>标签表示更改项目根目录(ROOT)为“webapps”(“appBase”属性)下的“wechat_small_applications”目录。
第二个<Context>标签表示当访问“域名/uploadApk/.....”时访问到的不是“webapps”(“appBase”属性)下的“uploadApk”目录,而是"D:\uploadApk",此时的"D:\uploadApk"是一个虚拟目录。