没有合适的资源?快使用搜索试试~ 我知道了~
Freemarker学习笔记
需积分: 9 2 下载量 189 浏览量
2017-12-12
16:59:43
上传
评论
收藏 180KB DOC 举报
温馨提示
Freemarker学习笔记可以帮助初学者了解,快速掌握Freemarker
资源推荐
资源详情
资源评论
什么是 FreeMarker
FreeMarker 实 际 上 是 被 设 计 用 来 生 成 HTML 页 面 , 尤 其 是 通 过 实 现 了 基 于
MVC(Model View Controller,模型-视图-控制器)模式的 Java Servlet 应用程序
尽管 FreeMarker 也拥有一些编程能力,但是它却不像 PHP 那样,是的一种全面的编
程语言。反而,Java 程序准备的数据来进行显示(比如 SQL 数据库查询),FreeMarker 仅
仅是使用模板生成文本页面来呈现已经准备好的数据而已。
FreeMarker 资源下载地址:
http://freemarker.org/ 官方页面
http://www.freemarker.org/eclipse/freemarker/ 插件下载地址
FreeMarker 简介:
最简单的模版是通过 HTML 文件,或者是其他任何文本文件—FreeMark 本身不属于
HTML, 当客户端访问页面时, FreeMarker 要发送 HTML 代码到客户端浏览器端显示, 如果想
要页面动起来.就要在 HTML 中放能被 Freemark 所解析的特殊部分
${…} FreeMarker 将会输出真实的值来替换花括号内的表达式, 这样的表达式被称为插
值, 类似 JSTL 标签
Ftl tags 标签(FreeMarker 模版的语音标签):FTL 标签和 HTML 标签有点相似. 但是他
们是 FreeMarker 的指令而且是不会直接输出的东西,这些标签的使用一般符号# 开头, 用户
自定义的 FTL 标签用@符号来代替
Comments 注解:Freemark 的注解和 HTML 的注解相似, 但是他们用<#--- 和 来分隔
的,任何介于这两个分隔符,(包含分隔符本身)之间的内容会被 FreeMarker 忽略。其他任何
FTL 标签, 或者注解的内容被视为静态文本, 这些东西就不会被 FreeMarker 所解析.会被按照
原来的样子输出
FreeMarker 支持类型:
支持的类型有:字符串、数值(整数和非整数不区分的)、布尔值、日期
容器:哈希表、序列、集合
子程序:方法、函数、用户定义指令
容器:哈希表、序列、集:
每个子变量都可以通过一个唯一的名次来查找, 这个名称是不受限制的字符串, 哈希表
并不确定其中子变量的顺序, 也就是说没有第一个变量. 第二不变量这样的说法. 变量仅仅通
过名次来访问.
序列:
每个子变量通过一个整数来标识, 第一个子变量的标识是 0,第二个是 1,第三个是 2, 这
样类推. 而且子变量是有顺序的. 这些数字通常被称为是子变量和索引, 序列通常比较密集.
也就是所有的索引, 包括最后一个子变量.
集:
集是有限制的序列, 不能获取集的大小, 也不能通过索引取出集合中的子变量. 但是他们
仍可以使用 list 指令来遍历
FremMarker 使用注意事项:
FTL 是区分大小写:
FTL 是区分大小写的, list 是指令的名次,而 List 就不是, 类似的${name}和${Name}或者
${NAME}他们也是不同的。
插值仅仅可以在文本中使用(也可以在字符串表达式中)
FTL 标签不支持嵌套:(插值支持)
也不可以和插值使用。下面这种写法是错误的:
<#if <#include ‘foo’>=’bar’>…..</#if>
注解可以放在 FTL 标签和插值中间:
<h1>Welcome ${user <#-- The name of user }!</h1>
<p> We have these animals: <br />
<ul>
<#list <#-- some comment …. animals as <#-- again …. begin>
快速入门:
这里是给已经了解 FreeMarker 的人或有经验的程序员的一个提醒
字符串:"Foo" 或者 'Foo' 或者 "It's \"quoted\"" 或者 r"C:\raw\string"
数字:123.45 <#list[BR] animals as[BR] being[BR] >[BR] ${being.name} for ${being.price}
Euros[BR] </#list >
布尔值:true, false
序列:["foo", "bar", 123.45], 1..100
哈希表:{"name":"green mouse", "price":150}
检索变量
顶层变量:user
从哈希表中检索数据:${user.name}
从序列中检索:products[5]
特殊变量:.main //由 Freemarker 定义的
字符串操作
插值(或连接):"Hello ${user}!"(或"Free" + "Marker")
获取一个字符:name[0]
序列操作
连接:users + ["guest"]
序列切分:products[10..19] 或 products[5..]
哈希表操作
连接:passwords + {"joe":"secret42"}
算数运算: (x * 1.5 + 10) / 2 - y % 100
比较运算:x == y, x != y, x < y, x > y, x >= y, x <= y, x < y, 等等
逻辑操作:!registered && (firstVisit || fromEurope)
内建函数:name?upper_case
方法调用:repeat("What", 3)
处理不存在的值
默认值:name!"unknown" 或者(user.name)!"unknown" 或者 name! 或者 (user.name)!
检测不存在的值:name?? 或者(user.name)??
FreeMarker 语法演示
Freemarker 工作流程
/*
* 总共三步: 获取模版、获取数据、输出
*
* freemark的扩展名为 ftl,存储到包中即可
*
* */
public class HelloWorld {
public static void main(String[] args) throws Exception{
// 通过Configuration来获取ftl资源
Configuration config=new Configuration();
// 设置要加载的目录
config.setClassForTemplateLoading(HelloWorld.class,
"/cn/it/ftl");
// 设置要加载的模版名次,并且返回Template对象
Template template=config.getTemplate("01.ftl");
// 把要显示的数据存储到map中
剩余16页未读,继续阅读
资源评论
鱼香肉丝2016
- 粉丝: 15
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功