freemarker

来源:互联网 发布:matlab调用c和java 编辑:程序博客网 时间:2024/06/11 07:12

Freemarker简单入门

这里写图片描述

简单来说,freemarker是一种模版引擎,结合java生成文本输出。

好处:有些数据库中的数据(比如有些配置信息),需要被前台频繁调用,数据库压力比较大,但是这些数据的更新频率也很小,在数据库更新时,将相应的内容静态化,避免了大量的数据库请求。

模板开发

这里写图片描述
ftl模板使用的数据一般为后台返回的modelandview中的对象,整个数据是一个树形结构,用点获取变量的值。
例如root.animals.mouse.size()

ftl标签在页面上是不显示的,根据数据模型来做一些逻辑控制,使得html等能够根据不同的条件显示不同的内容。如下:
插值:${…}
FTL Tags标签:一般标签#,用户自定义标签@
Comments注释:<#–和–>
Directives指令:FTL标签

具体语法可以参照 http://blog.csdn.net/fhx007/article/details/7902040

程序开发

创建配置实例

Configuration cfg = new Configuration();
// 指定模板文件从何处加载的数据源,这里设置成一个文件目录。
cfg.setDirectoryForTemplateLoading(
new File(“/where/you/store/templates”));
// 指定模板如何检索数据模型,这是一个高级的主题了…
// 但先可以这么来用:
cfg.setObjectWrapper(new DefaultObjectWrapper());

创建数据模型

使用java.lang(比如String Number等)和java.util(List和map等)还有自定义java bean构建数据对象
比如// 创建根哈希表
Map root = new HashMap();
往root里添加数据,数据仍然可以为哈希表(任意深度)。

获得模版

Template temp = cfg.getTemplate(“test.ftl”);
getTemplate 方法会创建一个test.ftl的template实例,

合并模板和数据模型

可以输出、生成新文件等。
Writer writer = new OutputStreamWriter(System.out);//输出
或者 = new FileWriter(file);//写入文件

Temp.process(root,writer);
Writer.flush();
Writer.close();

一般情况下,也可以预先编写ftl文件,在Spring项目中controller处理请求时,可以new 一个modelandview,将预先写好的ftl的名字传进去。这跟android编程中将xml布局文件塞给activity或者fragment很相似。

PS:由于实习项目有用到Freemarker,所以简单了解了一下,有误解的地方请指正。

0 0
原创粉丝点击