Springboot与Thymeleaf模板引擎整合基础教程
前言
由于在开发My Blog项目时使用了大量的技术整合,针对于部分框架的使用和整合的流程没有做详细的介绍和记录,导致有些朋友用起来有些吃力,因此打算在接下来的时间里做一些基础整合的介绍,当然,可能也不会特别的基础,但是源码会开放给大家,方便大家学习,此次的源码地址为springboot-thymeleaf,多谢大家支持。
简介
Thymeleaf是一个跟Velocity、FreeMarker类似的模板引擎,它可以完全替代JSP,相较与其他的模板引擎,它有如下三个极吸引人的特点:
- Thymeleaf在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。浏览器解释 html 时会忽略未定义的标签属性,所以thymeleaf的模板可以静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。
- Thymeleaf开箱即用的特性。它提供标准和spring标准两种方言,可以直接套用模板实现JSTL、OGNL表达式效果,避免每天套模板、改jstl、改标签的困扰。同时开发人员也可以扩展和创建自定义的方言。
- Thymeleaf提供spring标准方言和一个与SpringMVC完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能。
编辑pom文件,引入Thymeleaf
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>com.my.blog</artifactId>
<name>springboot-thymeleaf</name>
<description>springboot-thymeleaf</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.1.RELEASE</version>
</parent>
<properties>
<java.version>1.7</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
31
1
<?xml version="1.0" encoding="UTF-8"?>
2
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3
<modelVersion>4.0.0</modelVersion>
4
<artifactId>com.my.blog</artifactId>
5
<name>springboot-thymeleaf</name>
6
<description>springboot-thymeleaf</description>
7
<parent>
8
<groupId>org.springframework.boot</groupId>
9
<artifactId>spring-boot-starter-parent</artifactId>
10
<version>1.5.1.RELEASE</version>
11
</parent>
12
13
<properties>
14
<java.version>1.7</java.version>
15
</properties>
16
17
<dependencies>
18
<dependency>
19
<groupId>org.springframework.boot</groupId>
20
<artifactId>spring-boot-starter-thymeleaf</artifactId>
21
</dependency>
22
</dependencies>
23
<build>
24
<plugins>
25
<plugin>
26
<groupId>org.springframework.boot</groupId>
27
<artifactId>spring-boot-maven-plugin</artifactId>
28
</plugin>
29
</plugins>
30
</build>
31
</project>
Thymeleaf配置
# thymeleaf
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.check-template-location=true
spring.thymeleaf.suffix=.html
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.content-type=text/html
spring.thymeleaf.mode=HTML5
spring.thymeleaf.cache=false
8
1
# thymeleaf
2
spring.thymeleaf.prefix=classpath:/templates/
3
spring.thymeleaf.check-template-location=true
4
spring.thymeleaf.suffix=.html
5
spring.thymeleaf.encoding=UTF-8
6
spring.thymeleaf.content-type=text/html
7
spring.thymeleaf.mode=HTML5
8
spring.thymeleaf.cache=false
新建模板文件
在resources文件夹下新增templates目录,用于存放模板文件,新增hello.html。
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8"/>
<title>springboot-thymeleaf demo</title>
</head>
<body>
<p th:text="'hello, ' + ${name} + '!'" />
</body>
</html>
10
1
<!DOCTYPE html>
2
<html lang="en" xmlns:th="http://www.thymeleaf.org">
3
<head>
4
<meta charset="UTF-8"/>
5
<title>springboot-thymeleaf demo</title>
6
</head>
7
<body>
8
<p th:text="'hello, ' + ${name} + '!'" />
9
</body>
10
</html>
编辑业务代码及启动类
HelloController :
/**
* author:13
* date:2017-09-14
*/
@Controller
public class HelloController {
@RequestMapping("/hello")
public String hello(HttpServletRequest request, @RequestParam(value = "name", required = false, defaultValue = "springboot-thymeleaf") String name) {
request.setAttribute("name", name);
return "hello";
}
}
12
1
/**
2
* author:13
3
* date:2017-09-14
4
*/
5
@Controller
6
public class HelloController {
7
@RequestMapping("/hello")
8
public String hello(HttpServletRequest request, @RequestParam(value = "name", required = false, defaultValue = "springboot-thymeleaf") String name) {
9
request.setAttribute("name", name);
10
return "hello";
11
}
12
}
WebApplication :
/**
* author:13
* date:2017-09-14
*/
@SpringBootApplication
public class WebApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(WebApplication.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(WebApplication.class, args);
}
}
15
1
/**
2
* author:13
3
* date:2017-09-14
4
*/
5
@SpringBootApplication
6
public class WebApplication extends SpringBootServletInitializer {
7
@Override
8
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
9
return application.sources(WebApplication.class);
10
}
11
12
public static void main(String[] args) throws Exception {
13
SpringApplication.run(WebApplication.class, args);
14
}
15
}
验证
项目启动后,在浏览器端输入以下urlhttp://localhost:8080/hello
: