FreeMarker入门必会

本文适合有一定Java、Jsp、Html开发基础的同学们,刚开始接触FreeMarker时学习参考。

  1. FreeMarker:
    1. 本质上是模板(Html、Jsp文件)和数据模型相结合,得到输出的一种工具;
    2. 输出的结果是静态的网页,数据与模板的结合在网页加载之前完成;
    3. FreeMarker使用模板生成文本页面来呈现已经准备好的数据,注意数据需要提前准备好。
  2. 数据模型:
    1. 数据模型的基本结构是树状的,可以很复杂、有很大的深度;
    2. “目录”即hash,哈希表;
    3. “存储单元”即scalars,标量,标量仅存储值,而没有深度;
    4. 如果在模板中需使用子变量,应从root(根)来寻找它的路径;
    5. 如上图示若需取“cola”的"color"属性:${Drink.cola.color} ,上图中的taste、color这样的属性,没有深度,即为标量。
  3. 数据类型(标量):
    1. 字符串;
    2. 数字;
    3. 日期/时间;
    4. 布尔值;
  4. 基本模板:
    1. ${........}:FreeMarker将会输出真实值来替换花括号内的表达式,此种方式称为interpolations插值;
    2. FTL tags标签:FreeMarker指令,不会直接输出值,形式类似<# ..></#..>的标签或标签对 ;
    3. Comments注释:以<#-- XXXXXX -->的形式展现,内容被忽略;
  5. 最常用的指令:
    1. if指令:使用if指令可以有条件的跳过忽略模板的一部分,形式如:<#if 判断表达式>.......</#if>,当且仅当判断表达式为真时,标签中包裹的内容才显示出来;
    2. if...else指令:在if标签对中添加else:<#if 判断表达式>aaaaa<#else>bbbbb</#if>,当判断表达式为真,输出aaaaa,否则输出bbbbbb;
    3. list遍历指令:遍历集合中的所有元素,格式形如:<#list sequence as loopVariable>Repeat</#list>,sequence指被遍历的集合,loopVariable持有当前项的值,循环变量仅存在于list标签对之间;
    4. include指令:在当前模板中添加其他文件的内容,形如:<#include "/xxxx.html">
  6. 类型:常用的数据类型有:字符串、数值、布尔、时间,另外有集合如序列、哈希表等。在指令中对操作对象的数据类型有许多常见限制,如:${user/2},除法操作中,user必须是数值类型;${animals.name},animals是哈希表时有效;${list shop as s},shop必须是序列;<#if flag>,flag必须是布尔型量;
  7. 标量:标量是最基本的数据类型,它们可以是:
    1. 字符串:简单的文本;
    2. 数字;
    3. 布尔值:逻辑上的true/false;
    4. 日期:精确到天的日期/精确到毫秒的时间(不包括日期)/日期-时间(称为时间戳);
  8. 容器:容器的存在是为了包含其他变量,它们作为容器,被包含的变量通常是子变量,容器的类型有:
    1. 哈希表:每个子变量都可以通过一个唯一的名称来查找,这个名称是不受限制的字符串。哈希表并不确认其中子变量的顺序,也就是说没有第x个变量这种说法,变量仅能通过名称来进行访问(类似JAVA中的HashMap);
    2. 序列:每个子变量通过一个整数来标识,以0为开始。这些整数通常称为“索引”。子变量的数据类型无需完全一致;
    3. 集:有限制的序列。无法获取集的大小,也无法通过索引获得集当中的数据,但仍可以通过list进行遍历;
    4. *******: 一个数值可以有多种数据类型,对于一个变量,可能存在哈希表和序列这两种类型。这时该变量就支持索引和名称两种访问方式,不过容器基本上还是仅作为一种容器来使用。储存在哈希表、序列(集)中的变量可以是任意类型的,这些变量也可以是哈希表、序列(集),这样可以构建任意深度的数据结构。数据模型本身也是哈希表;
  9. 方法和函数(了解):通过指令及参数传入(部分不需要参数),得到输出,例如:${avg(3,7)} , 输出是5(平均数函数);
  10. 用户自定义指令(了解):用户自定义指令也就是FreeMarker自定义标签,这种类型也是一种子程序,一种可以复用的模板代码片段;
    1. 常用转义字符:
      转义序列含义
      \引号
      \'单引号
      \\反斜杠
      \n换行符
      \r回车
      \t水平制表符
      \b退格
      \f换页
      \l小于号 <
      \g大于号 >
      \a与 &
      \xCode字符的16进制Unicode码

欢迎大佬们进行交流学习~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值