SpringBoot获取resources目录下静态资源的两种方式

 更新时间:2025年12月11日 09:29:07   作者:何中应  
本文主要介绍了SpringBoot获取resources目录下静态资源的两种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

说明:本文介绍在 Spring Boot 项目中,获取项目下静态资源的两种方式。

场景

一般来说,项目相关的静态资源,都会放在当前模块的 resources 目录下,如下:

方式一:返回字节数组

可以通过下面这种方式,读取文件(注意文件路径,从 resources 开始),返回给前端文件的字节数组

    @GetMapping("/get-template-1")
    public byte[] getTemplate() throws IOException {
        // 1.获取文件
        ClassPathResource resource = new ClassPathResource("template/excel/full/学生信息模板-填充.xlsx");

        // 2.构建响应头
        String fileName = "学生信息模板.xlsx";
        String encodedFileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8);
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        headers.setContentDispositionFormData("attachment", encodedFileName);

        // 3.返回
        return ResponseEntity.ok()
                .headers(headers)
                .body(resource.getInputStream().readAllBytes()).getBody();
    }

这种方式,需要编译环境是 Java 10(包括10) 以上的,不然编译不通过

在 pom 文件末尾定义编译环境(大于或等于10)

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>17</source>
                    <target>17</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

方式二:写入到响应中

也可以用下面这种方式,将文件流写入到响应对象中

    @GetMapping("/get-template-2")
    public void getTemplate2(HttpServletResponse response) throws IOException {
        // 1.获取文件
        ClassPathResource resource = new ClassPathResource("template/excel/full/学生信息模板-填充.xlsx");

        // 2.构建响应头
        String fileName = "学生信息模板.xlsx";
        String encodedFileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8);
        response.setContentType("application/octet-stream");
        response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + encodedFileName);

        // 3.写入到响应对象中
        try (InputStream inputStream = resource.getInputStream();
             OutputStream outputStream = response.getOutputStream()) {
            inputStream.transferTo(outputStream);
            outputStream.flush();
        }
    }

以上两种方式都能将后端静态资源返回给前端

到此这篇关于SpringBoot获取resources目录下静态资源的两种方式的文章就介绍到这了,更多相关SpringBoot获取resources静态资源内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java自定义日志输出文件(log4j日志文件输出多个自定义日志文件)

    java自定义日志输出文件(log4j日志文件输出多个自定义日志文件)

    打印日志的在程序中是必不可少的,如果需要将不同的日志打印到不同的地方,则需要定义不同的Appender,然后定义每一个Appender的日志级别、打印形式和日志的输出路径,下面看一个示例吧
    2014-01-01
  • springboot如何获取application.yml里值的方法

    springboot如何获取application.yml里值的方法

    这篇文章主要介绍了springboot如何获取application.yml里的值,文章围绕主题相关自资料展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-04-04
  • Java回调机制解读

    Java回调机制解读

    本文主要介绍了Java回调机制的相关知识,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • springboot的logback配置源码解读

    springboot的logback配置源码解读

    这篇文章主要为大家介绍了springboot的logback配置,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • 利用Mybatis自定义排序规则实现复杂排序

    利用Mybatis自定义排序规则实现复杂排序

    本文主要介绍了利用Mybatis自定义排序规则实现复杂排序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-09-09
  • Spring boot自定义加密解密数据库连接配置示例代码

    Spring boot自定义加密解密数据库连接配置示例代码

    在Spring Boot项目中,为了保护数据库连接信息的安全,通常需要对敏感信息进行加密,这篇文章主要介绍了Spring boot自定义加密解密数据库连接配置的相关资料,需要的朋友可以参考下
    2026-05-05
  • SpringCloud Feign原理剖析

    SpringCloud Feign原理剖析

    feign是用在微服务中,各个微服务间的调用,它是通过声明式的方式来定义接口,而不用实现接口,feign让服务间的调用变得简单,不用各个服务去处理http client相关的逻辑,本文详细介绍SpringCloud Feign原理,需要的朋友可以参考下
    2023-06-06
  • IntelliJ IDEA窗口组件具体操作方法

    IntelliJ IDEA窗口组件具体操作方法

    IDEA刚接触不久,各种常用工具窗口找不到,不小心关掉不知道从哪里打开,今天小编给大家分享这个问题的解决方法,感兴趣的朋友一起看看吧
    2021-09-09
  • Java如何给Word文档添加多行文字水印

    Java如何给Word文档添加多行文字水印

    这篇文章主要介绍了Java如何给Word文档添加多行文字水印,文章图文讲解的很清晰,有对于这方面不太懂得同学可以学习下
    2021-02-02
  • Java面向对象基础教学(二)

    Java面向对象基础教学(二)

    这篇文章主要介绍了Java的面相对象编程思想,包括类对象方法和封装继承多态等各个方面的OOP基本要素,非常推荐,需要的朋友可以参考下,希望可以对你有所帮助
    2021-07-07

最新评论