Velocity :
在服務器端可以使用 Velocity 處理模板和生成的動態內容(HTML、XML等)。這和 JSP 技術的目標非常接近。但是,JSP 模型可以毫無阻礙地訪問底層的 Servlet API 和 Java 編程語言。它基本上是一種在很大程度上開放的訪問模型。而作爲一種完全自包含的模板引擎和腳本解釋器,Velocity 擁有完全封閉的模型。任何針對系統和/或 Java 編程語言的訪問都必須明確地啓用。默認情況,Velocity 模板中不能訪問 Java 編程語言的任何方面。這種封閉的模型使 Velocity 能夠提供分離的模板表示層,與任何應用程序業務邏輯或者數據管理代碼清晰地劃分開。從而保證了web site 的長期可維護性.
第一次解釋jsp需要經過轉換成java代碼,再編譯成class文件等步驟,而velocity則在速度上更快,因爲它不需要經過像解釋jsp頁面那麼多的步驟,其次velocity也可以用作其它實現的模板技術,像我在項目中就遇到過使用velocity來作爲郵件的模板,而jsp顯然做不到這樣的功能。
拓展:在java領域,表現層技術主要有三種:jsp、freemarker、velocity。
jsp是大家最熟悉的技術
優點:
1、功能強大,可以寫java代碼
2、支持jsp標籤(jsp tag)
3、支持表達式語言(el)
4、官方標準,用戶羣廣,豐富的第三方jsp標籤庫
5、性能良好。jsp編譯成class文件執行,有很好的性能表現
缺點:沒有明顯缺點,非要挑點骨頭就是,由於可編寫java代碼,如使用不當容易破壞mvc結構。
velocity是較早出現的用於代替jsp的模板語言
優點:
1、不能編寫java代碼,可以實現嚴格的mvc分離
2、性能良好,據說比jsp性能還要好些
3、使用表達式語言,據說jsp的表達式語言就是學velocity的
缺點:
1、不是官方標準 2、用戶羣體和第三方標籤庫沒有jsp多 3、對jsp標籤支持不夠好
freemarker 也是一種模版引擎語言
優點:
1、不能編寫java代碼,可以實現嚴格的mvc分離
2、性能非常不錯
3、對jsp標籤支持良好
4、內置大量常用功能,使用非常方便
5、宏定義(類似jsp標籤)非常方便
6、使用表達式語言
缺點:
1、不是官方標準 2、用戶羣體和第三方標籤庫沒有jsp多
綜合對比:
1、性能。velocity應該是最好的,其次是jsp,普通的頁面freemarker性能最差(雖然只是幾毫秒到十幾毫秒的差距)。但是在複雜頁面上(包含大量判斷、日期金額格式化)的頁面上,freemarker的性能比使用tag和el的jsp好。
2、freemarker宏定義比jsp tag方便,內置大量常用功能,比如html過濾,日期金額格式化等等,支持jsp標籤。且freemarker和velovity一樣,作爲模版語言,都可以實現嚴格的mvc分離。