FreeMarker

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();

 

你可能感兴趣的:(设计模式,编程,应用服务器,freemarker,mvc)