Freemarker的语言概述
FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写。
FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序
虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据(如下图)
分离了展示层和业务逻辑层
使用JSP开发过程中在页面中大量的存在业务逻辑的代码,使页面内容凌乱,在后期修改维护过程中变得非常困难。Freemarker根本不支持Java脚本代码,而是使用el表达式来展示数据。FreeMarker的设计初衷就是:模板 + 数据模型 = 输出,模板只负责在页面中展示,不涉及任何逻辑代码,而所有的逻辑都是由数据模型来处理。
降低数据库的压力
FreeMarker是将数据库中的数据做成页面静态化,这样就不需要 去数据库中去取数据,而是直接展现在页面。而页面静态化 主要用在电商的首页,或者其它地方。能够有效的减少数据库的压力。
FreeMarker的语法介绍
FreeMarker模板文件组成
1、文本,直接输出的部分
2、注释,即<#--...-->格式不会输出
3、FTL指令:FreeMarker指令,和HTML标记类似,名字前加#予以区分,不会输出
4、插值(Interpolation):即${..}或者#{..}格式的部分,将使用数据模型中的部分替代输出
FTL指令规则
FreeMarker有三种FTL标签,这和HTML的标签是完全类似的
结束标签:</#directivename>
空标签: <#directivename parameters />
实际上,使用标签时前面的#符号也可能变成@,如果该指令是一个用户指令而不是系统内建指令时,应将#符号改为@符号。
插值规则
FreeMarker的插值有如下两种类型
1、通用插值:${expr}
2、数字格式化插值:#{expr}或者#{expr;format}
表达式
表达式是FreeMarker的核心功能。表达式放置在插值语法(${...})之中时,表面需要输出表达式的值,表达式语法也可以与FreeMarker标签结合,用于控制输出
1、直接指定值
a、字符串: ${"我的文件保存在d:\\盘"};
b、数值
c、布尔值
d、日期型
FreeMarker支持date、time、datetime三种类型,这三种类型的值无法直接指定,通常需要借助字符串的date、time、datetime三个内建函数进行转换才可以
<#assigntest1 = "2015-01-22"?date("yyyy-MM-dd")/>;
<#assign test2="16:34:43"?time("HH:mm:ss") />
<#assigntest2 = "2015-01-2217:23:45"?datetime("yyyy-MM-dd HH:mm:ss") />
${test1?string.full}
e、集合
集合以方括号包括,各集合元素之间以英文逗号(,)分隔,看如下的示例:
<#list["星期一",,["星期二",["星期三",["星期四",["星期五"] as x>
${s};
</#list>
f、Map集合
Map对象使用花括号包括,Map中的key-value对之间以英文冒号(:)隔开,多组key-value对之间以英文逗号(,)隔开:
<#assign score = {"语文":78,"数学":83,"Java":89} >
<#list score?key as x>
${x}--->${score[x]};
</#list>
<spanstylespanstyle="font-family:sans-serif,arial,verdana,trebuchet ms;line-height:1.6em"> </span>
2、输出变量值
FreeMarker的表达式输出变量时,这些变量可以是顶层变量,也可以是Map对象中的变量,还可以是集合中的变量,并可以使用点(.)语法来访问Java对象的属性
a、顶层变量
//还有好多 就不写了 资源已上传
http://download.csdn.net/detail/lianmutian/9596168