亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

用Apache Velocity模板引擎速造網站

添加時間:2014-9-1 17:59:06  添加: 思海網絡 

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

  ◆ 網站功能確定后,由美工設計網頁的UI(界面)部分,然后由程序員在其上加入代碼顯示邏輯(比如循環、判斷顯示數據結果)。這就是通常的JSP頁面制作,當然這部分可以由美工完成模板,然后由JSP工程師以它為原型創建相應的JSP頁面。

  ◆ 網站功能確定后,由美工設計網頁的UI(界面)部分,然后由網頁制作人員在其上加入代碼顯示邏輯(比如循環、判斷顯示數據結果)。在這一步的JSP頁面制作中,網頁制作人員通常只需要懂Java和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代碼:

import java.io.StringWriter;import org.apache.velocity.app.VelocityEngine;import org.apache.velocity.Template;import org.apache.velocity.VelocityContext;public class HelloWorld{public static void main( String[] args )throws Exception{/*  first, get and initialize an engine  */VelocityEngine ve = new VelocityEngine();ve.init();/*  next, get the Template  */Template t = ve.getTemplate( "hellosite.vm" );/*  create a context and add data */VelocityContext context = new VelocityContext();context.put("name", "Eiffel Qiu");context.put("site", "http://www.eiffelqiu.com");/* now render the template into a StringWriter */StringWriter writer = new StringWriter();t.merge( context, writer );/* show the World */System.out.println( writer.toString() );}}

  將這兩個文件放在同一個目錄下,編譯運行,結果是:

Hello Eiffel Qiu!  Welcome to http://www.eiffelqiu.com world

  為了保證運行順利,請從Velocity的網站http://jakarta.apache.org/velocity/上下載Velocity的運行包,并將其中Velocity Jar包的路徑放在系統的Classpath中,這樣就可以順利編譯和運行以上程序了。

  這個程序很簡單,但是它能清楚地說明Velocity的基本工作原理。程序中的其它部分基本上很固定,最主要的部分在以下幾段代碼。

  ◆ Velocity獲取模板文件,得到模板引用:

  

Template t = ve.getTemplate( "hellosite.vm" );

  ◆ 初始化環境,并將數據放入環境: 

  

VelocityContext context = new VelocityContext();context.put("name", "Eiffel Qiu");context.put("site", "http://www.eiffelqiu.com");

  ◆ 初始化Velocity模板引擎: 

  

VelocityEngine ve = new VelocityEngine();ve.init();

  ◆ 將環境變量和輸出部分結合: 

  

StringWriter writer = new StringWriter();t.merge( context, writer );/* show the World */System.out.println( writer.toString() );

  這一部分在將來的Servlet應用中會有所區別,因為網頁輸出并不和命令行輸出相同,如果用于網頁輸出,將并不通過System.out輸出。 

  小結 

  Velocity解決了如何在Servlet和網頁之間傳遞數據的問題,當然這種傳輸數據的機制是在MVC模式上進行的,也就是View、Modle和Controller之間相互獨立工作,一方的修改不影響其它方面的變動。 

  他們之間的聯系通過環境變量(Context)來實現,當然網頁制作方和后臺程序方要相互約定好對所傳遞變量的命名,比如上個程序例子中的site、name變量,它們在網頁上就是$name、$site。 

  這樣只要雙方約定好變量名字,就可以獨立工作了。無論頁面如何變化,只要變量名不變,后臺程序無需改動,前臺網頁也可以任意由網頁制作人員修改。 

  通常簡單變量名無法滿足網頁制作顯示數據的需要,比如經常會循環顯示一些數據集,或者是根據一些數據的值來決定如何顯示下一步的數據等。 

  Velocity同樣提供了循環、判斷的簡單語法以滿足網頁制作的需要。Velocity提供了一個簡單的模板語言,供前端網頁制作人員使用,這個模板語言簡單到大部分懂得Java的人都可以很快掌握,其甚至比Java更簡單。 

  當然這種簡單是刻意的,因為不需要Velocity什么都能完成,而只需專注于其應該完成的。View層不應該包含更多的邏輯,Velocity的簡單模板語法完全可以滿足所有對頁面顯示邏輯的需要,并且也不會發生像JSP那樣因為一個無限循環語句而毀掉系統的情況。

關鍵字:數據、網站、模板、Apache

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站