工程引入依赖
org.freemarker freemarker 2.3.23 我用maven当时引得是这个版本的jar包 ### 创建模板文件 1、文本,直接输出的部分 2、注释,即<#--...-->格式不会输出 3、插值(Interpolation):即${..}部分,将使用数据模型中的部分替代输出 4、FTL 指令:FreeMarker 指令,和 HTML 标记类似,名字前加#予以区分,不会输出 ### 生成文件 第一步:创建一个 Configuration 对象,直接 new 一个对象。构造方法的参数就是 freemarker 的版本号。 第二步:设置模板文件所在的路径。 第三步:设置模板文件使用的字符集。一般就是 utf-8. 第四步:加载一个模板,创建一个模板对象。 第五步:创建一个模板使用的数据集,可以是 pojo 也可以是 map。一般是 Map。 第六步:创建一个 Writer 对象,一般创建一 FileWriter 对象,指定生成的文件名。 第七步:调用模板对象的 process 方法输出文件。 第八步:关闭流下面是代码演示
//1.创建配置类
Configuration configuration=new Configuration(Configuration.getVersion());
//2.设置模板所在的目录
configuration.setDirectoryForTemplateLoading(new
File(“D://文件所在路径”));
//3.设置字符集
configuration.setDefaultEncoding(“utf-8”);
//4.加载模板
Template template = configuration.getTemplate(“xxx.ftl”);
//5.创建数据模型
Map map=new HashMap();
map.put(“name”, "张三 ");
map.put(“message”, “欢迎来到Freemarker!”);
//6.创建 Writer 对象 输出的文件名
Writer out =new FileWriter(new File(“d:\xxx.html”));
//7.输出
template.process(map, out);
//8.关闭 Writer 对象
out.close();
模板FTL常用 指令
assign 指令
此指令用于在页面上定义一个变量
<#assign name=“freemarker”>
名字:${name}
include 指令
此指令用于模板文件的嵌套
if 指令
<#if success=true>
正确
<#else>
错误
</#if>
if中=与==的效果是一样的;
list 指令
<#list Lists as list>
${list_index+1} 商品名称:
l
i
s
t
.
n
a
m
e
价
格
:
{list.name} 价格:
list.name价格:{list.price}
</#list>
内建函数
内建函数语法格式: 变量+?+函数名称
共 ${Lists?size} 条记录
将 json 字符串转换为对象
<#assign data=text?eval />
日期格式化
代码中对变量赋值:
dataModel.put(“today”, new Date());
在模板文件中加入
当前日期:
t
o
d
a
y
?
d
a
t
e
<
b
r
>
当
前
时
间
:
{today?date} <br> 当前时间:
today?date<br>当前时间:{today?time}
当前日期+时间:${today?datetime}
日期格式化: ${today?string(“yyyy 年 MM 月”)}
判断某变量是否存在:“??”
<#if aaa??>
aaa 变量存在
<#else>
aaa 变量不存在
</#if>
比较运算符
表达式中支持的比较运算符有如下几个:
1 =或者==:判断两个值是否相等.
2 !=:判断两个值是否不等.
3 >或者 gt:判断左边值是否大于右边值
4 >=或者 gte:判断左边值是否大于等于右边值
5 <或者 lt:判断左边值是否小于右边值
6 <=或者 lte:判断左边值是否小于等于右边值