今天学习了spring boot 集成thymeleaf模板引擎。发现thymeleaf功能确实很强大。记录于此,供自己以后使用。
thymeleaf:
- thymeleaf是一个java类库,他是一个xml/xhtml/html5的模板引擎,可以作为mvc的web应用的view层。
- thymeleaf还提供了额外的模块与spring mvc集成,所以我们可以使用thymeleaf完全替代jsp。
spring boot
- 通过org.springframework.boot.autoconfigure.thymeleaf包对thymeleaf进行了自动配置。
- 通过thymeleafautoconfiguration类对集成所需要的bean进行自动配置。包括templateresolver,templateengine,thymeleafviewresolver的配置。
下面我将演示spring boot 日常工作中常用的thymeleaf用法。
spring boot 日常工作中常用thymeleaf的用法
1:首先,在创建项目的时候选择依赖中选中thymeleaf,或者在pom中添加依赖
1
2
3
4
|
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-thymeleaf</artifactid>
</dependency>
|
或者项目名-右键-add framework support来添加依赖jar包。如图
2:示例javabean
此类用来在模板页面展示数据用。包含name和age属性。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
public class person {
private string name;
private integer age;
public person(string name, integer age) {
this .name = name;
this .age = age;
}
public string getname() {
return name;
}
public void setname(string name) {
this .name = name;
}
public integer getage() {
return age;
}
public void setage(integer age) {
this .age = age;
}
}
|
3.脚本样式静态文件
根据默认原则,脚本样式,图片等静态文件应放置在src/main/resources/static下,这里引入了bootstrap和jquery,结构如图所示:
4.演示页面
根据默认原则,页面应放置在src/main/resources/templates下。在src/main/resources/templates下面新建index.html,如上图。
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
<!doctype html>
<html xmlns:th= "http://www.thymeleaf.org"
xmlns:sec= "http://www.thymeleaf.org/thymeleaf-extras-springsecurity3" >
<head>
<meta name= "viewport" content= "width=device-width,initial-scale=1" />
<link th:href= "@{bootstrap/css/bootstrap.min.css}" rel= "external nofollow" rel= "stylesheet" />
<link th:href= "@{bootstrap/css/bootstrap-theme.min.css}" rel= "external nofollow" rel= "stylesheet" />
<meta charset= "utf-8" />
<title>title</title>
</head>
<body>
<div class = "panel panel-primary" >
<div class = "panel-heading" >
<h3 class = "panel-title" >访问model</h3>
</div>
<div class = "panel-body" >
<span th:text= "${singleperson.name}" ></span>
</div>
<div th: if = "${not #lists.isempty(people)}" >
<div class = "panel panel-primary" >
<h3 class = "panel-title" >列表</h3>
</div>
<div class = "panel-body" >
<ul class = "panel-group" >
<li class = "list-group-item" th:each= "person:${people}" >
<span th:text= "${person.name}" ></span>
<span th:text= "${person.age}" ></span>
<button class = "btn" th:onclick= "'getname(\''+${person.name}+'\')'" >获得名字</button>
</li>
</ul>
</div>
</div>
</div>
<script th:src= "@{jquery-1.10.2.min.js}" type= "text/javascript" ></script>
<script th:src= "@{bootstrap/js/bootstrap.min.js}" ></script>
<script th:inline= "javascript" >
var single=[[${singleperson}]];
console.log(single.name+ "/" +single.age);
function getname(name) {
console.log(name);
}
</script>
</body>
</html>
|
5.数据准备
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
import org.springframework.boot.springapplication;
import org.springframework.boot.autoconfigure.springbootapplication;
import org.springframework.stereotype.controller;
import org.springframework.ui.model;
import org.springframework.web.bind.annotation.requestmapping;
import org.springframework.web.bind.annotation.restcontroller;
import java.util.arraylist;
import java.util.list;
@controller
@springbootapplication
public class thymeleaftestapplication {
@requestmapping ( "/" )
public string index(model model){
person single= new person( "aa" , 1 );
list<person> people= new arraylist<person>();
person p1= new person( "bb" , 2 );
person p2= new person( "cc" , 3 );
person p3= new person( "dd" , 4 );
people.add(p1);
people.add(p2);
people.add(p3);
model.addattribute( "singleperson" ,single);
model.addattribute( "people" ,people);
return "index" ;
}
public static void main(string[] args) {
springapplication.run(thymeleaftestapplication. class , args);
}
}
|
6.运行
访问http://localhost:8080效果如图:
单击“获得名字” f12产看页面控制台打印的日志效果如图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://blog.csdn.net/haozhuxuan/article/details/53695850