freemaker開發學習《一》

 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技術。java

爲了使用FreeMarker來將數據模型中的值合併到模板文件中
通常狀況下按下述步驟操做

第一步:建立Configuration實例,該實例負責管理FreeMarker的模板加載路徑,負責生成模板實例
第二步:使用Configuration實例來生成Template實例,同時須要指定模板文件
第三步:填充數據模型,數據模型就是一個Map對象
第四步:調用Template實例的process方法完成合並
web

  在web應用中使用FreeMarker與在Java應用使用並無太大的區別,同樣須要定義模板文件,但此時的模板文件應該是HTML模板---也就是該板塊能生成一個HTML頁面。編程

 

在JAVA程序中使用FreeMarker架構

package ish;
import java.util.*;
import java.io.*;
import freemarker.template.*;jsp


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));spa

  //第三步
  Map root = new HashMap();
        root.put("name", "FreeMarker!");
  root.put("msg" , "您已經完成了第一個FreeMarker的示例");orm

 }xml

 public static void main(String[] args)throws Exception
 {
  HelloFreeMarker hf = new HelloFreeMarker();
  hf.init();
  //第四步
  hf.process(); 
 }對象

}

相關文章
相關標籤/搜索