现在的位置: 首页 > 综合 > 正文

freemarker简介

2013年12月10日 ⁄ 综合 ⁄ 共 1629字 ⁄ 字号 评论关闭

前言

最近在公司接手的项目的页面全部都是使用的FreeMarker做的,以前只是听说过但是没有接触过,借此机会来学习一下freemarker,将我的学习心得跟大家一起分享下。

 

正题

一、freemarker为何物?

FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java等。

 

二、freemarker特性?

1.通用性

能够生成各种文本,轻量级(不需要Servlet环境),可以从任何源模版,可以按需生成文本。

 

2.强大的模版语言

有常用指令(如includeif等),可定义变量。

 

3.通用数据模型

freemarker的数据模型很简单,最简单的java对象,甚至Hash变量都可以在页面去显示。

 

4.Web准备

能够集成到Model2 Web应用框架中作为JSP的替代,支持JSP标记库。

 

5.智能的国际化和本地化

 

三、freemarker如何实现与Web容器无关?

我们来通过一个实例来展示一下。

1.新建一个java项目,引入freemarkerjar

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很容易上手,也方便了我们的开发,日后会继续深入。。。

 

 

抱歉!评论已关闭.