首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Velocity 模板引擎入門:從 Hello World 到 Servlet 整合實戰

     編輯:Java 相關知識

為什麼需要 Velocity?

Struts 雖好地實踐了 MVC,但 View 層仍依賴 Taglib,前端設計師若不懂 Struts 標簽,協作開發極其痛苦。Velocity 作為純模板引擎,專注 Model 與 View 的橋梁,讓模板僅包含簡單的 VTL(Velocity Template Language),徹底剝離 Java 代碼,極大降低前後端耦合。

核心概念

  • 模板:.vm 文件,類 HTML,含 VTL 指令($variable、#if、#foreach…)
  • Context:VelocityContext,攜帶 Java 對象數據
  • 引擎:VelocityEngine,合併模板與 Context 輸出結果

5 分鐘上手 Demo

1. 模板 hellovelocity.vm

Welcome $name to Javayou.com!
today is $date.

2. Java 代碼

VelocityEngine ve = new VelocityEngine();
ve.init();
Template t = ve.getTemplate("hellovelocity.vm");
VelocityContext context = new VelocityContext();
context.put("name", "Liang");
context.put("date", new Date().toString());

StringWriter writer = new StringWriter();
t.merge(context, writer);
System.out.println(writer.toString());

3. 輸出

Welcome Liang to Javayou.com!
today is Tue Dec 14 19:26:37 CST 2004.

VTL 常用指令速查

變量定義

#set( $iAmVariable = "good!" )
$iAmVariable  // 輸出 good!

條件判斷

#set( $admin = "admin" )
#set( $user = "user" )
#if( $admin == $user )
Welcome admin!
#else
Welcome user!
#end

迭代 List

#foreach( $product in $list )
  • $product
  • #end

    迭代 Map

    #foreach( $key in $hashVariable.keySet() )
    
  • $key 's value: $hashVariable.get($key)
  • #end

    JavaBean 屬性訪問

    $student.No       // 相當於 student.getNo() 或 student.get("No")
    $student.Address  // 相當於 student.getAddress() 或 student.get("Address")

    嵌套循環與內建變量

    #foreach( $element in $list )
      #foreach( $element in $list )
        This is $element. $velocityCount
      #end
      -- outer --
      This is $element. $velocityCount
    #end

    $velocityCount 從 1 起算,可在 Velocity.properties 改為 0 起算。

    架構模式對比

    模式View 層技術Java 代碼滲入前後端協作性能
    JSP + JavaBeanJSP大量困難基準
    Struts (Servlet + JSP)JSP + Taglib少量需懂 Taglib稍低
    Servlet + JavaBean + Velocity.vm零極簡略高

    進階話題

    • 國際化:Velocity 本身支持 getTemplate(template, encoding),但實際項目推薦用 MessageTool($text.get('key'))
    • VelocityStruts:Apache 整合方案,Action 後轉向 Velocity View,替換 JSP
    • 代碼生成:Turbine 即用 Velocity 生成大量代碼,易改造為代碼生成器

    總結

    Velocity 以極簡的 VTL 實現徹底的關注點分離,是「Servlet + JavaBean + Velocity」模式的核心。對追求前後端並行開發、維護性與性能的項目,它是 JSP/Taglib 的優秀替代者。

    1. 上一篇文章:
    2. 下一篇文章:
    Copyright © 程式碼之家 All Rights Reserved