Springboot支持许多模板引擎,我在使用thymeleaf时总是拿不到静态资源,其中背景图片总是拿不到,网上找的方法基本都试过,还是不行,想到可能是版本兼容问题,缓存问题,于是换了依赖,消除缓存,重建模块,解决了一些小问题,但是背景图片总是拿不到,找了好多其他开发者开发好的代码,尝试了好多次才成功拿到,写来记录一下,还有就是在调试过程中对浏览器的抓包功能有了很深的印象
目录如下
static是springboot默认的静态资源存放目录之一,在没有整合Thymeleaf之前,默认访问static目录(以及其他几个默认目录),在整合thymeleaf后,默认访问template目录,若想在控制器内访问到静态资源,需要重定向,如return "redirect:no1.html";
控制器代码
@Controller
public class No1 {
@RequestMapping("/demo")
public String demo(){
//重定向到静态资源
return "redirect:no1.html";
}
@RequestMapping("/one")
public String demo2(Model model){
List<Userss> list=new ArrayList<>();
Userss userss1=new Userss("张三","14","man","worker");
Userss userss2=new Userss("张三","14","man","worker");
Userss userss3=new Userss("张三","14","man","worker");
list.add(userss1);
list.add(userss2);
list.add(userss3);
model.addAttribute("list",list);
model.addAttribute("title","<h1 align='center'>标题在此</h1>");
return "one";
}
}
one.html
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org"
xmlns:h1="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<!-- 新 Bootstrap 核心 CSS 文件 -->
<title>Thymeleaf of First</title>
<link th:href="@{css/bootstrap.min.css}" rel="stylesheet">
<link th:href="@{css/hello.css}" href="../static/css/hello.css" rel="stylesheet">
</head>
<body>
<p th:utext="${title}"></p>
<table class="table">
<tr>
<th>name</th>
<th>age</th>
<th>sex</th>
<th>work</th>
</tr>
<tr th:each="x:${list}">
<td th:text="${x.name}"></td>
<td th:text="${x.age}"></td>
<td th:text="${x.sex}"></td>
<td th:text="${x.work}"></td>
</tr>
</table>
<h1 id="h1">这是啥呀</h1>
<button onclick="bu()">点击</button>
<script th:inline="javascript">
function bu() {
document.getElementById("h1").innerHTML="js替换结束";
console.log([[${title}]]);
}
</script>
</body>
</html>
设置了图片背景的样式文件
body{
background-image: url("../image/580.jpg");
background-attachment: fixed;
background-size: cover;
background-repeat: no-repeat;
}
经过反复尝试后发现代码是没有问题的,把ide重启之后再启动项目就可以拿到背景样式。
问题似乎在IDEA上,之后的几次尝试也都是重启后才能完整的拿到所有项目资源。