关于springboot+thymeleaf不能引用外部静态资源
第一次写博客,为了记录一下踩的坑,大家能够避过。花了4个小时一直在找,为什么一直无法成功引用外部静态资源
问题:springboot+thymeleaf 引入css、js 无效。
目录结构如下图
项目为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
访问的路径也会随之改变
划重点,如果你到了这一步还不行
那么看看你有没有编写了mvc的配置类?如果是的话那就继承WebMvcConfigurerAdapter,不要继承WebMvcConfigurerationSupport,继承后者表明完全接管springMvc,会导致springBoot的默认设置都丢弃掉。
猛然落泪,留下了不学无术的眼泪,因为自己多写了mvc配置类,结果导致我寻找了这么久,在此记录一下。
一般mvc的配置类可以写注释@RequestMapping
未经过作者允许,不得转载。