linux Docker部署springboot项目后访问磁盘的静态资源

本文介绍了SpringBoot如何配置处理静态资源,包括默认配置和自定义路径。通过application.properties设置静态资源路径,允许访问项目外的js文件。同时,针对Linux环境下Docker部署,需注意文件挂载和路径调整。此外,分析了应用上下文对资源引用的影响,特别是相对路径和绝对路径的使用。
摘要由CSDN通过智能技术生成
  1. 项目背景:

    script 引入磁盘上的js文件,读取js文件中的内容作为全局变量。

  2. Spring Boot 静态资源默认配置

  • 在一个Web项目中往往需要处理一些静态资源的请求,比如css,js,image文件的等。Spring Boot提供了一种很简单的方式,即使用默认配置。
  • 默认是启用了静态资源映射的,并且,当文件在classpath:/META-INF/resources/, classpath:/resources/, classpath:/static/, classpath:/public/这四个目录下的话可以直接返回。
  1. Spring Boot 配置本地资源映射路径
    方式一:修改静态资源映射的方式:

    	在application.properties中配置静态资源访问路径:
    	spring.mvc.static-path-pattern=/**  #表示所有的访问都经过静态资源路径
    	spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:${file.uploadFolder}
    #覆盖默认配置,所以需要将默认的也加上否则static、public等这些路径将不能被当作静态资源路径
    #在最末尾的file:${web.upload-path}中的file:表示是一个具体的硬盘路径,其他的使用classpath指的是系统环境变量
    

    方式二:代码方式映射的方式:

@Configuration  //配置类注解
public class UploadFilePathConfig extends WebMvcConfigurationSupport {

    @Value("${file.uploadFolder}")
    private String uploadFolder;

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations("file:" + uploadFolder);
        super.addResourceHandlers(registry);
    }
}
  1. html src文件引入 index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
</body>
<script src="./xxx.js"></script>
</html>
src引入的是js文件
xxx.js是项目外的静态资源
./ 相对路径, 会动态匹配当前请求的路径作为前缀
/ 绝对路径
  1. 静态资源404问题总结:
  • window环境中 uploadFolder设置外部硬盘目录 D:\data\ 可读到D盘下的js文件,linux下则异常404
    原因分析:linux使用docker部署项目,需要把js所在的目录挂载到容器中,并且路径应从容器的根目录开始。
    即 /app/xxx/
  • 若设置 server.servlet.context-path=/xxx 则每个静态资源都需要加上该值, 否则会出现404的问题
<script src="./xxx.js"></script>
使用./ 会匹配当前请求的路径作为前缀,使设置的应用上下文生效
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值