您的位置:首页 > 其它

FreeMarker系列学习笔记

2014-07-30 13:52 295 查看
FreeMarker是一个非常优秀的模板引擎,这个模板引擎可用于任何场景,FreeMarker负责将数据模型中的数据合并到模板中,从而生成标准输出.FreeMarker可以提供昜好的团队协作,对于界面开发人员而言,他们只关心界面(也就是模板文件)的开发,而无需理会底层数据;而对于业务逻辑开发者,他们只需要关心负责将需要显示的数据填入数据模型--FreeMarker负责合并数据模型和模板,从而生成标准输出.

  FreeMarker特别适应于MVC模式的web应用,虽然FreeMarker具有一些编程能力,但这种编程能力非常有限,无法实现业务逻辑,保能提供一些数据格式的转换。因此,通常由Java程序准备要显示的数据,由FreeMarker模板引擎来生成页面,而FreeMarker模板则则提供页面布局支持,从而能更好地规范MVC架构,保证视图和业务逻辑的分离。

除此之外,FreeMarker也是与web容器,也就是FreeMarker并不一定需要运行在web容器中。FreeMarker同样可以应用于非web应用程序环境。而且,FreeMarker并不是只能生成Html页面,它也可以生成各种文本,如xml,rtf,java程序。

struts2可以非常简单地使用FreeMarker模板作为视图技术,对于传统的jsp页面而言,FreeMarker是一个绝佳的替代方案。

  除此之外,Struts2默认采用FreeMarker作为其模板文件,而Struts2所有的主题模板文件都是采用FreeMarker编写的。因此,如果我们需要扩展struts2的主题,也需要熟悉FreeMarker技术。

为了使用FreeMarker来将数据模型中的值合并到模板文件中

一般情况下按下述步骤操作

第一步:创建Configuration实例,该实例负责管理FreeMarker的模板加载路径,负责生成模板实例

第二步:使用Configuration实例来生成Template实例,同时需要指定模板文件

第三步:填充数据模型,数据模型就是一个Map对象

第四步:调用Template实例的process方法完成合并


  在web应用中使用FreeMarker与在Java应用使用并没有太大的区别,一样需要定义模板文件,但此时的模板文件应该是HTML模板---也就是该板块能生成一个HTML页面。

 

在JAVA程序中使用FreeMarker

package ish;

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

 {

  //第二步

        Template t = cfg.getTemplate("test.ftl");

        t.process(root, new OutputStreamWriter(System.out));

  //第三步

  Map root = new HashMap();

        root.put("name", "FreeMarker!");

  root.put("msg" , "您已经完成了第一个FreeMarker的示例");

 }

 public static void main(String[] args)throws Exception

 {

  HelloFreeMarker hf = new HelloFreeMarker();

  hf.init();

  //第四步

  hf.process(); 

 }

}

 

关于FreeMarket的各种指令,可以在自行查看相关书籍或在网上搜索相关文章,阿堂在这里就不讨论这些了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: