FreeMarker模板语言详解与应用

需积分: 9 1 下载量 83 浏览量 更新于2024-07-28 收藏 155KB DOC 举报
"Freemarker是一个强大的模板引擎,它与Java Servlet协同工作,使得应用程序逻辑与图形设计分离。通过在HTML模板中嵌入数据,Freemarker能够在服务器端动态生成HTML页面。其模板语言简洁而直观,编译后的执行速度快,输出接近静态HTML,提高了网页的加载速度。 在Freemarker中,有以下几个核心概念: 1. Scalars:这是最基础的数据类型,包括字符串(用引号包围)、数字(直接写数值)和日期(通常从数据模型获取)。此外,布尔值也是常见的,用于条件判断语句如`<#if>`。 2. Hashes:这些是存储其他对象的容器,每个元素都有一个唯一的键,用于查询和访问其中的变量。 3. Sequences:序列是按顺序排列的对象容器,可以通过索引访问,索引从0开始。集合变量是受限的序列,无法直接获取其大小或通过索引访问。 4. Methods:方法是根据传入的参数计算并返回新对象的函数,它们在数据模型中定义。 5. 用户自定义FTL指令:包括宏和转换器,用于扩展Freemarker的功能。 6. 节点(Nodes):在处理XML时,节点变量表示树形结构中的一个节点。 在模板中,可以初始化sequences和hashes,例如: - 一个包含三个字符串的序列:`["you", "me", "he"]` - 一个数字序列:`1..100`,表示从1到100的整数序列 - 一个包含多个哈希的序列:`[{“Akey”:”Avalue”},{“Akey1”:”Avalue1”},{“Bkey”:”Bvalue”},{“Bkey1”:”Bvalue1”}]` - 一个简单的哈希:`{“you”:”a”,”me”:”b”,”he”:”c”}` 注释在Freemarker中可以用`<#-- -->`或旧版的`<#comment>注释</#comment>`来实现。 对于序列,Freemarker提供了一些内置方法,例如: - `sequence?first`:返回序列的第一个元素 - `sequence?last`:返回序列的最后一个元素 - `sequence?reverse`:反转序列的顺序 - `sequence?size`:返回序列的长度 - `sequence?sort`:按照元素的`toString()`结果排序 - `sequence?sort_by(value)`:根据元素的特定属性进行排序,如`sequence?sort_by(name)`会根据序列中对象的`name`属性排序 对于哈希,也有类似的方法,比如: - `hash?keys`:返回哈希中的所有键 这些方法极大地增强了Freemarker模板的灵活性和功能性,使得开发者能够高效地处理和展示数据。"