FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。
FreeMarker是免费的,基于Apache许可证2.0版本发布。其模板编写为FreeMarker Template Language(FTL),属于简单、专用的语言。需要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。在模板中,主要用于如何展现数据, 而在模板之外注意于要展示什么数据
下面开始使用SpringBoot集成FreeMarker,并做一些测试案例。
引入依赖
<!--Freemarker依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
配置文件
spring:
# 配置FreeMarket模板引擎
freemarker:
#模板保存位置
template-loader-path: classpath:/templates
#使用缓存
cache: false
#编码设置
charset: UTF-8
check-template-location: true
content-type: text/html
expose-request-attributes: true
expose-session-attributes: true
request-context-attribute: request
#文件后缀
suffix: .ftl
测试Controller
//需要注意的是这是Controller注解,而非RestController
@Controller
@RequestMapping("/freemarker")
public class FreeMarketController {
//当然可以使用更简洁的 @GetMapping("/index")
@RequestMapping(value = "/index",method = RequestMethod.GET)
public String toIndex(ModelMap modelMap){
//封装一些数据,到modelMap里面,测试在FreeMarket渲染
Book book = new Book();
book.setAreaId(123);
book.setAreaName("十万个为什么");
book.setPriority(12);
modelMap.addAttribute("book",book);
return "index";
}
}
模板FTL文件
<#--FreeMarker模板引擎文件-->
<#--创建人:tao-->
<#--日期:2018/3/25-->
<#--时间:09:56-->
<#--作用:-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>网页标题</title>
</head>
<body>
<h1>此网页已经正常显示</h1>
<span>
携带的参数信息如下
<ul>
<li>areaId = ${book.areaId}</li>
<li>areaName = ${book.areaName}</li>
<li>priority = ${book.priority}</li>
</ul>
</span>
</body>
</html>