您的位置:

springboot静态资源映射详解

一、Springboot静态资源映射基础

Springboot 是目前最常用的 Java 开发框架之一,其中最重要的一个特性是可以快速构建 Web 应用程序。在 Web 应用程序中,静态资源通常是指一些不需要经过处理的文件,例如页面中用到的图片、JavaScript 文件以及 CSS 文件等等。静态资源映射是指访问这些静态资源时被请求到的位置。在 Springboot 中,静态资源映射通常是基于 webjars、classpath 和 file 等资源路径进行的。下面分别介绍这三种常用的静态资源映射方法。

二、基于 webjars 进行静态资源映射

webjars 是将 JavaScript 和 CSS 等前端库打包在 JAR 文件中,以使得项目更好地依赖和管理这些前端库。在 Springboot 中,我们可以使用 Maven 或 Gradle 等构建工具将所需的 webjars 引入项目中,并在 application.properties 或 application.yml 文件中进行配置。配置示例如下:

spring.webjars.prefix=/webjars
spring.resources.static-locations=/webjars/

在配置完毕后,可以使用 localhost:8080/webjars/ 加上前端库名称和版本号访问到相应的资源文件。例如访问 bootstrap 的 CSS 文件可使用 localhost:8080/webjars/bootstrap/3.3.7/css/bootstrap.min.css 。这里需要注意的是,访问链接“/webjars/”是由 spring.resources.static-locations 和 spring.webjars.prefix 两个配置项组合而成,其中 spring.resources.static-locations 是配置静态资源文件夹的前缀,而 spring.webjars.prefix 是配置访问 webjars 路径的前缀。

三、基于 classpath 进行静态资源映射

classpath 是指项目中编译后生成的 class 文件所在的路径。当我们把一些静态资源文件(如图片、文本文件、配置文件等)放置在 src/main/resources 路径下后,这些就可以通过 classpath 直接获取。在 Springboot 中,我们可以使用以下配置项对静态资源进行映射。

spring.resources.static-locations=classpath:/static/

需要注意的是,访问链接“/”是定位到静态资源的默认路径,比如我们在 src/main/resources/static 下有一个 index.html 文件,那么可以通过 localhost:8080/index.html 访问到该文件。我们也可以在配置文件中通过设置属性来更改这个默认路径,示例如下:

spring.mvc.static-path-pattern=/resources/**

这里的配置项是将默认路径“/”修改为访问路由“/resources/**”。

四、基于 file 进行静态资源映射

在一些特殊的情况下,我们可能需要把一些图片、文本文件、配置文件等资源文件从外部文件夹中引入到我们的项目中。此时,我们可以基于 file 进行静态资源映射,例如:

spring.resources.static-locations=file:/Users/Desktop/images/

在以上配置中,将访问链接“/”转向到了外部路径 /Users/Desktop/images/。同样的,我们也可以使用以下配置项修改默认路径。

spring.mvc.static-path-pattern=/files/**

五、Springboot默认的静态资源映射

在 Springboot 项目中,默认的静态资源文件夹为以下两个路径:

  • /META-INF/resources/
  • /resources/

这里的 /META-INF/resources/ 是指某些 JAR 包内置的静态资源文件,如第三方库中的一些 CSS 和 JavaScript 文件等。而 /resources/ 是指本项目中的静态资源文件夹。

当我们需要访问这些默认路径中的静态资源文件时,Springboot 会自动映射到相应的文件。所以当某些文件在以上默认路径下时,我们可以通过 localhost:8080/ 直接进行访问。同时,Springboot 也允许我们修改这些默认资源文件夹的位置,我们可以通过修改 application.properties 或 application.yml 文件中的以下配置项进行修改。

spring.resources.add-mappings=false
spring.resources.static-locations=classpath:/static/, classpath:/public/, classpath:/resources/, classpath:/META-INF/resources/

结束语

本文详细介绍了使用 Springboot 所支持的三种主要静态资源映射方式,并且通过实际配置流程结合示例代码展示了相关用法。相信这些知识可以帮助您更好地理解和使用 Springboot 开发 Web 应用程序,并且可以避免一些常见的开发误区和错误。同时,我们也需要注意到,Springboot 中静态资源映射涉及到的很多细节问题,需要我们在实际开发中细心钻研。