tomcat配置虚拟目录

来源:互联网 发布:java怎么做游戏 编辑:程序博客网 时间:2024/06/07 15:42

昨天在公司得到一个问题,一个javaweb项目部署在服务器上时,要使项目在刀片服务器上跑,可是里面上传的文件,例如视频图片这些文件,要放在另外一个盘里,不放在tomcat的项目里,怎么办呢刚好研究了一下,然后有人提议说要开始写博客记录一下才会进步,那就写这第一篇吧。
找了一下资料,是要用到虚拟目录这个东西。就是在他访问tomcat下的项目的时候,路径会映射到虚拟目录里面去这样把上传的文件传到虚拟目录,就可以实现文件和项目分开了。有些公司怕服务器一死数据文件丢失放在另一个盘里,这样也可以提高项目的运行效率(这是个人见解,不喜勿喷)具体操作如下:
找到tomcat下的config文件夹里的server.xml打开找到< host>< /host>标签加入

<Context path="/web" docBase="D:/myweb" crossContext="false" debug="0" reloadable="true"></Context>
 例如项目在tomcat访问文件路径是/xiangmu/www/,你想把项目上传的文件放在d:/www/里,这时就写
<Context path="\xiangmu\www\" docBase="d:\www\" crossContext="false" debug="0" reloadable="true"></Context>
  然后记得在把config下的web.xml文件里的


<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>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
把listings下面的false改为true就可以了,这时就可以通过映射虚拟路径访问虚拟目录里的文件了。不过这时有个很鸡肋的问题我们上传文件是上传到虚拟目录,可是数据库里保存的目录也变成了虚拟目录的路径,而他获取的是通过tomcat下项目的路径获取再映射虚拟路径。。打个比方:上传1.MP4到d:/www/里,是通过/xiangmu/www/里获取可是上传的时候数据保存的路径是d:/www/,可是你要看视频是从数据库获取路径,这时获取的路径是d:/www/就不对了,应该获取/xiangmu/www/,然后再自动映射到d:/www/里,所以要写好转换,导致代码路径要大量修改,这又是后话了。

0 0