Spring MVC 中怎么配置静态资源映射与虚拟路径

大瑶同学_1999

大瑶同学_1999

2026-08-08

1035人浏览

原创

spring mvc 静态资源映射核心是避免 dispatcherservlet 拦截,交由 resourcehttprequesthandler 处理;推荐通过 resourcehandlerregistry 绑定虚拟路径(如 /static/**)与物理路径(如 classpath:/static/),spring boot 还支持默认路径自动映射及 defaultservlet 回退机制。

spring mvc 中怎么配置静态资源映射与虚拟路径

Spring MVC 中配置静态资源映射,核心是让 DispatcherServlet 不拦截 CSS、JS、图片等请求,而是交由资源处理器(ResourceHttpRequestHandler)直接返回文件内容。虚拟路径(如 /static/**)是你对外暴露的访问前缀,物理路径(如 classpath:/static/)才是真实存放位置——二者通过 ResourceHandlerRegistry 绑定。

用 ResourceHandlerRegistry 映射虚拟路径到物理目录

这是最常用、最推荐的方式,适用于 Spring Boot 和传统 Spring MVC(需实现 WebMvcConfigurer):

  • 在配置类中重写 addResourceHandlers 方法
  • addResourceHandler("/static/**") 定义浏览器访问的虚拟路径(支持 Ant 风格通配)
  • addResourceLocations("classpath:/static/") 指定资源实际所在位置,可多个,按顺序查找
  • 例如:访问 http://localhost:8080/static/js/app.js,会从 src/main/resources/static/js/app.js 加载

利用 Spring Boot 默认静态资源路径(免配置)

Spring Boot 已内置默认映射规则,只要把文件放对位置,无需写任何配置:

deep-java-review
deep-java-review

Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...

下载
  • 支持的类路径目录(按优先级降序):classpath:/META-INF/resources/ → classpath:/resources/ → classpath:/static/ → classpath:/public/
  • 访问根路径即可:比如把 logo.png 放进 src/main/resources/static/images/,直接通过 /images/logo.png 访问
  • 注意:若多个目录存在同名文件,优先取排在前面的目录中的那个

启用 DefaultServlet 回退机制(兜底方案)

当其他 handler 都不匹配时,把请求交给容器原生的 DefaultServlet(如 Tomcat 的 default servlet),适合遗留项目或复杂路径场景:

  • 配置方式:在 Java 配置类中调用 configureDefaultServletHandling().enable()
  • 它会注册一个 SimpleUrlHandlerMapping,匹配所有未被其他 handler 处理的请求
  • 本质是“放行”,不是映射,所以不定义虚拟路径,而是让容器自己按真实文件系统路径解析
  • 适用于需要保留原始 URL 结构(如 /css/main.css 直接对应 webapp/css/main.css)的部署场景

自定义多源映射与文件系统路径

除了 classpath,还能映射到服务器本地磁盘或外部路径,适合上传文件、运营素材等动态资源:

  • 使用 file:/var/www/uploads/ 这类绝对路径,注意权限和路径末尾斜杠
  • 可混合多个 location:addResourceLocations("classpath:/static/", "file:/opt/app/assets/")
  • 虚拟路径必须唯一,但一个 handler 可绑定多个物理位置;不同 handler 可定义不同虚拟前缀,比如 /uploads/** 和 /docs/**
  • Spring 按添加顺序查找资源,找到即返回,不会继续往后查

相关专题

更多
spring框架介绍
spring框架介绍

本专题整合了spring框架相关内容,想了解更多详细内容,请阅读专题下面的文章。

2025.08.06

2311

22

Java Spring Security 与认证授权
Java Spring Security 与认证授权

本专题系统讲解 Java Spring Security 框架在认证与授权中的应用,涵盖用户身份验证、权限控制、JWT与OAuth2实现、跨站请求伪造(CSRF)防护、会话管理与安全漏洞防范。通过实际项目案例,帮助学习者掌握如何 使用 Spring Security 实现高安全性认证与授权机制,提升 Web 应用的安全性与用户数据保护。

2026.01.26

437

25

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

20

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

40

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

20

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

20

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

20

15

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

240

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

140

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习