模板引擎
SpringBoot是通过模版引擎进行页面结果渲染的,官方提供预设配置的模版引擎主要有
- Thymeleaf
- FreeMarker
- Velocity
- Groovy
- Mustache
我们在这里演示使用Thymeleaf 和FreeMarker 模板引擎。
Thymeleaf
Thymeleaf是适用于 Web 和独立环境的现代服务器端 Java 模板引擎。
Thymeleaf 的主要目标是为你的开发工作流程带来优雅的自然模板——HTML可以在浏览器中正确显示,也可以作为静态原型工作,从而加强开发团队的协作。
凭借 Spring Framework 的模块、与你最喜欢的工具的大量集成以及插入你自己的功能的能力,Thymeleaf 是现代 HTML5 JVM Web 开发的理想选择——尽管它还有更多功能。
新建一个模块
![](https://www.f11.cn/uploads/allimg/220126/125521K39-0.jpg)
选择我们需要的组建
Developer Tools 中的Spring Boot DevTools
Web 中的Spring Web
Template Engines 中的Thymeleaf
![](https://www.f11.cn/uploads/allimg/220126/1255213160-1.jpg)
![](https://www.f11.cn/uploads/allimg/220126/1255215005-2.jpg)
![](https://www.f11.cn/uploads/allimg/220126/1255211040-3.jpg)
也可以直接在pom.xml中引入thymeleaf 依赖
1
2
3
4
|
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
|
![](https://www.f11.cn/uploads/allimg/220126/1255216307-4.jpg)
创建模板页面
src/main/resources/templates/index.html
1
2
3
4
5
6
7
8
9
10
11
12
|
<!DOCTYPE html>
<html lang= "en" >
<head>
<meta charset= "UTF-8" >
<title>thymeleaf - 入门小站</title>
</head>
<body>
<p th:text= "'名字:'+${name}" ></p>
<p th:text= "'网址:'+${url}" ></p>
</body>
</html>
|
创建controller
com.rumenz.lession4.controller.ThymeleafRumenController
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
package com.rumenz.lession4.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* @className: ThymeleafRumenController
* @description: TODO 类描述
* @author: 入门小站 rumenz.com
* @date: 2021/11/1
**/
@Controller
@RequestMapping ( "/" )
public class ThymeleafRumenController {
@RequestMapping (value = "/index" ,method= RequestMethod.GET)
public String index(ModelMap m){
//数据也可以从数据库查询出来返回
m.addAttribute( "name" , "入门小站" );
m.addAttribute( "url" , "https://rumenz.com" );
//返回是一个页码:src/main/resources/templates/thymeleaf.html
return "thymeleaf" ;
}
}
|
启动项目
![](https://www.f11.cn/uploads/allimg/220126/125521J59-5.jpg)
浏览器验证
浏览器访问http://127.0.0.1:8080/index
![](https://www.f11.cn/uploads/allimg/220126/12552153W-6.jpg)
FreeMarker
FreeMarker是一款模板引擎,即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。
引入依赖
1
2
3
4
|
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
|
创建模板
src/main/resources/templates/freemarker.html
1
2
3
4
5
6
7
8
9
10
11
12
|
<!DOCTYPE html>
<html lang= "en" >
<head>
<meta charset= "UTF-8" >
<title>freemarker - 入门小站</title>
</head>
<body>
FreeMarker案例
<p>名字:${name}</p>
<p>网址:${url}</p>
</body>
</html>
|
配置文件
src/main/resources/application.properties ,指定模板文件的后缀。
1
|
spring.freemarker.suffix=.html
|
编写controller
com.rumenz.lession4.controller.FreeMarkerRumenController
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
package com.rumenz.lession4.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @className: FreeMarkerRumenController
* @description: TODO 类描述
* @author: 入门小站 rumenz.com
* @date: 2021/11/1
**/
@Controller
@RequestMapping ( "/" )
public class FreeMarkerRumenController {
@RequestMapping ( "/index2" )
public String index2(ModelMap m){
//数据也可以从数据库查询出来返回
m.addAttribute( "name" , "入门小站" );
m.addAttribute( "url" , "https://rumenz.com" );
//返回是一个页码:src/main/resources/templates/freemarker.html
return "freemarker" ;
}
}
|
![](https://www.f11.cn/uploads/allimg/220126/1255215392-7.jpg)
浏览器验证
浏览器访问http://127.0.0.1:8080/index2
![](https://www.f11.cn/uploads/allimg/220126/1255212I3-8.jpg)
本小结源码地址:
GitHub:https://github.com/mifunc/springboot/tree/main/lession4
Gitee:https://gitee.com/rumenz/springboot/tree/master/lession4
https://rumenz.com/rumenbiji/springboot-tpl.html
|