我们知道,Web站点中的内容(包含网页,图片,音频文件等)一般都存放在App的文件夹下。但随着站点内容的不断丰富,用户须要把不同层次的内容组织成站点的子文件夹。
我们通常的做法是在站点主文件夹下新建子文件夹。并把相关的内容放置到相应的文件夹。此外。还有第二种方法,就是创建虚拟文件夹。虚拟文件夹能够是磁盘上有权限操作的随意路径(将虚拟路径设置为readOnly是绝对不行的)。也能够是网络中其它计算机的文件夹。
相对而言,创建子文件夹的方式更安全高效。但为什么还要有虚拟文件夹呢?这是由于虚拟文件夹攻克了Web文件必须放在Web根文件夹下的难题。一方面,这样大大添加Webproject的存储空间。还有一方面,也为多个不同的project共享同一份文件提供了保障。
比方,当我们多个站点都须要訪问同一份文件时,我们仅仅需将该虚拟路径指向改文件的地址就可以,这样就避免了同一份文件多次拷贝的问题。
在Tomcat7版本号下,配置虚拟路径改动下面两个文件:
1.server.xml
打开Tomcat文件夹下的/conf/server.xml文件,在Host之前增加以下红色部分的内容。
<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 "%r" %s %b" />
<Context path="/appName/filePath" docBase="/opt/filePath" reloadable="true" debug="0"/>
</Host>
|
path : project名称+文件路径。当訪问path文件夹下的文件时,实则訪问docBase文件夹下的文件。
docBase : 文件的真实路径。
注意这里假设有文件长传,则将上传的文件路径设置为docBase。而不是path。
2. web.xml
打开Tomcat文件夹下的/conf/web.xml,将以下红色部分listings的属性设置为True。
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
|
不可否认,虚拟文件夹的使用为我们的开发和部署带来了极大的便利,可是因为配置虚拟文件夹必需要将listings属性设置为True,这样就将该文件夹下的全部文件都暴露给了用户。这样也给系统的使用带来了一定的风险。所以,选择使用虚拟文件夹一定要谨慎。