前言
最近在公司接手的项目的页面全部都是使用的FreeMarker做的,以前只是听说过但是没有接触过,借此机会来学习一下freemarker,将我的学习心得跟大家一起分享下。
正题
一、freemarker为何物?
FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java等。
二、freemarker特性?
1.通用性
能够生成各种文本,轻量级(不需要Servlet环境),可以从任何源模版,可以按需生成文本。
2.强大的模版语言
有常用指令(如include,if等),可定义变量。
3.通用数据模型
freemarker的数据模型很简单,最简单的java对象,甚至Hash变量都可以在页面去显示。
4.为Web准备
能够集成到Model2 Web应用框架中作为JSP的替代,支持JSP标记库。
5.智能的国际化和本地化
三、freemarker如何实现与Web容器无关?
我们来通过一个实例来展示一下。
1.新建一个java项目,引入freemarker的jar包
jar包下载地址: http://www.freemarker.org/freemarkerdownload.html
2.新建一个数据模型(类似我们的po对象)User1.java。
importjava.util.Date;
publicclass User1 {
privateString id;
privateString name;
publicString getId() {
return id;
}
publicvoid setId(String id) {
this.id= id;
}
publicString getName() {
return name;
}
publicvoid setName(String name) {
this.name= name;
}
}
3.新建一个模版(在templates文件夹下)test.ftl
welcome:${name}
<#ifpwd??>
pwd
<#else>
none
</#if>
4.新建一个工具类testfreemarker.java
importjava.io.File;
importjava.io.OutputStreamWriter;
importfreemarker.template.Configuration;
importfreemarker.template.Template;
publicclass testfreemarker {
privateConfiguration cfg;
privatevoid init() throws Exception{
cfg= new Configuration();
//指定模版所在文件夹
cfg.setDirectoryForTemplateLoading(newFile("src/templates"));
}
privatevoid process() throws Exception{
User1user = new User1();
user.setId("1");
user.setName("zdd");
//使用Configuration实例来加载指定模版文件
Templatet = cfg.getTemplate("test.ftl");
//处理合并
t.process(user,new OutputStreamWriter(System.out));
}
publicstatic void main(String[] args) throws Exception{
testfreemarkerft = new testfreemarker();
ft.init();
ft.process();
}
}
freemarker很容易上手,也方便了我们的开发,日后会继续深入。。。