首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2012-12-27 
使用JDK6的ScriptEngine动态调用freemarker模板Java 6 Script Engine ? Java SE 6最引人注目的新功能之一

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

Java 6 Script Engine
? 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


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


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

折叠展开复制内容到剪贴板
  1. //生成引擎 ??ScriptEngineManager?manager?=?new?ScriptEngineManager(); ??
  2. ScriptEngine?engine?=?manager.getEngineByName("FreeMarker"); ?????????? ??
  3. //获取模板 ??String?template="?the?学生?is?${name}?,and?他今年${age}岁,身高:${height}cm!\n"+ ??
  4. ????????"他的朋友包括:\n"+ ??????????"<#list?friends?as?friend>朋友?${friend}\n</#list>"; ??
  5. ??????????? ??try?{ ??
  6. ????????//注入参数 ??????????Bindings?params=?engine.createBindings(); ??
  7. ????????params.put(FreeMarkerScriptConstants.STRING_OUTPUT,?Boolean.TRUE); ??????????params.put("name",?"tom"); ??
  8. ????????params.put("age",?11); ??????????params.put("height",?175.2); ??
  9. ????????params.put("friends",?new?String[]{"jack","linda","better"}); ????
  10. ????????//执行模板渲染 ??????????Object?result?=engine.eval(template,params); ??
  11. ???????? ??????????//输出结果 ??
  12. ????????System.out.println(result); ??}?catch?(ScriptException?e)?{ ??
  13. ????e.printStackTrace(); ??} ??
  14. ??



输出
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
the 学生 is tom ,and 他今年11岁,身高:175.2cm!
他的朋友包括:
朋友 jack
朋友 linda
朋友 better

热点排行