之前写的一个小项目,用到了图片上传到服务器,然后就开始尝试着去实现这个功能,最初的做法是把图片上传到项目的WEB-INF文件夹的image文件夹中,可以实现图片上传到服务器,可是之后却发现了一个问题,就是重启tomcat服务器,之前上传到服务器的图片都不见了,这就让我郁闷了很久。
经过研究发现:
我们在Java代码中上传图片时,图片的路径是通过代码 request.getSession().getServletContext().getRealPath("/img") 来获取路径的,而这句代码返回的路径是tomcat中webapps目录下的工程路径,图片就直接保存到了tomcat中。当我们重新发布工程的时候,tomcat其实是先将原来的工程删掉,然后再将改动过的新的工程放上去。而改动过的新的工程来自与我们eclipse的工作空间中的工程,这就也难怪了,因为我们是把图片直接上传到的tomcat服务器下,而不是放到工作空间的工程目录下,自然重新部署后图片就没了。
那么有什么方法能够保存这些上传到服务器的图片呢?通过网上查找资料,最终找到了解决方法那就是配置图片的虚拟路径,接下来就让我给大家讲解一下如何配置虚拟路径吧
一、首先修改tomcat的配置,找到tomcat下的conf文件夹,打开server.xml配置文件,找到
配置方法如下图:
加入虚拟路径后,进行访问,http://localhost/photo/图片名
结果却发现,仍然访问不到,找了很多原因,大多数介绍图片上传的都是这样介绍的,可是总出不来,折腾了一个上午,经大神提醒,eclipse对tomcat支持有时不是那么友好,单修改tomcat配置可能没有用,于是试着去用eclipse对tomcat进行配置管理,果然一下就成功了,eclipse配置tomcat方法如下:
二、在Eclipse中,双击Servers选项中的Tomcat v9.0 Server
三、点击Overview视窗中的Modules
四、这时我们点击右侧的第二个按钮 Add External Web Module 添加图片访问路径
五、添加图片访问路径 (Document base 是你存放图片的路径 Path 是你访问图片的虚拟路径 )
六、配置结束,点击重启服务器,输入虚拟路径 http://localhost:8080/photo 访问资源文件夹:
我们会发现,配置好的虚拟路径,居然找不到D:\GroupSystem文件夹,又通过上网查找,发现直接访问资源文件夹D:\GroupSystem是找不到的,要接上具体访问资源的文件名(即 图片的名称),例如:输入http://localhost:8080/photo/pic.jpg就可以找到对应的图片了
有的人可能会遇到这样的问题:那就是在 tomcat → conf → server.xml 配置文件中添加了图片的虚拟路径
那就会有人问了,为什么我们配置的server.xml文件会被自动还原成原来默认的配置呢?
这是因为你的eclipse在整合Tomcat成功之后,会在你的eclipse视窗的Pagekage Explorer中自动生成一个Servers文件夹,Servers文件夹中也会有一个server.xml的文件,每一次重启eclipse项目,eclipse中的server.xml都会去覆盖掉 tomcat → conf → server.xml 配置文件,所以当你在遇到这类问题的时候,我们可以试着去修改eclipse中的server.xml文件配置。
说了这么多,接下来就让我给大家讲解一下如何操作吧
一、 打开你的eclipse,在eclipse视窗的Pagekage Explorer中找到Servers → Tomcat v9.0 Server at localhost-config → server.xml文件
二、双击打开server.xml配置文件,找到
配置方法如下图:
三、右键Tomcat v9.0 Server at localhost [Stopped, Republish],选择Start,启动Tomcat(找到并点击Console选项,能看到最后一行Server startup in 1889 ms 则表示Tomcat启动成功)
四、然后我们找到tomcat下的conf文件夹,打开server.xml配置文件,可以看到server.xml配置文件中的
五、我们再去Eclipse中,双击Servers选项中的Tomcat v9.0 Server
六、点击Overview视窗中的Modules
七、可以看到,在Web Modules中也自动添加了我们刚刚配置的图片虚拟路径
八、打开浏览器,在地址栏中输入图片虚拟路径 http://localhost:8080/photo/pic.jpg 访问图片
如果有遇到不懂或者有问题时,可以扫描下方二维码,欢迎进群交流与分享,希望能够跟大家交流学习!