使用JDK6的ScriptEngine动态调用freemarker模板

[b]Java 6 Script Engine[/b]
Java SE 6最引人注目的新功能之一就是内嵌了脚本支持。在默认情况下,Java SE 6只支持JavaScript,但这并不以为着Java SE 6只能支持JavaScript。在Java SE 6中提供了一些接口来定义一个脚本规范,也就是JSR223。通过实现这些接口,Java SE 6可以支持任意的脚本语言(如PHP或Ruby)。
http://blog.csdn.net/garybrother/archive/2009/03/13/3988730.aspx


[b]什么是FreeMarker[/b]
FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写.FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序.虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据


[b]使用JDK6的ScriptEngine动态调用freemarker[/b]
Freemarker最新版本已经支持JSR223标准,可以使用java6的标准脚本接口进行调用,大大简化了freemarker模板的使用.
这种模板方式在系统的中可以有较好的应用, 特别是在建立灵活的报警信息模板(短信,邮件)方面有很大的应用.
Freemarker2.4版本才支持JSR223标准,目前maven库中还没有提供该版本.

//生成引擎
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("FreeMarker");

//获取模板
String template=" the 学生 is ${name} ,and 他今年${age}岁,身高:${height}cm!\n"+
"他的朋友包括:\n"+
"<#list friends as friend>朋友 ${friend}\n</#list>";

try {
//注入参数
Bindings params= engine.createBindings();
params.put(FreeMarkerScriptConstants.STRING_OUTPUT, Boolean.TRUE);
params.put("name", "tom");
params.put("age", 11);
params.put("height", 175.2);
params.put("friends", new String[]{"jack","linda","better"});

//执行模板渲染
Object result =engine.eval(template,params);

//输出结果
System.out.println(result);
} catch (ScriptException e) {
e.printStackTrace();
}



输出
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
the 学生 is tom ,and 他今年11岁,身高:175.2cm!
他的朋友包括:
朋友 jack
朋友 linda
朋友 better
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值