程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2EE >> JSP標簽庫解析

JSP標簽庫解析

編輯:J2EE

為什麼要把JSP選作自己主要的服務器端應用程序編寫工具呢?當然,JSP迷人的特性和功能不少,但JSP標簽庫是讓我做出這一決定的最重要誘因之一。

為什麼這樣說呢?原因有兩個:維護和開發速度。服務器端腳本語言其實就像是開發Internet的熔爐。在一個服務器頁面上,你可以很方便地混合各種不同的腳本方法和對象。這種頁面簡直就是建築Web的混凝土。正是這種“材料”的混合給予了服務器端腳本強大的信息處理能力。它可以讓服務器端程序設計人員開發出動態的、靈活的Web頁面。但是,另一方面,腳本的自由混合卻很難得到維護,特別是隨著項目規模的不斷增長而顯得尤其嚴重。我們將不得不讓有經驗的程序員來建立和維護最終產品,結果讓這些程序員成為了一般的Web設計人員。服務器端應用程序在最終的圖形設計和實現這兩方面上就弱化了。更糟糕的是,因為這些頁面對代碼而言變得很復雜,開發速度也就相應降低了。最後,許多中等規模或者大型的服務器端 Web應用程序很晚才得以推出而且成本也無法控制。此外,在實現了這些應用程序之後,許多銷售商還必須去尋找合格的程序員來維護這種亂得如同一盆意大利面條似的代碼。

我們誰都不願意看到這樣的結果,所以,為了克服這個問題,ASP引進了COM對象技術,而JSP則提供了J2EE作為對策。這些解決方案都是建立在集中的、可重用代碼庫的機制之上。但是,他們使用起來可就太難了,耗費的時間也很多。還有,這些解決方案並沒有減少建立混亂代碼的誘惑,結果,我們只能組織起大型的、內部結構良好的開發團隊來使用這些技術。這就意味著,盡管我們目前都已經有了建立大型項目的以上方法,中等規模的項目卻沒有被這些技術所光顧。

可現實是,中等規模的項目才是Web應用程序中的主體部分。所以,許多項目不得不面對其開發和維護環境不能滿足其需要的局面。

幸好,JSP為我們提供了解決這一問題的最佳方案,標簽庫(Tag librarIEs)提供了建立可重用代碼塊的簡單方式。但是和COM和J2EE不同的是,你不需要掌握任何額外的技能就可以建立標簽庫:如果你會編寫 JSP頁面,你就會建立標簽庫。最後,標簽庫還改進了Web應用程序的維護性。這種對維護性的改進表現在:輕易地在JSP頁面上就實現了基於XML的可定制接口。結果可想而知,Web設計人員可以建立JSP Web應用程序而無需知道JSP是怎麼回事。這樣一來,web開發就成為一項非常富有效率的團隊開發任務了。JSP程序員可以建立定制的標簽和後端代碼模塊,而Web設計人員則可以使用定制標簽並且全力關注於Web設計本身。標簽庫解決了代碼混亂的問題,而且做得干淨漂亮(事實上,XML才是解決這些問題的本質所在,但是標簽庫還是起到了相當關鍵的作用)。

什麼是標簽庫?

JSP標簽庫(也被稱作定制標簽)是一種通過JavaBean生成基於XML的腳本的方法。從概念上將,標簽就是很簡單而且可重用的代碼結構。比方說,在我們最新發布的JSPKit(在JSP Insider內)中,我們就使用XML標簽實現了對XML文檔的輕松訪問。請看以下的清單A。

清單A:執行XML/XSL 轉換的示例標簽及其所在的Html頁面
<%@ taglib uri="http://www.jspinsider.com/jspkit/JAXP" prefix="JAXP"%>
c:/xml/example.XML
c:/XML/example.xsl

以上的示例使用了簡單的標簽來訪問處在幕後的更強大代碼。在以上的事例中首先裝載了一個XML文件,然後應用了一個XSL文件來創建一個將被發送到客戶端的結果??這一切不過僅僅只是用了一個很簡單的標簽。

定制標簽使得JSP項目中很容易創建重用的開放源代碼模塊。而你的全部需要不過就是標簽庫及其文檔。標簽庫的重要特性如下所示:

易於安裝在多個項目上

