一.Freemarker简介
1.Freemarker是一个“模板引擎”,,也可以说是一个基于模板技术的生成文本输出的一个通用工具.
2.FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序
3.FreeMarker与容器无关,因为它并不知道HTTPServlet;FreeMarker同样可以应用于非Web应用程序环境。
4.FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库
二.Freemarker用法
①、文本,直接输出的部分
②、注释,即<#–…–>格式不会输出
③、FTL指令:FreeMarker指令,和HTML标记类似,名字前加#予以区分,不会输出
④、插值(Interpolation):即${..}或者#{..}格式的部分,将使用数据模型中的部分替代输出
2.FLT标签
开始标签:<#directivename parameters> 结束标签:</#directivename> 空标签: <#directivename parameters />
3.FreeMarker的插值有如下两种类型
1、通用插值:${expr} 2、数字格式化插值:#{expr}或者#{expr;format}
4.表达式
表达式是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[11,12,13,14,15] 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、顶层变量 Map root = newHashMap(); root.put("name","wenchao"); 对应顶层变量,直接使用${variableName}来输出变量值,变量名只能是数字、字母、下划线、$、@和#的组合,并不能以数字开头 b、输出集合元素 如果需要输出集合元素,则可以根据集合元素的索引来输出元素。集合元素的索引以方括号指定。 假设有集合对象为:["星期一","星期二","星期三","星期四","星期五","星期六"],该集合对象名为week,如果需要输出星期三,则可以使用如下语法:${week[2]}(索引从零开始) c、输出Map元素 这里的Map对象可以是直接HashMap的实例,甚至包括JavaBean实例,对应JavaBean实例,我们一样可以把其当成属性为key,属性为value的Map实例