出. FreeMarker 特别适应于 MVC 模式的 Web 应用,虽然 FreeMarker 具有一些编程能 力,但这种编程能力非常有限,无法实现业务逻辑,只能提供一些数据格式的转换 功能.因此,通常由
Java 程序准备要显示的数据,由 FreeMarker 模板引擎来生成 页面,而 FreeMarker 模板则提供页面布局支持. 此外,FreeMarker 也是与 Web 容器无关的,也就是 FreeMarker 并不一定需要运行 在 Web 容器中:FreeMarker 同样可以应用于非 Web 应用程序环境.而 且,FreeMarker 并不是只能生成
HTML 页面,它也可以生成各种文本,如 XML,RTF,Java 源代码等. Struts2 默认采用 FreeMarker 作为其模板文件,而 Struts2 所有的主题模板文件 都是采用 FreeMarker 编写的,eclipse 中的
JSP,Java 等模板文件也是采用 FreeMarker 技术. 1,在 java 程序中使用 FreeMarker FreeMarker 的模板就是一个.ftl 文本文件,在该文件中使用了
一些 FreeMarker 的特别标记,这些标记会动态显示,或者控制
程序输出,如下面的模板文件代码: ${name},你好!${msg} 这里类似于${}的就是动态的内容,称作"插值". 为了使用 FreeMarker 来将数据模型中的值合并到模板文件中,可按如下步骤进 行: 1,创建 Configuration 实例,该实例负责管理 FreeMarker 的模板加载路径,负责 生成模板实例 2,使用 Configuration 实例来生成 Template 实例,同进需要指定使用的模板文件 3,填充数据模型,数据模型就是一个 Map 对象 4,调用 Template 实例的 process 方法完成合并. 下面是一个使用 FreeMarker 创建输出的 Java 程序,程序
源代码如下: package lee; import java.util.*; import java.io.*; import freemarker.template.*; public class HelloFreeMarker { private Configuration cfg; public void init() throws Exception { //初始化 FreeMarker 配置 //创建一个 Configuration 实例
cfg = new Configuration(); //设置 FreeMarker 的模版文件位置 cfg.setDirectoryForTemplateLoading(new File("templates")); } public void process()throws Exception { Map root = new HashMap(); root.put("name", "FreeMarker!"); root.put("msg" , "您已经完成了第一个 FreeMarker 的示例"); Template t = cfg.getTemplate("test.ftl"); t.process(root, new OutputStreamWriter(System.out)); } public static void main(String[] args)throws Exception { HelloFreeMarker hf = new HelloFreeMarker(); hf.init(); hf.process(); } } 上面的代码创建了一个 Map 实例,这个 Map 将作为模板文件的数据模型,我们要使 用 FreeMarker 必须导入 freemarker.jar 文件,FreeM