web项目中会遇到这样的问题,当在服务器重新部署时此前上传的图片之类的资源全都会没了,那么有没有个好办法了。好的,tomcat虚拟目录能帮我们解决这问题。
首先第一步是要去修改tomcat目录中的server.xml文件(路径:%tomcat_home%/conf/server.xml)和web.xml(路径:%tomcat_home%/conf/web.xml)的两处地方:
1)server.xml中:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<!-- path : 工程名称+文件路径,当访问path目录下的文件时,实则访问docBase目录下的文件。
docBase : 文件的真实路径。注意这里如果有文件上传,则将上传的文件路径设置为docBase,而不是path,
表示你的程序包的物理绝对路径,默认的绝对路径是 %tomcat_home%/webapps 。
-->
<span style="background-color: rgb(255, 0, 0);"><Context path="/Student/stuInfoImg" docBase="../projectData/stuInfoImg" reloadable="true" debug="0"/></span>
</Host>
这是<Host>标签,修改该标签中的<Context>标签,path为 "/项目名/你需要访问的路径名";docBase为图片实际存放路径,当访问path时会自动访问docBase目录去,注意它的默认路径是 "%tomcat_home%/webapps",访问图片的时候路径用一个"../"表示可以向上访问一层目录,两个 "../../"就是两层了,多试两次就好。值得注意的是,访问的时候是写path路径,但上传图片得上传到docBase路径去。
2)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><span style="background-color: rgb(255, 0, 0);">true</span></param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
把<param-name>为listings下面的标签<param-value>中的值改为true即可。