解决jsp上传文件,重启tomcat后文件和文件夹自动删除

来源:互联网 发布:linux exec用法 编辑:程序博客网 时间:2024/05/01 13:59

 今天TomCat在重启的时候,忽然发现自己上传的文件找不到了,于是找了找,发现在TomCat重启的时候,项目会重新部署,而此时开发工具中是没有那些上传的文件的,那些原本上传的文件就不见了,上传文件路径最好设置webapps之外,可以在webapps并行的目录下,建一个upload文件,专门存储应用上传的文件.当然上测试环境或者生产环境就不会了~直接上传到tomact下对于小文件小频率的还可以,不过一般不会直接上传的tomact下!

      注意,TomCat的工具Clean之后同样会删除之前上传的文件,建议还是在webapps文件夹外面新建一个文件来存储上传的文件

第二种方案

先说解决办法吧,后面在分析:

1.把/tomcat/webapps/目录清空,删掉该文件夹的所有内容,
2.修改/tomcat/conf/web.xml文件:

[html] view plain copy
 print?
  1. <servlet>  
  2.         <servlet-name>default</servlet-name>  
  3.         <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>  
  4.         <init-param>  
  5.             <param-name>debug</param-name>  
  6.             <param-value>0</param-value>  
  7.         </init-param>  
  8.         <init-param>  
  9.             <param-name>listings</param-name>  
  10.             <param-value>true</param-value>  
  11.         </init-param>  
  12.         <load-on-startup>1</load-on-startup>  
  13.     </servlet  

3.修改/tomcat/conf/server.xml文件:

[html] view plain copy
 print?
  1. <Host name="localhost"  appBase="webapps"  
  2.             unpackWARs="true" autoDeploy="true"  
  3.             xmlValidation="false" xmlNamespaceAware="false">  
  4.    
  5.         <!-- SingleSignOn valve, share authentication between web applications  
  6.              Documentation at: /docs/config/valve.html -->  
  7.         <!-- 
  8.         <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> 
  9.         -->  
  10.    
  11.         <!-- Access log processes all example.  
  12.              Documentation at: /docs/config/valve.html -->  
  13.         <!--  
  14.         <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"    
  15.                prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>  
  16.         -->  
  17. <!----><Context path="/ser" docBase="D:\project\myProject\editor\WebRoot"></Context>  
  18. <!--<Context path="/mvc" docBase="D:\project\myProject\你的项目名\WebRoot"></Context>-->  
  19.       </Host>  

分析:

重新redeploy的时候,  tomcat 会同步你本地的文件 ,因为本地没有相应的文件夹导致文件丢失。
这只是在开发过程中会遇到的问题 实际应用中 tomcat 只会 startup.bat/sh shutdown.bat/sh
我们这样做,其实就是给工程配置虚拟路径,这样tomcat在启动的时候直接找到工程了,
上传的图片就不会仅仅只在/tomcat/webapps/目录,而直接到了你的工程里,
不管你怎样重启项目,或者清理缓存,上传的文件依然存在!


阅读全文
0 0
原创粉丝点击