其实我之前都知道在tomcat中上传图片会丢失的问题,因为之前图片丢失对我的系统影响不是很大,基本上我的上传图片都是头像,所以丢失就丢失咯,我倒不在乎。可是今天我要做个广告配置,需要在后台配置广告信息,然后在手机当作banner图显示,这如果图片丢失的话就糗大了,于是我在网上找了多种方法,一一试了下,发现下面这种方法十分有效。
(1)把/tomcat/webapps/目录清空,删掉该文件夹的所有内容,
(2)修改/tomcat/conf/web.xml文件:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
(3)修改/tomcat/conf/server.xml文件
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
其实就是给工程配置虚拟路径,这样tomcat在启动的时候直接找到你的工程了,你上传的图片就不会跑到/tomcat/webapps/目录,而是直接到了你的工程里,不管你怎样重启项目,或者清理缓存,上传的文件依然存在!
原理解析:
D:\project\myProject\editor\WebRoot 这个路径是项目的web根目录,editor是项目名称, 那么D:\project\myProject\editor\src 就是你存放java文件的根目录了
/ser 就是项目应用的名称了,或者说是上下文路径,这个名称可以随意修改
如果你的tomcat端口是 8080, 那么项目的访问路径就是 http://localhost:8080/ser
上传时就会在D:\project\myProject\editor\WebRoot\ 目录中创建文件夹
不管你怎样重启项目,或者清理缓存,上传的文件依然存在, 因为上传的文件都已经存在于你的项目中
这样方式只需要部署一次,没有重新部署的说法
如果你是在eclipse中点来点去的部署项目,也就等于是把D:\project\myProject\editor\WebRoot目录的所有文件和文件夹都复制到了 /tomcat/webapps/editor/目录下,那么项目的访问路径就是 http://localhost:8080/editor
上传时就会在 /tomcat/webapps/editor/ 目录中创建文件夹
只要重新部署或清理缓存,上传的文件都烟消云散了
因为重新部署时,先删除 /tomcat/webapps/editor/ 目录,再复制一遍D:\project\myProject\editor\WebRoot目录的所有文件和文件夹
我是在SSH的环境下配置了上面的文件的,但是我在配置玩重新跑脚本时报错了:java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderL
其实这个错误很明细,jar包找不到,可是我在修改配置文件之前我的项目是可以正常启动的。这里要说一点,我的jar包的引入方式是通过User libaraies做映射来使用的,很明显,我这里映射的jar包在修改完配置文件后不管用了,上网找了原因,查看了一些资料,发现这个写得还不错
http://www.bkjia.com/ASPjc/853556.html
于是我把我的所有jar包放在我的web项目的lib下,重启项目,OK
然后当你部署web项目的时候,你会发现你的项目在tomcat的webapp下找不到了,这是正常的,因为它本身就做了映射了,所有当你上传图片的时候,其实它就是把图片放在你原来的项目下面了,那么不管你怎么部署项目,你原来的项目的东西都是不会被修改到的,那么图片当然就不会不见了。
参考贴吧:http://bbs.csdn.net/topics/360088800