静态资源的虚拟路径和独立静态资源管理系统的实现

本文介绍了虚拟路径的概念及其在项目中的作用,强调了业务数据与代码分离的重要性。详细讲解了在Tomcat和SpringBoot中配置虚拟路径的方法,并提出实现独立静态资源管理系统的需求,该系统能够统一管理静态资源,提高服务器性能。通过数据库记录类型和分组信息,服务端根据请求参数找到静态资源的实际位置进行读取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是虚拟路径?

        举个例子:上传一张图片放到:D://group/29015054169244_投影.png

                          但是前台访问是这样的:http://ip:port/image/29015054169244_投影.png

        显然这种访问方式,应该是在tomcat下的项目静态资源文件夹下了,但是图片不在那里存放,为什么能访问到?

        这就是虚拟路径的作用了。

二、为什么需要虚拟路径?

        1、业务数据(资源)与代码分离,防止盘符不够或者后续修改重新部署等丢失;

        2、当项目被打包成一个.jar文件部署时,再将上传的文件放到这个.jar文件中是有多么低的效率;

        3、网站数据的备份将会很痛苦。

三、虚拟路径的配置:

1、tomcat 配置方式:con/server.xml (docBase就是实际的路径,path是虚拟路径,相当于把改路径映射到服务器中)

  <!-- 设置图片虚拟路径[访问时路径为/image] -->  
         <Context path="/image" docBase="D:\group" reloadable="true" /> 

2、springboot 配置方式:

2-1、配置类:

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:/group/");  } 
}

  2-2、 另一种直接在配置文件application.properties配置方式(这种是把项目下所有的静态资源访问映射到D:/group/下):

其中upload.download.path:自定义的属性,指定了一个路径,注意要以/结尾;

  spring.mvc.static-path-pattern=/**表示所有的访问都经过静态资源路径;

  spring.resources.static-locations在这里配置静态资源路径,覆盖默认配置,所以需要将默认的也加上,否则staticpublic等这些路径将不能被当作静态资源路径,在这个最末尾的file:${upload.download.path}之所有要加file:是因为指定的是一个具体的硬盘路径,其他的使用classpath指的是系统环境变量。

server.port=1122

upload.download.path=D:/group/

spring.mvc.static-path-pattern=/**
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:${upload.download.path}

3、eclipse下配置:(参考网上的留着做参考用,未经验证。。)

四、独立静态资源管理系统的实现(通过数据流来读取图片

1、系统中需要用到大量的图片和其他静态文件资源,考虑静态资源的统一管理和服务器性能(静态资源缓存等等,后话暂时不提),需要和restfulAPI接口分开,于是有了这个独立的静态资源管理系统(实际项目中是独立于其他接口的,也是独立分配了服务器部署的。)

2、比如上传一张图片,会自动根据类型和分组情况放到预先配置好的路径下,新的分组会新建文件夹存放,然后把类型和分组和图片名称一起存入数据库待用。

       访问这张图片:*/downloadImgOrVideo.do?type=12&path=group1/29015054169244_投影.png

      客户端并不知道图片的真实存放位置,但是可以把类型和“分组路径”发给服务端,服务端根据两者信息,去配置好的实际路径下寻找这个图片。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值