tocmat虚拟目录的应用

以前设置tomcat虚拟目录都是用来针对整个web项目做映射的,直到最近做文件上传,才想到了虚拟目录的另一种用途,那就是通过虚拟目录,可以把上传内容从服务器目录独立出来,方便统一各种媒体资源的访问和维护。

一般来说,java原生态的文件上传,使用开源组件commons-fileupload的较多,通过servlet接受浏览器传过来的文件流,然后借助commons-fileupload进行处理和上传,网上给出的较多方案,一般后台在servlet中设置的上传文件保存目录都是存在于web项目里面的,这对于初学者来讲很有可能造成一个误区,那就是上传目录只能存在与服务器项目下面。其实,他们这么做最主要的目的是为了后续的页面资源访问方便,但是这样会造成一个问题,那就是你上传的东西都在项目发布目录下面,如果重新发布,要么在发布之前备份上传的内容,不然之前的文件就会丢失,这很不方便。

事实上,commons-fileupload上传的时候是不考虑目录所存在的位置,可以在项目发布目录下面,也可以在其他地方,这对于它来说是无视的,只要是真实存在即可。这样一来,考虑到后续资源的维护,那么我们会尽可能的把资源内容放置到非服务器目录下面,但是这样一来项目目录如何访问它的外部资源?这个时候,tomcat的虚拟目录就有用武之地了。

通过在tomcat下建立虚拟目录,可以把上传的文件真实文件夹(位于项目/服务器外部)映射到一个虚拟目录,然后项目里面可以通过虚拟目录来访问需要的资源文件。

tomcat建立虚拟目录的方法,网上一搜一大堆,都是大同小异,两种方式,他们推荐第一种,但我一直用的是第二种方案,看个人吧,在这我重复下第二种方案:

在tomcat的config目录下的server.xml文件中,在<Host>和</host>之间加上:

<Context path="/source/media" docBase="/usr/upload" debug="0" reloadable="true"  crossContext="true"/>

path:虚拟目录,注意path映射目录最后不能跟“/”,不然无效果

docBase:映射到的实际目录,目录最后windows下不用跟“\”,但是linux必须跟“/”,不然也不行

reloadablee="true",调试阶段为true,正式发布后改成false

over!

猜你喜欢

转载自yjy110.iteye.com/blog/1948106