jsp freemarker velocity 比較

2010-06-02 12:17:48|  分類:jsp|  標籤:|字號 訂閱

在java領域,表現層技術主要有三種:jsp、freemarker、velocity。

jsp是大家最熟悉的技術
優點:
1、功能強大,可以寫java代碼
2、支持jsp標籤(jsp tag)
3、支持表達式語言(el)
4、官方標準,用戶羣廣,豐富的第三方jsp標籤庫
5、性能良好。jsp編譯成class文件執行,有很好的性能表現
缺點:
jsp沒有明顯缺點,非要挑點骨頭那就是,由於可以編寫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多

選擇freemarker的原因:
1、性能。velocity應該是最好的,其次是jsp,普通的頁面freemarker性能最差(雖然只是幾毫秒到十幾毫秒的差距)。但是在複雜頁面上(包含大量判斷、日期金額格式化)的頁面上,freemarker的性能比使用tag和el的jsp好。
2、宏定義比jsp tag方便
3、內置大量常用功能。比如html過濾,日期金額格式化等等,使用非常方便
4、支持jsp標籤
5、可以實現嚴格的mvc分離
 
 
 一、 什麼是FreeMarker
FreeMarker是一個用Java語言編寫的模板引擎,它基於模板來生成文本輸出。
所謂模板,就是一份已經寫好了基本內容,有着固定格式的文檔,其中空出或者用佔位符標識的內容,由使用者來填充,不同的使用者給出的數據是不同的。在模板中的佔位符,在模板運行時,由模板引擎來解析模板,並採用動態數據替換佔位符部分的內容。
FreeMarker與Web容器無關,即在Web運行時,它並不知道Servlet或HTTP。它不僅可以用作表現層的實現技術,而且還可以用於生成XML,JSP或Java 文等。

二、 FreeMarker的優點和缺點
(一) FreeMarker的優點
1.使用FreeMarker的優點之一,可以徹底的分離表現層和業務邏輯。
使用JSP 開發過程中在頁面中大量的存在業務邏輯的代碼,使得頁面內容凌亂,在後期大量的修改維護過程中就變得非常困難。
FreeMarker根本不支持Java腳本代碼。
FreeMarker的原理就是:模板+數據模型=輸出,模板只負責數據在頁面中的表現,不涉及任何的邏輯代碼,而所有的邏輯都是由數據模型來處理的。用戶最終看到的輸出是模板和數據模型合併後創建的。

2.使用FreeMarker的優點之二,可以提高開發效率。
在我們以往的開發中,使用的都是JSP 頁面來展示數據的,即所謂的表現層。我們都知道,JSP在第一次執行的時候需要轉換成Servlet類,開發階段進行功能調適時,需要頻繁的修改JSP,每次修改都要編譯和轉換,那麼試想一天中我們浪費在程序編譯的時間有多少。相對於JSP來說,FreeMarker模板技術不存在編譯和轉換的問題,所以就不會存在上述問題。而且開發過程中,我們在不必在等待界面設計開發人員完成頁面原形後,我們再來開發程序。

3.使用FreeMarker的優點之三,使得開發過程中的人員分工更加明確。
以往用JSP展現數據時,作爲程序員的我們,並不熟悉界面設計技術,反之界面開發人員,也並不熟悉程序語言。對兩者而言,交替性的工作本身就有難度。有時候稍有不慎,可能會將某個頁面元素刪除或去掉了某個程序符號,使得頁面走樣或程序錯誤,這樣就需要雙方相互溝通協作,解決出現的問題。有時候因爲項目中的時間,任務量等因素的存在,可能這個工作就由一個人來完成,這樣就可能加大某一方開發人員的工作量。
使用FreeMarker後,作爲界面開發人員,只專心創建HTML文件、圖像以及Web頁面的其他可視化方面,不用理會數據;而程序開發人員則專注於系統實現,負責爲頁面準備要顯示的數據。

(二)FreeMarker的缺點
1.使用FreeMarker的缺點之一,應用FreeMarker模板技術,在修改模板後,可能會看到已經過期的數據。如:生成靜態的HTML頁面後,如果一旦模板改變,而沒有及時更新模板生成的HTML頁面的話,用戶看到的就是過期的數據。
2.使用FreeMarker的缺點之二,FreeMarker模板技術在應用過程中,FreeMarker中的變量必須要賦值,如果不賦值,那麼就會拋出異常。想避免錯誤就要應用if/elseif/else 指令進行判段,如果對每一個變量都判斷的話,那麼則反而增加了編程的麻煩。
3.使用FreeMarker的缺點之三,FreeMarker的map限定key必須是string,其他數據類型無法操作
4.使用FreeMarker的缺點之四,FreeMarker不支持集羣應用。爲了編成的方便性,把序列化的東西都放到了Session中,如Session,request等,在開發的過程中確實方便,但如果將應用放到集羣中,就會出現錯誤。
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章