当前位置: 首页 > news >正文

Spring MVC 中<mvc:resources> 的两种配置中,`classpath:/static/`和`/static/`有什么不同

在 Spring MVC 中,<mvc:resources>location 路径前缀决定了资源的查找位置,二者的核心区别如下:


1. location="/static/"

  • 含义
    表示资源位于 Web 应用的根目录(即 WAR 包的根路径,对应开发时的 src/main/webapp/static 目录)。
  • 适用场景
    静态资源直接存放在 webapp/static 目录下,且希望直接通过 WAR 根路径访问。
  • 目录结构
    src/
      main/
        webapp/
          static/       ← 资源存放位置
            css/
            js/
    
  • 访问路径
    http://localhost:8080/your-project/static/css/style.css

2. location="classpath:/static/"

  • 含义
    表示资源位于 类路径(classpath) 下(对应开发时的 src/main/resources/static 目录,构建后会被复制到 WEB-INF/classes/static)。
  • 适用场景
    静态资源存放在 resources/static 目录下,通常与 Spring Boot 的默认静态资源路径一致。
  • 目录结构
    src/
      main/
        resources/
          static/       ← 资源存放位置
            css/
            js/
    
  • 访问路径
    http://localhost:8080/your-project/static/css/style.css

关键对比表

配置方式资源物理位置适用项目类型构建后的 WAR 路径
location="/static/"src/main/webapp/static传统 Servlet 项目/static/(根目录)
location="classpath:/static/"src/main/resources/staticSpring Boot 或需要类路径访问的项目WEB-INF/classes/static/

常见问题排查

1. 404 错误
  • 现象:配置了 location="classpath:/static/",但资源在 webapp/static 下。
    原因:资源未被打包到类路径。
    解决:将资源移动到 src/main/resources/static
2. 资源重复加载
  • 现象:同时配置两种路径。
    解决:合并配置,指定多个资源位置:
    <mvc:resources mapping="/static/**" 
                  location="/static/, classpath:/static/"/>
    
3. 与 Spring Boot 冲突
  • 现象:Spring Boot 默认使用 classpath:/static/,但项目中配置了 location="/static/"
    解决:统一使用 Spring Boot 默认配置,或显式覆盖:
    # application.properties
    spring.web.resources.static-locations=classpath:/static/, file:./webapp/
    

总结

  • 使用 location="/static/"
    适合资源直接暴露在 WAR 根目录的场景(如传统 Servlet 项目)。
  • 使用 location="classpath:/static/"
    适合资源需要从类路径加载的场景(如 Spring Boot 或需要打包到 WEB-INF/classes 的项目)。
  • 验证资源位置:解压 WAR 文件,检查 static 文件夹是否在预期路径下。

相关文章:

  • Python爬虫教程005:ajax的get请求豆瓣电影排行榜
  • html中img标签直接使用border-radius时会图片进行了遮挡
  • 被誉为开源RTOS的天花板ThreadX
  • 【Linux笔记】系统中的权限管理及优化
  • Linux 编程环境
  • Dify 深度集成 MCP实现灾害应急响应
  • CVP介绍
  • C语言函数
  • ThingsBoard移动应用详细讲解
  • Redis简介
  • 支付宝沙箱支付报错“订单信息无法识别,建议联系卖家”
  • NOIP2017提高组.宝藏
  • 【强化学习】Deep Reinforcement Learning: A Survey综述学习
  • fast_pow(),c语言幂函数
  • 性能比拼: Go(Gin) vs Python(Flask)
  • 按规则批量修改 txt/html/json/xml/csv/记事本等文本文件内容
  • 【企业级Web应用中的文件下载处理:从S3预签名URL到压缩状态管理】
  • 24、网络编程基础概念
  • Appscan下载及安装教程
  • Vue3中的Icon理方案
  • 做网站的公司哪些靠谱/国内做seo最好的公司
  • 天津专业做网站的公司有哪些/百度客户端电脑版
  • 一级建设造师网站/网盘搜索
  • h5开发的app/企业站seo外包
  • 在线视频制作网站/站长之家点击进入
  • 文昌网站 做炸饺子/最新新闻国内大事件