一、掌握FreeMarker常用的指令与内建函数(入门demo)
1.1 网页静态化
使用这种技术来提前生成一些静态网页,来减少对数据库的访问压力。
1.2 DEMO
引入依赖
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
</dependency>
创建模板文件
它得依据模板来生成页面。这个模板就相当于月饼的模子,这一个模子可以产生很多很多的月饼,那么这一个模板也可以生成很多页面。
新建一个文件test.ftl
,其实不一定非得是ftl
结尾,任意一个文件名都可以。
模板文件中四种元素
文本:能够直接输出的内容
注释:<#–…-->格式不会输出
插值:即${}部分,将使用数据模型中的部分代替输出。
FTL指令:和HTML标记类似,名字前面加#予以区分,不会输出。指令有很多,每个指令都可以完成一件事,比如说循环,判断。
<html>
<head>
<title>demo</title>
<meta charset="utf-8">
</head>
<body>
<#--我是一个注释,不会输出-->
<!--html注释-->
${name},你好。${message}
</body>
</html>
public class Test {
public static void main(String[] args) throws IOException, TemplateException {
// 1.创建配置对象
Configuration configuration = new Configuration(
Configuration.getVersion());
// 2.设置模板所在的目录(绝对路径)
configuration.setDirectoryForTemplateLoading(
new File("D:\\workspace17\\freemarkerDemo\\src\\main\\resources"));
// 3.设置字符集
configuration.setDefaultEncoding("UTF-8");
// 4.获取模板对象
Template template = configuration.getTemplate("test.ftl");
// 5.创建数据模型(可以是对象,也可以是Map)
Map map = new HashMap();
map.put("name", "孙悟空");
map.put("message", "欢迎来到神奇的天空之城!");
// 6.创建一个输出流对象
Writer out = new FileWriter("F:\\pinyougou\\test.html");
// 7.输出
template.process(map, out);
// 8.关闭out对象
out.close();
}
}
生成静态页面
<html>
<head>
<title>demo</title>
<meta charset="utf-8">
</head>
<body>
<!--html注释-->
孙悟空,你好。欢迎来到神奇的天空之城!
</body>
</html>
运行截图
1.3 FTL指令
assign指令:用于定义一个变量
include指令:用于模板文件的嵌套
if指令、elseif指令、else指令:在freemarker里=和==是一样的。
list指令:显示一个列表信息
1.4 内建函数
内建函数语法格式:变量+?+函数名称。
获取集合大小
${goodsList?size}
将JSON字符串转换为对象
<#assign data=text?eval>
日期格式化
date,time,datetime,string(“yyyy年MM月dd日”)
数字格式化
c
空值处理
判断某变量是否存在:??
某变量不存在时的默认值:${bbb!‘默认值’}