VELOCITY HTML 模板

http://velocity.apache.org/

 

簡單來說就是通過html文件定義模板,模板中含有操作語句和變量定義,然後通過java程序對模板中的參數進行修改。

 

【轉載】

使用Velocity作爲頁面顯示層是常見的,作爲模版形式出現,可能用的不一定多,至少現在我只用過幾次,下面也是以前找到的一篇文章,舉例說明了Velocity作爲模版的用法,還是很實用的!

通常,Velocity模板的文件後綴是“.vm”。下面我們要創建一個hellovelocity.vm模板文件,雖然很簡單,但足以證明 Velocity模板引擎是否正確安裝(其實就是定義好engin並import org.apache相關的源文件),也足以顯示出Velocity模板分離內容及其表現方式的一般過程。把下面這行代碼加入 hellovelocity.vm模板。


Hello $name, this is Velocity working!

保存hellovelocity.vm模板,然後再新建一個HelloVelocity.java文件,這兩個文件最好放入同一目錄下。下面是HelloVelocity.java的代碼,它顯示了在Java程序中調用Velocity模板引擎的一般過程。

(例1)

import java.io.StringWriter;

import org.apache.velocity.app.VelocityEngine;

import org.apache.velocity.Template;

import org.apache.velocity.VelocityContext;

public class HelloVelocity{

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

   /* 首先創建一個模板引擎的實例,並予以初始化 */

    VelocityEngine engine = new VelocityEngine();

    engine.init();

   /* 接着,獲得一個模板 */

    Template template = engine.getTemplate( "hellovelocity.vm" );

   /* 創建上下文,填充數據 */

    VelocityContext context = new VelocityContext();

    context.put("name", "World");

    /* 現在,把模板和數據合併,輸出到StringWriter */

    StringWriter writer = new StringWriter();

     template.merge( context, writer );

    /* 顯示結果 */

     System.out.println( writer.toString() );

   }

}

準備好兩個文件後,編譯Java文件並運行。如果一切順利的話,你可以看到下面的輸出:


Hello World, this is Velocity working!


(例2)

import java.io.BufferedWriter;
import java.io.OutputStreamWriter;

import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;

public class HelloVelocity {
    public static void main(String[] args) throws Exception {
        Velocity.init(); 
        VelocityContext context = new VelocityContext();

        //string
        context.put("name", "dreamhead");

        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
        Template template = Velocity.getTemplate("hello.vm");
        template.merge(context, writer);

        writer.flush();
        writer.close();    
     }
}

我們可以把模板理解爲一個劇本,劇本設定了劇情和角色,比如上面的劇情就是對一個角色——name說“Hello”。鑑於name是一個角色,爲了 不與劇本中的內容混雜,我們編寫的時候需要加上一個“$”,以示區分。再好的劇本也需要表演出來,換句話說,角色要人來扮演,這些人共同按照劇本完成劇 情。在上面的例子中,最終扮演name角色的是“dreamhead”這個字符串,它完成劇情規定的任務,結果就是“Hello,dreamhead”。

在這個過程中,我們——程序員是導演,拿來劇本,找來演員,規定各自的角色,一起看看我們如何完成這個指導過程吧!
在一切就緒之前,我們先要做一些準備性的工作:
    Velocity.init();
然後是分配角色,不過,爲了防止死無對證,我們需要記錄分配結果,這是VelocityContext的強項:
    VelocityContext context = new VelocityContext();
開始分配角色了,"dreamhead"扮演的角色是name:

    context.put("name", "dreamhead");
人員就位,準備開始拍攝了!怎麼拍呢?當然是用攝影機拍,最終存放在膠片上了,準備膠片:
    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
沒有劇本我拿拍什麼啊?劇本、劇本……
    Template template = Velocity.getTemplate("hello.vm");
對了,演員要看一下劇本的:
    template.merge(context, writer);
各部門準備,action!
    writer.flush();
cut!
    writer.close();

一個緊張而忙碌的拍攝過程就這樣完成了,雖然從拍攝的過程來看,我們顯得手忙腳亂,但結果還是比較理想的,因爲我們熟悉的“Hello”出現在了我 們的面前。模板的威力就在於,相同的劇本可以由不同的演員進行自己的詮釋。也許嘗試用自己的名字重新演繹Hello的傳說,你就能體會到這一點了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章