javaweb项目Tomcat虚拟路径配置
在开发项目中,经常有一些文件或者图片上传,访问以及下载;
这里先说一种最不靠谱,最不建议的解决方案,也就是初学者经常用的,把图片上传到项目目录下,然后访问,下载;
这种方式的弊端是:
第一:开发环境,尤其是eclipse开发,默认上传到的是eclipse的tomcat插件的缓存里的,重启下项目,图片就没了,开发体验很Low;
第二:实际真实项目,假如项目升级,不小心把文件目录搞没了,造成了文件丢失,这个损失就大了;
所以这种方式一定不要用;
现在说下企业级开发的解决方案;
假如是大型企业级项目,海量文件数据,一般要搞个专门的文件服务器,把文件专门存储到文件服务器,以及提供访问和下载;
当然很多互联网企业已经开始用专业的对象存储服务,比如七牛云存储,阿里云云存储,大大降低了企业运维成本,安全性也高很多;
今天我说的是一种中小型项目用的文件存储方式,直接存硬盘目录;通过虚拟路径配置,来达到映射,这样方便维护,也方便升级;
直接上tomcat配置:
<Context path="/Test/images" docBase="d:\images"/>
就这个配置 path属性是项目访问路径 docBase是映射的硬盘路径;
比如我们在d盘的images目录下搞个图片 java.jpg
然后运行项目,访问http://localhost:8080/Test/images/java.jpg 这样就可以请求到图片了
当然上传的话也简单 直接 搞到硬盘路径即可,一般文件名要重命名,防止文件名重名覆盖;
eclispe里配置的话 直接 Servers的用到的服务器配置server.xml
idea的话 直接本地tomcat conf server.xml配置,是有点区别的;
这里再扩展下,假如是springboot项目,内嵌的tomcat,如何配置呢?
我们搞个配置类即可,我们给下参考代码;
package com.java1234.config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; /** * 图片绝对地址与虚拟地址映射 */ @Configuration public class WebMvcConfig extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { //文件磁盘图片url 映射 //配置server虚拟路径,handler为前台访问的目录,locations为files相对应的本地路径 registry.addResourceHandler("/image/**").addResourceLocations("file:D:\\articleImages\\"); registry.addResourceHandler("/userImage/**").addResourceLocations("file:D:\\userImages\\"); } }
还有假如是linux服务器,注意斜杠,这里给下参考配置;
<Context docBase="/home/userImages" reloadable="true" debug="0" path="/userImage"/>
<Context docBase="/home/articleImages" reloadable="true" debug="0" path="/image"/>
java1234_小锋原创,欢迎转载,记得注明java1234出处;