freemarker

原创 2016年06月01日 18:59:26

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,所以简单了解了一下,有误解的地方请指正。

版权声明:本文为博主原创文章,未经博主允许不得转载。如文章内容有问题,请不吝指教。

SpringMVC整合Freemarker(含Demo源码)

整合过程如下:1.新建一个maven web工程,使用maven依赖spring,springmvc,freemarker的相关jar,建好后的项目目录如下: pom.xml文件中的配置如下:...
  • sinat_27535209
  • sinat_27535209
  • 2017年03月10日 16:30
  • 3709

freemarker字符串替换操作

例子; item.userIP!=""> text=item.userIP> ${text ?replace((text ?substring(text?index_of(".")+1,t...
  • qq_35624642
  • qq_35624642
  • 2017年06月08日 16:49
  • 2560

freemarker if 多条件判断

**tip:**当你想测试是否 x > 0 或 x >= 0,编写 0> 和 = 0> 是错误的, 因为第一个 > 会结束 #if 标签。要这么来做,可以编写 或 。也请注意,如果比较发生在括号内...
  • forever_insist
  • forever_insist
  • 2017年03月16日 14:57
  • 20225

FreeMarker 对象包装(五)

1. 模板文件 test06.ftl${theObject.name} ${theObject.price} ${theObject.sin(123)}2. 对象类 TestObject.javapa...
  • hanshileiai
  • hanshileiai
  • 2015年07月13日 13:41
  • 1234

freemarker如何获取当前时间或者时间戳?

时间戳(timestamp),一个能表示一份数据在某个特定时间之前已经存在的、 完整的、 可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间。使用数字签名技术产生的数据, 签名的对象包括了原始文...
  • testcs_dn
  • testcs_dn
  • 2017年09月05日 12:34
  • 2416

freemarker 常用标签 遍历 List if elseif

格式 condition> ... condition2> ... condition3> ... ... ... 案例 x is 1 x is 1 ...
  • liufengwen1992
  • liufengwen1992
  • 2014年03月24日 19:50
  • 2173

freemarker中的if...elseif...else语句

freemarker中的if...elseif...else语句 1、设计示例 ${student.studentName}不是一个初中生 ${student.studentNam...
  • you23hai45
  • you23hai45
  • 2014年05月27日 22:29
  • 43027

Freemarker的介绍及使用

本文主要介绍freemarker 的使用
  • CSDN3436
  • CSDN3436
  • 2017年03月28日 16:19
  • 799

FreeMarker学习笔记-<一>快速入门

FreeMarker官网:http://freemarker.org/ 本系列文章参考了FreeMarker官网手册,并转载以下文章: http://blog.csdn.net/zhoubols/...
  • u011453631
  • u011453631
  • 2016年09月12日 15:27
  • 687

新手学习freemarker

copy自http://demojava.iteye.com/blog/800204  以下内容全部是网上收集:  FreeMarker的模板文件并不比HTML页面复杂多少,FreeMar...
  • oo191416903
  • oo191416903
  • 2017年03月06日 15:18
  • 436
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:freemarker
举报原因:
原因补充:

(最多只允许输入30个字)