springboot获取resources下static目录的位置

 更新时间:2024年12月25日 08:40:55   作者:马艳泽  
这篇文章主要为大家详细介绍了springboot获取resources下static目录的位置的三种常用方法,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下

在 Spring Boot 中,如果你想获取 resources 目录下的 static 目录的位置,可以通过 ResourceLoader 或者直接使用 Path 类来获取文件路径。

Spring Boot 会自动将 src/main/resources/static 目录下的静态资源暴露出来,因此你可以通过以下几种方式来获取 static 目录下的资源。

方法 1:使用 ResourceLoader 获取 static 目录路径

Spring Boot 会在启动时自动将 static 目录映射为 /static 路径,因此你可以通过 ResourceLoader 来加载它。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.stereotype.Service;

import java.io.IOException;

@Service
public class StaticResourceService {

    @Autowired
    private ResourceLoader resourceLoader;

    public void getStaticResource() throws IOException {
        // 获取 static 目录下的资源
        Resource resource = resourceLoader.getResource("classpath:/static/somefile.txt");

        if (resource.exists()) {
            System.out.println("Resource exists at: " + resource.getURI());
        } else {
            System.out.println("Resource not found!");
        }
    }
}

在这个例子中,resourceLoader.getResource("classpath:/static/somefile.txt") 会加载 src/main/resources/static 目录下的 somefile.txt 文件。如果文件存在,它会打印出文件的 URI。

方法 2:使用 Path 获取 static 目录路径

如果你需要获取静态资源的绝对路径(例如,如果你想读取文件内容),可以使用 Path 类来获取 static 目录下的文件路径。你可以通过 Spring Boot 的 ApplicationContext 来获取文件路径。

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.nio.file.Path;
import java.nio.file.Paths;

@Service
public class StaticResourceService {

    @Value("${spring.resources.static-locations}")
    private String staticLocations;

    public void getStaticPath() {
        // 获取静态资源的绝对路径
        Path path = Paths.get(staticLocations + "/somefile.txt");
        System.out.println("Static file path: " + path.toString());
    }
}

方法 3:通过 ServletContext 获取静态资源路径

如果你需要获取静态资源的根路径,可以使用 ServletContext 来获取 static 文件夹的路径:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.servlet.ServletContext;

@Service
public class StaticResourceService {

    @Autowired
    private ServletContext servletContext;

    public void getStaticPath() {
        // 获取 static 目录的物理路径
        String staticPath = servletContext.getRealPath("/static");
        System.out.println("Static directory path: " + staticPath);
    }
}

注意

classpath:/static:Spring Boot 默认将 static 目录下的资源暴露在 web 根目录下,你可以直接通过浏览器访问 /static 路径。

ServletContext.getRealPath("/static"):如果你需要的是绝对文件路径(即磁盘上的路径),这通常依赖于运行环境和容器配置,可能会返回 null 在某些容器中(例如,在内嵌 Tomcat 中)。

总结

如果你想访问 Spring Boot 中的 static 目录中的文件,最常用的方法是通过 ResourceLoaderServletContext 来获取文件的路径或内容。

这些方法适用于在 Spring Boot 应用中动态加载或操作静态资源。

到此这篇关于springboot获取resources下static目录的位置的文章就介绍到这了,更多相关springboot获取resources下static位置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 盘点MQ中的异常测试

    盘点MQ中的异常测试

    这篇文章主要为大家介绍了盘点MQ中的异常测试,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Java数组动态扩容的实现示例

    Java数组动态扩容的实现示例

    本文主要介绍了Java数组动态扩容的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-12-12
  • 关于IDEA创建spark maven项目并连接远程spark集群问题

    关于IDEA创建spark maven项目并连接远程spark集群问题

    这篇文章主要介绍了IDEA创建spark maven项目并连接远程spark集群,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • Java线程协调运行操作实例详解

    Java线程协调运行操作实例详解

    这篇文章主要介绍了Java线程协调运行操作,结合具体实例形式详细分析了Java线程协调运行原理、实现方法及相关操作注意事项,需要的朋友可以参考下
    2019-09-09
  • java正则表达式获取url的host示例

    java正则表达式获取url的host示例

    使用httpclient抓取页面信息时需要填写HOST,使用此正则提取抓取URL的HOST内容
    2014-02-02
  • 详解IntelliJ IDEA 中如何配置多个jdk版本即(1.7和1.8两个jdk都可用)

    详解IntelliJ IDEA 中如何配置多个jdk版本即(1.7和1.8两个jdk都可用)

    这篇文章主要介绍了详解IntelliJ IDEA 中如何配置多个jdk版本即(1.7和1.8两个jdk都可用),非常具有实用价值,需要的朋友可以参考下
    2017-11-11
  • Java集合逆序方式

    Java集合逆序方式

    本文介绍了使用Java集合框架中的Collections.reverse()方法、ListIterator接口以及Java8的StreamAPI实现集合逆序的方法,并通过示例代码演示了如何实现Java集合逆序排序,最后,简要介绍了java.util.Collections类中一些常用的方法,如sort()、reverse()、shuffle()等等
    2026-05-05
  • Springboot工程中使用filter过程解析

    Springboot工程中使用filter过程解析

    这篇文章主要介绍了springboot工程中使用filter过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Java实现滑块拼图验证码

    Java实现滑块拼图验证码

    这篇文章主要为大家详细介绍了Java实现滑块拼图验证码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • MyBatis-Plus updateById不更新null值的方法解决

    MyBatis-Plus updateById不更新null值的方法解决

    用Mybatis-Plus的updateById()来更新数据时,无法将字段设置为null值,更新后数据还是原来的值,本文就来详细的介绍一下解决方法,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08

最新评论