跳到主要内容

Spring 静态资源

在开发Web应用时,静态资源(如CSS、JavaScript、图片等)是不可或缺的一部分。Spring框架提供了简单而强大的方式来管理和提供这些静态资源。本文将详细介绍如何在Spring Web应用中处理静态资源。

什么是静态资源?

静态资源是指在Web应用中不会动态改变的文件,例如CSS样式表、JavaScript脚本、图片、字体等。这些文件通常存储在服务器的特定目录中,并通过URL直接访问。

配置静态资源

在Spring中,默认情况下,静态资源会被放置在src/main/resources/static目录下。Spring Boot会自动配置这些资源,使其可以通过URL访问。

默认静态资源位置

Spring Boot默认会从以下位置加载静态资源:

  • classpath:/static
  • classpath:/public
  • classpath:/resources
  • classpath:/META-INF/resources

例如,如果你有一个文件src/main/resources/static/css/style.css,你可以通过http://localhost:8080/css/style.css访问它。

自定义静态资源位置

如果你希望将静态资源放在其他位置,可以通过配置文件或Java代码进行自定义。

通过配置文件自定义

application.propertiesapplication.yml中,你可以使用spring.resources.static-locations属性来指定静态资源的位置。

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

通过Java代码自定义

你也可以通过Java配置类来指定静态资源的位置。

java
@Configuration
public class WebConfig implements WebMvcConfigurer {

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**")
.addResourceLocations("classpath:/custom-static/");
}
}

处理静态资源的URL映射

Spring允许你通过URL映射来访问静态资源。默认情况下,静态资源的URL路径与文件路径一致。

示例:访问静态资源

假设你有一个文件src/main/resources/static/images/logo.png,你可以通过以下URL访问它:

http://localhost:8080/images/logo.png

自定义URL映射

如果你希望自定义静态资源的URL路径,可以通过addResourceHandlers方法来实现。

java
@Configuration
public class WebConfig implements WebMvcConfigurer {

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/my-images/**")
.addResourceLocations("classpath:/static/images/");
}
}

这样,你可以通过http://localhost:8080/my-images/logo.png访问logo.png文件。

实际案例

假设你正在开发一个简单的博客网站,你需要加载CSS样式表和JavaScript脚本来美化页面并添加交互功能。

项目结构

src/main/resources/
├── static/
│ ├── css/
│ │ └── style.css
│ ├── js/
│ │ └── main.js
│ └── images/
│ └── logo.png
└── templates/
└── index.html

访问静态资源

index.html中,你可以通过以下方式引用静态资源:

html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>My Blog</title>
<link rel="stylesheet" href="/css/style.css">
</head>
<body>
<img src="/images/logo.png" alt="Logo">
<script src="/js/main.js"></script>
</body>
</html>

总结

在Spring Web应用中,静态资源的管理和访问非常简单。通过默认配置,你可以轻松地将CSS、JavaScript、图片等文件放置在src/main/resources/static目录下,并通过URL直接访问。如果需要自定义静态资源的位置或URL映射,Spring也提供了灵活的配置选项。

附加资源

练习

  1. 创建一个Spring Boot项目,并在src/main/resources/static目录下放置一些静态资源文件(如CSS、JavaScript、图片)。
  2. 通过浏览器访问这些静态资源,确保它们能够正确加载。
  3. 尝试自定义静态资源的位置和URL映射,并验证其效果。