velocity與jsp的區別
阿新 • • 發佈:2019-01-03
基於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程式碼:
◆ 網站功能確定後,由美工設計網頁的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程式碼: