jsp、freemarker、velocity、thymeleaf頁面方案分析
springboot1.5開始已經不支援velocity,牛客網高階專案還在使用velocity,這一點一點要注意,自己想辦法解決。
1、概述
在java領域,表現層技術主要有三種,
(1)jsp;
(2)freemarker;
(3)velocity;
(4)thymeleaf;
2、jsp
優點:
1、功能強大,可以寫java程式碼
2、支援jsp標籤(jsp tag)
3、支援表示式語言(el)
4、官方標準,使用者群廣,豐富的第三方jsp標籤庫
5、效能良好。jsp編譯成class檔案執行,有很好的效能表現
缺點:
jsp沒有明顯缺點,非要挑點骨頭那就是,由於可以編寫java程式碼,如使用不當容易破壞mvc結構。
3、freemarker
FreeMarker是一個用Java語言編寫的模板引擎,它基於模板來生成文字輸出。FreeMarker與Web容器無關,即在Web執行時,它並不知道Servlet或HTTP。它不僅可以用作表現層的實現技術,而且還可以用於生成XML,JSP或Java 等。
目前企業中:主要用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分離
4、velocity
優點:
1、不能編寫java程式碼,可以實現嚴格的mvc分離
2、效能良好,據說比jsp效能還要好些
3、使用表示式語言,據說jsp的表示式語言就是學velocity的
缺點:
1、不是官方標準
2、使用者群體和第三方標籤庫沒有jsp多。
3、對jsp標籤支援不夠好
5、thymeleaf
Thymeleaf是個XML/XHTML/HTML5模板引擎,可以用於Web與非Web應用。
Thymeleaf的主要目標在於提供一種可被瀏覽器正確顯示的、格式良好的模板建立方式,因此也可以用作靜態建模。你可以使用它建立經過驗證的XML與HTML模板。相對於編寫邏輯或程式碼,開發者只需將標籤屬性新增到模板中即可。接下來,這些標籤屬性就會在DOM(文件物件模型)上執行預先制定好的邏輯。Thymeleaf的可擴充套件性也非常棒。你可以使用它定義自己的模板屬性集合,這樣就可以計算自定義表示式並使用自定義邏輯。這意味著Thymeleaf還可以作為模板引擎框架。
thymeleaf優點:靜態html嵌入標籤屬性,瀏覽器可以直接開啟模板檔案,便於前後端聯調。springboot官方推薦方案。thymeleaf缺點:模板必須符合xml規範,就這一點就可以判死刑!太不方便了!js指令碼必須加入/
---------------------