1. 程式人生 > >JSP與Freemarker和velocity的區別

JSP與Freemarker和velocity的區別

作為一個後端小白白,在公司大牛們的薰陶之下開始龜速學Java,之前只會html,css和js,根不就不知道後臺與前臺真正的互動是什麼樣的。因為之前做AngularJS的專案,直接通過一個url獲取的資料,前後端完全分離。一直自以為現在的開發模式就是前端寫頁面,後臺提供資料。看來真是Too young too naive.怪不得之前有個前輩說,前端就是一個做文案的。後端才是最強大的好嘛,既可以寫功能,又可以寫頁面。貌似大多數人都是從後端轉前端,看來我要逆流而上,從前端慢慢轉後端了。想想就有些小激動呢!O(∩_∩)O哈哈哈~
在之前,前後端的耦合一直沒有研究過,只是懵懵懂懂地知道一點freemarker/velocity,但是沒怎麼用過。今天一同事問我一個jsp裡面的表單提交,只能一臉懵逼。雖然在他眼裡跟原生js沒啥區別,但在我看來還是跟原生js的表單提交還是有些區別的。
先看看JSP與freemarker和velocity的區別:
摘自:

http://blog.csdn.net/tjcyjd/article/details/16803877
在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分離
我的吐槽:


經歷過模板引擎用velocity的專案(超級大)和一個freemarker作為模板引擎的專案,作為一個對後端一點都不懂的前端人員,用Eclipse起整個專案,每次都起了至少半天,就為了改一個樣式。效率極低。
這兩個雖然對比JSP,可以實現嚴格的MVC分離,但是這樣的前端開發還是十分沒有效率,並且很痛苦的。每到這個時候,就好懷念寫Angular的日子。
接下來的專案,要用JSP了,這樣接觸了這三個不一樣的表現層形式,全面了。還是很開心噠~
PS:一直很想自己做個網站,全套的那種。那麼,努力做個全棧工程師吧!