java – Spring在文件名中使用dot(s)提供静态内容

前端之家收集整理的这篇文章主要介绍了java – Spring在文件名中使用dot(s)提供静态内容前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我想通过Spring提供npm中构建的网页,一切都运行正常,但无论真正的后缀是什么(css,js或html),我都无法提供像main.xxxx.yyy这样的资源.

目录树是这样的:

  1. src/main/resource/resource
  2. index.html
  3. asset-manifest.json
  4. favicon.ico
  5. manifest.json
  6. service-worker.js
  7. static
  8. css
  9. main.fc656101.css
  10. main.fc656101.css.map
  11. js
  12. main.91794276.js
  13. main.91794276.js.map
  14. media
  15. banner.bdcf92f4.jpg
  16. fontawesome-webfont.912ec66d.svg
  17. ...

这是应用程序类:

  1. @SpringBootApplication
  2. public class Application {
  3. private static Logger log=Logger.getLogger(Application.class.getName());
  4. @Bean
  5. WebMvcConfigurer configurer () {
  6. return new WebMvcConfigurerAdapter() {
  7. @Override
  8. public void addResourceHandlers (ResourceHandlerRegistry registry) {
  9. registry.addResourceHandler("/resources/static/*").
  10. addResourceLocations("classpath:/static/");
  11. }
  12. @Override
  13. public void configurePathMatch(PathMatchConfigurer configurer) {
  14. super.configurePathMatch(configurer);
  15. configurer.setUseSuffixPatternMatch(false);
  16. }
  17. };
  18. }
  19. public static void main(String[] args) {
  20. SpringApplication.run(Application.class,args);
  21. }

为了调试这个问题,我手动重命名了一些文件并且它可以工作,因此我将问题限制在包含点的文件名中.

我看到有人解决添加{variable:.在RestControllers中的请求映射,但我没有控制器,所以我无法弄清楚如何做到这一点.

编辑:

我发现这个配置:

  1. @Configuration
  2. class ServletConfig extends WebMvcConfigurerAdapter {
  3. @Override
  4. public void configurePathMatch(final PathMatchConfigurer configurer) {
  5. configurer.setUseSuffixPatternMatch(false);
  6. configurer.setUseTrailingSlashMatch(false);
  7. }
  8. @Override
  9. public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
  10. configurer.favorPathExtension(false);
  11. }
  12. }

现在它提供所有* .html,包括page.01.html,但仍然不是style.01.css或script.01.js.我假设是一个不同的问题,原始的问题由ContentNegotiationConfigurer解决.

最佳答案
我写的这应该是一个非常愚蠢的问题……

问题是浏览器缓存和项目清理.确保始终清除缓存(这是非常明显的),但也要在更改配置后清除项目中提供静态内容的位置.停止并重新启动JAVA是不应该的.

这花费了我三天,但现在正在工作,正确的配置是我发布的第一个,不需要contentNegotiation配置.

希望这可以为其他人节省一天!

猜你在找的Spring相关文章