网页静态化 Freemarker

依赖

<dependency>

<groupId>org.freemarker</groupId>

<artifactId>freemarker</artifactId>

<version>2.3.23</version>

</dependency>

模板文件

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:/kaola_work/freemarkerDemo/src/main/resources/"));

//3.设置字符集

configuration.setDefaultEncoding("utf-8");

//4.加载模板

Template template = configuration.getTemplate("test.ftl");

//5.创建数据模型

Map map=new HashMap();

map.put("name", "张三 ");

map.put("message", "欢迎来到神奇的考拉世界!");

//6.创建 Writer 对象

Writer out =new FileWriter(new File("d:\\test.html"));

//7.输出

template.process(map, out);

//8.关闭 Writer 对象

out.close();

FTL 指令

assign 指令

<#assign info={'mobile':'13301112222','address':'北京昌平区王府街'}>

include 指令

此指令用于模板文件的嵌套
<#include “head.ftl”>

if 指令

<#if success==true>

已登录

</#if>

list 指令

商品价格表:<br>

<#list goodsList as goods>
 

${goods_index+1}
 

${goods.name}
 

价格:${goods.price}<br>
 

</#list>

内建函数

内建函数语法格式: 变量+?+函数名称

获取集合大小
${goodsList?size}
转换字符串为 JSON 对象
<#assign text="{'bank':'工商银行','account':'10101920201920212'}" />

<#assign data=text?eval />

日期格式化
当前日期:${today?date} 

当前时间:${today?time}
当前日期+时间:${today?datetime}
 
日期格式化:
${today?string("yyyy 年 MM 月")}
 
代码中对变量赋值:
dataModel.put("today", new Date());


结果:
当前日期:2019-5-6
当前时间:15:25:68
当前日期+时间:2068-5-9 15:65:85
日期格式化:2017年3月

空值处理运算符

判断某变量是否存在:“??”

<#--空值处理-->

<#if info?? >

info 为空

<#else>
${info}
</#if>

缺失变量默认值:“!”

我们除了可以判断是否为空值,也可以使用!对 null 值做转换处理

地址(为空时不显示):
${address!""}

运算符

算数运算符

FreeMarker 表达式中完全支持算术运算,FreeMarker 支持的算术运算符包括:+, - , * , / , %

逻辑运算符

逻辑运算符有如下几个:
逻辑与:&&
逻辑或:||
逻辑非:!
逻辑运算符只能作用于布尔值,否则将产生错误

比较运算符

表达式中支持的比较运算符有如下几个:

1.=或者==:判断两个值是否相等.
2.!=:判断两个值是否不等.
3.>或者 gt:判断左边值是否大于右边值
4.>=或者 gte:判断左边值是否大于等于右边值
5.<或者 lt:判断左边值是否小于右边值
6.<=或者 lte:判断左边值是否小于等于右边值

注意:

=和!=可以用于字符串,数值和日期来比较是否相等,但=和!=两边必须是相同类型的值,

否则会产生错误,而且 FreeMarker 是精确比较,“x”,"x ","X"是不等的.其它的运行符可以作用于
数字和日期,但不能作用于字符串,大部分的时候,使用 gt 等字母运算符代替>会有更好的效果,
因为 FreeMarker 会把>解释成 FTL 标签的结束字符,当然,也可以使用括号来避免这种情况,
如:<#if (x>y)>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值