# Spring Boot中如何访问静态资源 ## 一、静态资源的概念与默认配置 ### 1.1 什么是静态资源 静态资源是指服务器端不需要动态处理即可直接返回给客户端的文件,常见类型包括: - 前端文件(HTML/CSS/JavaScript) - 图片(PNG/JPG/GIF等) - 字体文件(TTF/WOFF) - 文档(PDF/TXT等) ### 1.2 Spring Boot默认静态资源路径 Spring Boot默认会在以下classpath路径下查找静态资源(按优先级排序): 1. `/META-INF/resources/` 2. `/resources/` 3. `/static/` 4. `/public/` 示例项目结构:
src/main/resources/ ├─ static/ │ ├─ css/style.css │ └─ js/app.js ├─ templates/ └─ application.properties
## 二、基础访问方式 ### 2.1 直接访问资源 假设存在`static/images/logo.png`文件,可通过以下URL访问:
http://localhost:8080/images/logo.png
### 2.2 首页文件处理 Spring Boot会自动识别以下首页文件: - `index.html` - `index.htm` - `default.html` - `default.htm` 当访问根路径时(`/`),会自动返回这些文件。 ## 三、自定义配置方案 ### 3.1 修改默认路径 在`application.properties`中配置: ```properties # 添加新的资源路径 spring.web.resources.static-locations=classpath:/custom-static/ # 修改默认路径(会覆盖默认值) spring.web.resources.static-locations=classpath:/assets/,file:/opt/static
# 添加统一前缀 spring.mvc.static-path-pattern=/static/**
此时访问路径变为:
http://localhost:8080/static/images/logo.png
# 设置缓存时间(单位:秒) spring.web.resources.cache.period=3600 # 缓存指纹(版本控制) spring.web.resources.chain.strategy.content.enabled=true spring.web.resources.chain.strategy.content.paths=/**
通过Java配置类实现:
@Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/files/**") .addResourceLocations("file:/opt/uploads/") .setCacheControl(CacheControl.maxAge(1, TimeUnit.DAYS)); } }
spring.web.resources.add-mappings=false
禁用所有静态资源当同时使用Thymeleaf时: - 模板文件应放在templates/
目录 - 静态资源放在static/
目录 - 确保没有视图控制器拦截静态路径
# 配置CDN域名 spring.web.resources.static-locations=classpath:/static/ spring.web.resources.chain.strategy.fixed.enabled=true spring.web.resources.chain.strategy.fixed.paths=/js/**,/css/** spring.web.resources.chain.strategy.fixed.version=v1.0
server.compression.enabled=true server.compression.mime-types=text/html,text/css,application/javascript
<dependency> <groupId>org.webjars</groupId> <artifactId>bootstrap</artifactId> <version>5.2.3</version> </dependency>
访问方式:/webjars/bootstrap/5.2.3/css/bootstrap.min.css
@SpringBootTest class StaticResourceTest { @Autowired private MockMvc mockMvc; @Test void testStaticResource() throws Exception { mockMvc.perform(get("/css/style.css")) .andExpect(status().isOk()) .andExpect(content().contentType("text/css")); } }
启用调试日志查看资源映射:
logging.level.org.springframework.web.servlet.resource=DEBUG
配置方式 | 优点 | 缺点 |
---|---|---|
默认配置 | 零配置开箱即用 | 灵活性低 |
属性配置 | 简单快速 | 功能有限 |
Java配置 | 完全控制 | 需要编码 |
实际开发中建议: 1. 开发环境使用默认配置 2. 生产环境配合CDN和缓存策略 3. 特殊需求使用Java配置
最佳实践:保持静态资源结构清晰,推荐按类型分目录存放(css/js/images等)
附录: - Spring官方文档 - 示例项目:https://github.com/example/spring-static-demo “`
(注:实际字数约1500字,可根据需要增减具体章节内容)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。