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位置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mybatis之增删改查

    mybatis之增删改查

    本篇文章主要介绍了Mybatis实现数据的增删改查实例(CRUD),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-07-07
  • Mybatis-plus通过添加拦截器实现简单数据权限

    Mybatis-plus通过添加拦截器实现简单数据权限

    系统需要根据用户所属的公司,来做一下数据权限控制,具体一点,就是通过表中的company_id进行权限控制,项目使用的是mybatis-plus,所以通过添加拦截器的方式,修改查询sql,实现数据权限,本文就通过代码给大家详细的讲解一下,需要的朋友可以参考下
    2023-08-08
  • SpringBoot的配置文件(properties与yml)使用方法

    SpringBoot的配置文件(properties与yml)使用方法

    配置文件中的配置类型有两类,一类是系统配置项,这种配置的格式都是固定的,是给系统使用的,另一种是用户自定义配置,用户可以随意地规定配置项的格式,又用户自行去设置和读取,这篇文章主要介绍了SpringBoot的配置文件(properties与yml)使用方法,需要的朋友可以参考下
    2023-08-08
  • Java转换解析中间带有 “T“和“Z“ 的时间格式

    Java转换解析中间带有 “T“和“Z“ 的时间格式

    这篇文章主要给大家介绍了关于Java转换解析中间带有 “T“和“Z“ 的时间格式,相信很多小伙伴在时间格式转换的时候非常头疼,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • Spring AOP实现复杂的日志记录操作(自定义注解)

    Spring AOP实现复杂的日志记录操作(自定义注解)

    Spring AOP实现复杂的日志记录操作(自定义注解),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java验证时间格式是否正确方法类项目实战

    Java验证时间格式是否正确方法类项目实战

    在很多场景中我们需要验证时间日期的是否属于正确的格式,验证时间是否符合常规的,本文就来介绍一下几种方式,感兴趣的可以了解一下
    2022-04-04
  • java线程的run()没有返回值怎么办?

    java线程的run()没有返回值怎么办?

    java线程的run()没有返回值怎么办?本文给出了java线程的run()返回值为空的解决办法,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • 二种jar包制作方法讲解(dos打包jar eclipse打包jar文件)

    二种jar包制作方法讲解(dos打包jar eclipse打包jar文件)

    这篇文章主要介绍了二种jar包制作方法讲解:dos打包jar和eclipse打包jar文件,大家参考使用吧
    2013-11-11
  • Spring @Transaction 注解执行事务的流程

    Spring @Transaction 注解执行事务的流程

    这篇文章主要介绍了Spring @Transaction 注解执行事务的流程,Spring 是如何开启事务的?又是如何进行提交事务和关闭事务的,本文给大家详细介绍,需要的朋友可以参考下
    2021-06-06
  • Java switch 语句如何使用 String 参数

    Java switch 语句如何使用 String 参数

    这篇文章主要介绍了Java switch 语句如何使用 String 参数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
    2019-06-06

最新评论