【问题标题】:Spring Boot Static Resources Duplicate MappingSpring Boot 静态资源重复映射
【发布时间】:2016-10-10 15:49:22
【问题描述】:

我有一个 Spring Boot 应用程序,可以正常完美地映射静态内容。但是,当我向控制器添加一些像 /{username}/{info} 这样带有两个字符串参数的映射时,由于 /{username}/{info} 映射响应的静态内容请求,它在加载静态内容时失败。

例如,我将静态文件映射为/css/bootstrap.css 等。但是/css/bootstrap.css 请求被发送到/{username}/{info} 映射并且它们没有被顺便加载。

这个问题有什么解决办法吗?如何获得/css/* 映射的特权?如何将/css/sth.css 映射与/{username}/{info} 映射分开?

【问题讨论】:

  • 你使用哪个Spring Boot 版本?

标签: java spring spring-mvc spring-boot


【解决方案1】:

您需要为您的 CSS 文件添加 ResourceHandlerRegistry 条目,并将它们存储在 /resources 中:

https://spring.io/blog/2013/12/19/serving-static-web-content-with-spring-boot

【讨论】:

    【解决方案2】:

    我之前尝试过 ResourceHandlerRegistry,但它没有用。但是,我通过在 /static 文件夹中再创建一个文件夹解决了这个问题。我在 /resources/static 文件夹中添加了一个名为“static”的文件夹,最终的层次结构是这样的,/resources/static/static/css/*

    顺便说一句,我可以使用“/static/css/*”来映射静态资源,它与“/{username}/{info}”映射不冲突,因为我的静态 url 由 3 个字符串字段组成并且映射只接受 2 个字符串参数。

    可能会有更优雅的解决方案,但我没有时间为我找出它。感谢您的回复。

    【讨论】:

      猜你喜欢
      • 2020-07-21
      • 2014-04-13
      • 1970-01-01
      • 2017-02-21
      • 1970-01-01
      • 2016-10-01
      • 2016-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多