FreeMarker 的两个应用实例

FreeMarker 是一个 Java 开发的模板引擎,功能类似的还有 Apache 项目中的 Velocity ,关于比较二者功能的文章也很多。
技术本身没有高低之分,根据自己的实际情况来选择,我本人更喜欢 FreeMarker ,主要有两个用途:
1、利用 FreeMarker 模板代替 JSP 技术显示界面。
实现比较简便,FreeMarker 也有相应的例子。大概的过程如下:
首先在 Servlet 里面初始化配置,只需要初始化一次,所以可放在 init() 方法内部

// 模版文件的路径
String templatePath = WebConfig.get().getTemplatePath();
//多模板路径配置,单个模板路径可使用
//cfg.setServletContextForTemplateLoading(getServletContext(), templatePath);
WebappTemplateLoader wtl = new WebappTemplateLoader(getServletContext(), templatePath);
ClassTemplateLoader ctl = new ClassTemplateLoader(this.getClass(), "/template");
TemplateLoader[] loaders = new TemplateLoader[] { wtl, ctl };
MultiTemplateLoader mtl = new MultiTemplateLoader(loaders);
cfg.setTemplateLoader(mtl);
// 设置检测模版是否更新的时间
if (debug) {
cfg.setTemplateUpdateDelay(0); // 不缓存模板文件
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.HTML_DEBUG_HANDLER);
} else {
cfg.setTemplateUpdateDelay(60);
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
}
// Use beans wrapper?(recommended for most applications)
cfg.setObjectWrapper(ObjectWrapper.BEANS_WRAPPER);
// 设置模版文件的编码
cfg.setDefaultEncoding(WebConfig.get().getTemplateEncoding());
// 设置输出编码
cfg.setOutputEncoding(characterEncoding);
// 设置数字显示格式
cfg.setNumberFormat("#.##"); //防止数字中出现逗号
// 设置日期显示格式
cfg.setDateFormat("yyyy-MM-dd");
cfg.setDateTimeFormat("yyyy-MM-dd HH:mm:ss");

再根据请求的路径取得模板文件对象

// uri 为模板文件路径
Template t = cfg.getTemplate(uri);

最后构造需要传递到模板的 Map 数据,生成页面并返回

// rootMap 类型是 HashMap
t.process(rootMap, response.getWriter());

详细的代码可以参考自带的例子。

2、利用 FreeMarker 模板自动生成部分程序代码。
开发过程中,很多重复的增删改查的 Java 代码和页面代码,有时候很多的工作都在复制和粘贴。
因为代码存在相似性,所以可以将共性其写成 FreeMarker 的模板,不同的地方可以作为变量,从而自动生成程序代码。
基本的过程与生成 WEB 页类似,只不过生成页面的方法小改一下:

// 生成到指定的文件名
t.process(context, new PrintWriter(new FileOutputStream(filePath + "/" + export)));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值