FreeMarker是一款模板引擎,一种基于模板的,用来生成输出文本的通用工具
FreeMarker的设计实际上是被用来生成HTML网页,尤其是通过基于实现了MVC模式的servlet应用程序
FreeMarker不适合编程,数据的准备可以靠java程序来准备,FreeMaker仅仅使用模板生成文本页面来显示已经准备好的数据。
Ftl页面
类似于jsp页面
<a href="${.......}">${name}</a>
这个模板是放在web服务器上,看上去像是静态页面,但是不管何时,只要有人访问这个页面,FreeMarker
将会介入执行,动态转换模板,用最新的数据内容替换Ftl页面中的${...}中的部分。生成普通的HTML文本。
模板指令规则
${...}: FreeMarker将会输出真实的值来替换花括号中的表达式(EL表达式)
Comments注释:用<#--和-->来分隔的
FTL tags标签一般以符号#开头
<#list java中的list集合名称 as 循环变量的名称> </#list> demo <#list arraylist as eml> <input tape="text">${eml.name}</input> </#list>
程序开发
Configuration cfg = new Configuration(); //创建配置实例 cfg.setDiractoryForTemplateLoading( new File("")); //指定模板文件从何处获取数据源 Template temp = cfg,getTemplate("demo.ftl"); //获取模板
创建数据模型
数据模型可以通过map集合或javaBean的方式封装
比如类中有:全局变量User = wuchen;
Person p = new Person();//person 中有age 和id 属性
对应的数据模型创建方法如下:
Map root = new HashMap(); root.put("user","wuchen"); Map person = new HashMap(); person.put("age","23"); person.put("id",3); root.put("person",person);
把模板和数据模型合并
我们知道,数据模型+模板 = 输出,以上已经获取到了模板(temp)和数据模型(root),可以合并输出了
temp.process(root,outStream); outStream.flush();