关于springboot+thymeleaf不能引用外部静态资源

关于springboot+thymeleaf不能引用外部静态资源

第一次写博客,为了记录一下踩的坑,大家能够避过。花了4个小时一直在找,为什么一直无法成功引用外部静态资源

问题:springboot+thymeleaf 引入css、js 无效。
目录结构如下图
关于springboot+thymeleaf不能引用外部静态资源
关于springboot+thymeleaf不能引用外部静态资源
关于springboot+thymeleaf不能引用外部静态资源
项目为springboot2.0X以上的版本,这些都引入了,应该是可以的,百度了一圈,全部都类似,改配置文件都试过了

spring.mvc.static-path-pattern=/**
spring.mvc.static-path-pattern=/static/**

还是不行。
-----------------------------手动分割线------------------------------------------
解决办法:
如果你以上配置都做了,应该就可以了。
注意的要点是:引入这两个就行了

<html lang="en" xmlns:th="http://www.thymeleaf.org">  //导入头文件
 <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

springboot底层会自动配置加载目录分别是:

  • classpath:/META-INF/resources/
  • classpath:/resources/
  • classpath:/static/
  • classpath:/public/

而这两句代码是指springboot 改变了mvc的配置
spring.mvc.static-path-pattern=/**
spring.mvc.static-path-pattern=/static/**

有同学问我th:src="@{XXXXXX}" 的作用是什么,与src=“XXXXX”的区别是什么
使用@关键字 引用地址 ,既可以是绝对路径,也可以是相对路径,src同理
区别在于,项目跑起来部署后,访问的资源路径会发生改变,导致静态的src无法获取资源文件,而th:src=“@{}” 可以获取

举例: 在application.properties 中添加这句代码

server.servlet.context-path=/crud

访问的路径也会随之改变

关于springboot+thymeleaf不能引用外部静态资源

划重点,如果你到了这一步还不行

那么看看你有没有编写了mvc的配置类?如果是的话那就继承WebMvcConfigurerAdapter,不要继承WebMvcConfigurerationSupport,继承后者表明完全接管springMvc,会导致springBoot的默认设置都丢弃掉。

猛然落泪,留下了不学无术的眼泪,因为自己多写了mvc配置类,结果导致我寻找了这么久,在此记录一下。
一般mvc的配置类可以写注释@RequestMapping

未经过作者允许,不得转载。

上一篇:案例分享——钉钉


下一篇:基于ESC搭建FTP服务