標簽很容易從一個JSP項目遷移到其他項目。一旦建立了一個標簽庫,你只需要把這個個標簽庫包裝成一個 JAR文件就可以在其他JSP項目中重新使用了。不能重用的是你作為程序員在建立標簽時所加進標簽的內容。因為標簽可以重新使用,所以標簽庫可以輕松地用於你自己的項目。目前,最好的標簽資源可以在JSPTags.com這個站點找到。.

擴展JSP標簽庫

標簽庫可以具備JSP規范(JSP 1.2)中的任何特性和功能。這也意味著你擁有了無限的能力可以擴展和增加JSP的強大功能卻無需等待新版本JSP的發布。所以說,你完全可以取消頁面上的JSP include調用了??只需用include標簽建立自己的規范就可以了。

易於維護

標簽庫使得JSP Web應用程序變得很容易維護。主要有以下幾個原因:

標簽對任何人而言都很容易使用、易於理解。

你的所有邏輯都駐留在處於中心的標簽處理器和JavaBean內。這樣一來,如果你不得不更新你的代碼,你只需要處理這些中心文件而無需修正使用這些代碼的其他頁面。

如果你需要增加新的功能,你不必改變任何已經存在的頁面。你可以把額外的屬性包含到你的標簽內從而引進新的行為同時保留以前的屬性,實現舊頁面的正常運行。

比方說,你可能有如下的一個標簽,它讓你的文本都顯示藍色:
My Text但是隨著項目的進行,你又想讓藍色變暗。於是你保留自己的標簽但是為其增加了一個新的屬性:shade
My Text所有的老標簽繼續顯示藍色,但現在你可以使用同一標簽來產生變暗的藍色文本了。

標簽提升了代碼的重用性。那些經過多次測試和使用的代碼肯定具有更少的bug。所以,使用定制標簽的JSP頁面也同樣具有更少的缺陷,維護起來自然方便多了。

更快的開發速度

標簽庫是一種重用代碼的好辦法。我們知道,服務器端語言標准的重用代碼方式是使用模版。標簽庫和模版庫這種方式相比則好得多。采用模版庫,你就需要針對每個項目修改模版或者建立生硬的接口。標簽庫則沒有這些限制,而其所具有的面向對象特性則讓標簽庫不僅用法靈活而且擴展能力極為強大。還有,因為你重用代碼,結果在項目開發上花費的時間就大大降低了,而更多的時間則可以用來設計自己的Web應用程序。標簽庫的簡單接口使得這些代碼用法簡單、易於調試。

雖然標簽庫用起來特別簡單,但是,建立其內部支持層次可比建立簡單的JavaBean復雜多了。這種復雜性的主要原因在於標簽庫包含了好幾個部分。而你所需要掌握的技能不過是理解、熟悉Java和JSP。

定制標簽內幕

一個簡單的定制JSP標簽包括了以下幾個要素:

JavaBean:為了充分利用Java的面向對象特性,重用代碼應當放置在獨立的代碼容器內。這些JavaBean可不是標簽庫的一部分。他們是標簽庫用來執行所分配任務的基礎代碼模塊。

標簽處理器:這是標簽庫的真正核心。標簽處理器(tag handler)引用它所需要的任何外部材料(JavaBean)並且負責訪問JSP頁面的信息(PageContext對象)。而JSP頁面則把頁面上設置的標簽屬性都傳遞給標簽處理器,JSP頁面上的標簽標示的內容也是這樣處理的。當標簽處理器完成其處理過程,它就會把處理後的輸出結果回送給JSP頁面做進一步處理。

標簽庫描述符(TLD文件):這是一種很簡單的XML文件,TLD文件描述和說明了屬性、信息和標簽處理器文件位置等信息。JSP 容器使用這一文件來映射被調用標簽庫的位置和用法。

Web站點的web.XML文件:其實這就是你的Web站點上的初始化文件。在這個文件內你可以定義Web應用程序中使用的定制標簽,還可以定義用來描述每個定制標簽的TLD文件。

發布文件(WAR或JAR文件):如果你打算重用定制標簽,那麼你肯定需要想個簡便的辦法把標簽從一個項目遷移到其他項目中去。把標簽庫打包成一個JAR文件就是這種既方便又高效的標簽庫發布方式。我們在以上的事例中沒有建立JAR文件,但是如果你打算更進一步地了解JAR文件的細節,你不妨閱讀“JSP WAR文件簡介”。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved