1. 程式人生 > >velocity與jsp的區別

velocity與jsp的區別

基於Java的網站開發,很多人都採用JSP作為前端網頁製作的技術,尤其是在國內。這種技術通常會存在一些問題,可以通過簡單地分析網站開發過程來看看這些問題。通常網站開發採用以下兩種方式: 

◆ 網站功能確定後,由美工設計網頁的UI(介面)部分,然後由程式設計師在其上加入程式碼顯示邏輯(比如迴圈、判斷顯示資料結果)。這就是通常的JSP頁面製作,當然這部分可以由美工完成模板,然後由JSP工程師以它為原型建立相應的JSP頁面。 

◆ 網站功能確定後,由美工設計網頁的UI(介面)部分,然後由網頁製作人員在其上加入程式碼顯示邏輯(比如迴圈、判斷顯示資料結果)。在這一步的JSP頁面製作中,網頁製作人員通常只需要懂JavaScript和HTML,在工程師的指導下學會如何嵌入JSP taglib標記,然後以美工的模板為原型製作JSP網頁。 

顯然後一種方式要比前一種方式分工明確。然而在很多小公司,或者專案緊急的情況下,JSP網頁製作和後臺程式開發都是同一個人,這樣無疑加大了程式設計師的負擔。後一種情況也有兩個缺點,一是網頁製作人員必須學會如何使用JSP taglib,這將加大網頁製作人員的負擔;二是如果頁面因為客戶的要求重新設計,那麼無論哪種情況,網頁製作人員都要將顯示邏輯重新嵌入JSP網頁。 

雖然從效能角度和taglib的使用上來說,JSP比PHP和ASP做得要好,但它在設計上同樣類似PHP這種伺服器頁面語言,即在頁面中嵌入指令碼語言的技術。這使得它雖然比傳統基於CGI指令碼語言的開發模式速度快,但卻將後臺程式邏輯與頁面顯示混淆。 

用MVC模式開發網站 

現在更多的網站製作採用一種稱為MVC的模式,也就是將網站製作工作分工,分為M(Model,模型)、V(View,檢視)和C(Controller,控制器)。 

◆ M(Model,模型) M包括後臺的事務邏輯、真正處理事務的程式碼和商業邏輯等,它們是整個網站最重要的工作部分。通常這部分程式碼相對比較穩定,不會經常變動,就是有所變動也不會對前端的頁面產生影響。 

◆ V(View,檢視) V是網頁的顯示部分,這部分接受來自後臺程式的結果或資料,進行顯示。V檢視通常是變化比較大的部分,比如網站介面的每日更新,每隔一段時間更新網頁風格等都會造成V檢視部分的大量更改工作。 

◆ C(Controller,控制器) C在檢視和模型之間傳遞控制,並根據要求呼叫相應的檢視顯示模型返回的資料,主要負責排程工作。 

這種職責的分工到底有什麼好處呢?它簡化了軟體開發過程中所有相關人員的工作,使不同部分的修改通常不會影響到其它部分的工作。比如,修改後臺某些程式的演算法並不影響前臺的頁面顯示,前臺頁面的修改也不影響後臺程式的開發。 

這種分工合作比起JSP混淆程式碼邏輯和顯示層的方式要好得多。所以越來越多的國外程式設計師在不斷提出替代JSP的方案。在眾多方案中,基於Java模板引擎的技術脫穎而出,其中著名的有Velocity和Webmacro兩種模板技術。 

Velocity模板引擎 

模板引擎的設計思想最早由Webmacro提出,並被應用在一個著名的搜尋引擎www.altavista.com上。後來,這種思想漸漸被Apache開發小組所採用,並作為一個子專案被提出來,這就是現在的Velocity。 

模板引擎與MVC中檢視部分的關係更為密切。Velocity可以應用在任何需要格式化資料顯示的Java程式中。那麼Velocity到底是什麼呢?它的官方解釋是:“Velocity是一種基於Java的模板引擎,它允許任何人使用簡單而強大的模板語言來引用定義在Java程式碼中的物件。” 

使用Velocity的優點在於: 

◆ 很容易整合在各種各樣的程式領域中; 

◆ 為網頁製作人員提供了一種清晰而簡單的語法; 

◆ 因為模板和程式碼是分離的,所以可以分別獨立的開發和維護它們; 

◆ Velocity引擎可以很容易地整合到一些Java執行環境,特別是Servlet中; 

◆ Velocity使得模板可以訪問任何環境物件中的共有方法。 

Velocity的強大之處還在於它嚴格地區分程式開發功能的職責劃分。它通過限制模板可能訪問的物件(即後臺程式允許其得到的物件)來實現這一點。這意味著網頁設計人員可以只把精力放在資料的顯示部分(View),而程式設計師則只要關注如何寫好程式的控制層(Controller)、商業邏輯與資料管理(Model)。這就是典型的MVC開發模式,它簡化了開發和日益複雜的應用和維護工作。 

Velocity最擅長做的工作包括: 

◆ 基於Servlet的網站製作; 

◆ Java和SQL程式碼生成; 

◆ XML處理和轉換; 

◆ 文書處理,比如生成trf檔案等。 

不過,Velocity用得最多的還是在基於Java Servlet的網頁程式中做生成網頁的引擎,以替代JSP等技術。除了使用比較容易外,它提供了強大的模板語言來顯示和操作資料。注意,不是生成資料,這點很重要,因為生成工作應該是程式邏輯的部分。 

Velocity非常適合在J2EE(Java 2 Platform,Enterprise Edition)的網站開發中替代JSP,做輸出頁面的技術工作。雖然JSP包含在J2EE規範中,但是J2EE本身並不需要JSP。 

用Velocity做網頁 

Velocity是如何工作的呢?雖然大多數Velocity的應用都是基於Servlet的網頁製作,但是為了說明Velocity的使用,這裡將採用更通用的Java Application來說明它的工作原理。 

任何Velocity的應用都包括模板製作和程式部分兩個方面。按照慣例,採用HelloWorld來作為第一個程式的示例。 

1. 模板製作模板示例hellosite.vm的內容如下(雖然其不是以HTML為主,但很容易改成一個HTML的頁面): 
Hello $name!  Welcome to $site world! 
2.Java程式部分 
下面是Java程式碼: