自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

JSP標(biāo)簽庫(kù)解析

開發(fā) 后端
本文介紹為什么要把JSP選作自己主要的服務(wù)器端應(yīng)用程序編寫工具呢?當(dāng)然,JSP迷人的特性和功能不少,但JSP標(biāo)簽庫(kù)是讓我做出這一決定的最重要誘因之一。

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

為什么這樣說(shuō)呢?原因有兩個(gè):維護(hù)和開發(fā)速度。服務(wù)器端腳本語(yǔ)言其實(shí)就像是開發(fā)Internet的熔爐。在一個(gè)服務(wù)器頁(yè)面上,你可以很方便地混合各種不同的腳本方法和對(duì)象。這種頁(yè)面簡(jiǎn)直就是建筑Web的混凝土。正是這種“材料”的混合給予了服務(wù)器端腳本強(qiáng)大的信息處理能力。它可以讓服務(wù)器端程序設(shè)計(jì)人員開發(fā)出動(dòng)態(tài)的、靈活的Web頁(yè)面。但是,另一方面,腳本的自由混合卻很難得到維護(hù),特別是隨著項(xiàng)目規(guī)模的不斷增長(zhǎng)而顯得尤其嚴(yán)重。我們將不得不讓有經(jīng)驗(yàn)的程序員來(lái)建立和維護(hù)最終產(chǎn)品,結(jié)果讓這些程序員成為了一般的Web設(shè)計(jì)人員。服務(wù)器端應(yīng)用程序在最終的圖形設(shè)計(jì)和實(shí)現(xiàn)這兩方面上就弱化了。更糟糕的是,因?yàn)檫@些頁(yè)面對(duì)代碼而言變得很復(fù)雜,開發(fā)速度也就相應(yīng)降低了。***,許多中等規(guī)?;蛘叽笮偷姆?wù)器端 Web應(yīng)用程序很晚才得以推出而且成本也無(wú)法控制。此外,在實(shí)現(xiàn)了這些應(yīng)用程序之后,許多銷售商還必須去尋找合格的程序員來(lái)維護(hù)這種亂得如同一盆意大利面條似的代碼。

我們誰(shuí)都不愿意看到這樣的結(jié)果,所以,為了克服這個(gè)問(wèn)題,ASP引進(jìn)了COM對(duì)象技術(shù),而JSP則提供了J2EE作為對(duì)策。這些解決方案都是建立在集中的、可重用代碼庫(kù)的機(jī)制之上。但是,他們使用起來(lái)可就太難了,耗費(fèi)的時(shí)間也很多。還有,這些解決方案并沒有減少建立混亂代碼的誘惑,結(jié)果,我們只能組織起大型的、內(nèi)部結(jié)構(gòu)良好的開發(fā)團(tuán)隊(duì)來(lái)使用這些技術(shù)。這就意味著,盡管我們目前都已經(jīng)有了建立大型項(xiàng)目的以上方法,中等規(guī)模的項(xiàng)目卻沒有被這些技術(shù)所光顧。

可現(xiàn)實(shí)是,中等規(guī)模的項(xiàng)目才是Web應(yīng)用程序中的主體部分。所以,許多項(xiàng)目不得不面對(duì)其開發(fā)和維護(hù)環(huán)境不能滿足其需要的局面。

幸好,JSP為我們提供了解決這一問(wèn)題的***方案,標(biāo)簽庫(kù)(Tag libraries)提供了建立可重用代碼塊的簡(jiǎn)單方式。但是和COM和J2EE不同的是,你不需要掌握任何額外的技能就可以建立標(biāo)簽庫(kù):如果你會(huì)編寫 JSP頁(yè)面,你就會(huì)建立標(biāo)簽庫(kù)。***,標(biāo)簽庫(kù)還改進(jìn)了Web應(yīng)用程序的維護(hù)性。這種對(duì)維護(hù)性的改進(jìn)表現(xiàn)在:輕易地在JSP頁(yè)面上就實(shí)現(xiàn)了基于XML的可定制接口。結(jié)果可想而知,Web設(shè)計(jì)人員可以建立JSP Web應(yīng)用程序而無(wú)需知道JSP是怎么回事。這樣一來(lái),Web開發(fā)就成為一項(xiàng)非常富有效率的團(tuán)隊(duì)開發(fā)任務(wù)了。JSP程序員可以建立定制的標(biāo)簽和后端代碼模塊,而Web設(shè)計(jì)人員則可以使用定制標(biāo)簽并且全力關(guān)注于Web設(shè)計(jì)本身。標(biāo)簽庫(kù)解決了代碼混亂的問(wèn)題,而且做得干凈漂亮(事實(shí)上,XML才是解決這些問(wèn)題的本質(zhì)所在,但是標(biāo)簽庫(kù)還是起到了相當(dāng)關(guān)鍵的作用)。

什么是標(biāo)簽庫(kù)?

JSP標(biāo)簽庫(kù)(也被稱作定制標(biāo)簽)是一種通過(guò)JavaBean生成基于XML的腳本的方法。從概念上將,標(biāo)簽就是很簡(jiǎn)單而且可重用的代碼結(jié)構(gòu)。比方說(shuō),在我們***發(fā)布的JSPKit(在JSP Insider內(nèi))中,我們就使用XML標(biāo)簽實(shí)現(xiàn)了對(duì)XML文檔的輕松訪問(wèn)。請(qǐng)看以下的清單A。

清單A:執(zhí)行XML/XSL 轉(zhuǎn)換的示例標(biāo)簽及其所在的HTML頁(yè)面
<%@ taglib uri="http://www.jspinsider.com/jspkit/JAXP" prefix="JAXP"%>
c:/xml/example.xml
c:/xml/example.xsl

以上的示例使用了簡(jiǎn)單的標(biāo)簽來(lái)訪問(wèn)處在幕后的更強(qiáng)大代碼。在以上的事例中首先裝載了一個(gè)XML文件,然后應(yīng)用了一個(gè)XSL文件來(lái)創(chuàng)建一個(gè)將被發(fā)送到客戶端的結(jié)果??這一切不過(guò)僅僅只是用了一個(gè)很簡(jiǎn)單的標(biāo)簽。

定制標(biāo)簽使得JSP項(xiàng)目中很容易創(chuàng)建重用的開放源代碼模塊。而你的全部需要不過(guò)就是標(biāo)簽庫(kù)及其文檔。標(biāo)簽庫(kù)的重要特性如下所示:

易于安裝在多個(gè)項(xiàng)目上

標(biāo)簽很容易從一個(gè)JSP項(xiàng)目遷移到其他項(xiàng)目。一旦建立了一個(gè)標(biāo)簽庫(kù),你只需要把這個(gè)個(gè)標(biāo)簽庫(kù)包裝成一個(gè) JAR文件就可以在其他JSP項(xiàng)目中重新使用了。不能重用的是你作為程序員在建立標(biāo)簽時(shí)所加進(jìn)標(biāo)簽的內(nèi)容。因?yàn)闃?biāo)簽可以重新使用,所以標(biāo)簽庫(kù)可以輕松地用于你自己的項(xiàng)目。目前,***的標(biāo)簽資源可以在JSPTags.com這個(gè)站點(diǎn)找到。.

擴(kuò)展JSP標(biāo)簽庫(kù)

標(biāo)簽庫(kù)可以具備JSP規(guī)范(JSP 1.2)中的任何特性和功能。這也意味著你擁有了無(wú)限的能力可以擴(kuò)展和增加JSP的強(qiáng)大功能卻無(wú)需等待新版本JSP的發(fā)布。所以說(shuō),你完全可以取消頁(yè)面上的JSP include調(diào)用了??只需用include標(biāo)簽建立自己的規(guī)范就可以了。

易于維護(hù)

標(biāo)簽庫(kù)使得JSP Web應(yīng)用程序變得很容易維護(hù)。主要有以下幾個(gè)原因:

標(biāo)簽對(duì)任何人而言都很容易使用、易于理解。

你的所有邏輯都駐留在處于中心的標(biāo)簽處理器和JavaBean內(nèi)。這樣一來(lái),如果你不得不更新你的代碼,你只需要處理這些中心文件而無(wú)需修正使用這些代碼的其他頁(yè)面。

如果你需要增加新的功能,你不必改變?nèi)魏我呀?jīng)存在的頁(yè)面。你可以把額外的屬性包含到你的標(biāo)簽內(nèi)從而引進(jìn)新的行為同時(shí)保留以前的屬性,實(shí)現(xiàn)舊頁(yè)面的正常運(yùn)行。

比方說(shuō),你可能有如下的一個(gè)標(biāo)簽,它讓你的文本都顯示藍(lán)色:
My Text但是隨著項(xiàng)目的進(jìn)行,你又想讓藍(lán)色變暗。于是你保留自己的標(biāo)簽但是為其增加了一個(gè)新的屬性:shade
My Text所有的老標(biāo)簽繼續(xù)顯示藍(lán)色,但現(xiàn)在你可以使用同一標(biāo)簽來(lái)產(chǎn)生變暗的藍(lán)色文本了。

標(biāo)簽提升了代碼的重用性。那些經(jīng)過(guò)多次測(cè)試和使用的代碼肯定具有更少的bug。所以,使用定制標(biāo)簽的JSP頁(yè)面也同樣具有更少的缺陷,維護(hù)起來(lái)自然方便多了。

更快的開發(fā)速度

標(biāo)簽庫(kù)是一種重用代碼的好辦法。我們知道,服務(wù)器端語(yǔ)言標(biāo)準(zhǔn)的重用代碼方式是使用模版。標(biāo)簽庫(kù)和模版庫(kù)這種方式相比則好得多。采用模版庫(kù),你就需要針對(duì)每個(gè)項(xiàng)目修改模版或者建立生硬的接口。標(biāo)簽庫(kù)則沒有這些限制,而其所具有的面向?qū)ο筇匦詣t讓標(biāo)簽庫(kù)不僅用法靈活而且擴(kuò)展能力極為強(qiáng)大。還有,因?yàn)槟阒赜么a,結(jié)果在項(xiàng)目開發(fā)上花費(fèi)的時(shí)間就大大降低了,而更多的時(shí)間則可以用來(lái)設(shè)計(jì)自己的Web應(yīng)用程序。標(biāo)簽庫(kù)的簡(jiǎn)單接口使得這些代碼用法簡(jiǎn)單、易于調(diào)試。

雖然標(biāo)簽庫(kù)用起來(lái)特別簡(jiǎn)單,但是,建立其內(nèi)部支持層次可比建立簡(jiǎn)單的JavaBean復(fù)雜多了。這種復(fù)雜性的主要原因在于標(biāo)簽庫(kù)包含了好幾個(gè)部分。而你所需要掌握的技能不過(guò)是理解、熟悉Java和JSP。

定制標(biāo)簽內(nèi)幕

一個(gè)簡(jiǎn)單的定制JSP標(biāo)簽包括了以下幾個(gè)要素:

JavaBean:為了充分利用Java的面向?qū)ο筇匦裕赜么a應(yīng)當(dāng)放置在獨(dú)立的代碼容器內(nèi)。這些JavaBean可不是標(biāo)簽庫(kù)的一部分。他們是標(biāo)簽庫(kù)用來(lái)執(zhí)行所分配任務(wù)的基礎(chǔ)代碼模塊。

標(biāo)簽處理器:這是標(biāo)簽庫(kù)的真正核心。標(biāo)簽處理器(tag handler)引用它所需要的任何外部材料(JavaBean)并且負(fù)責(zé)訪問(wèn)JSP頁(yè)面的信息(PageContext對(duì)象)。而JSP頁(yè)面則把頁(yè)面上設(shè)置的標(biāo)簽屬性都傳遞給標(biāo)簽處理器,JSP頁(yè)面上的標(biāo)簽標(biāo)示的內(nèi)容也是這樣處理的。當(dāng)標(biāo)簽處理器完成其處理過(guò)程,它就會(huì)把處理后的輸出結(jié)果回送給JSP頁(yè)面做進(jìn)一步處理。

標(biāo)簽庫(kù)描述符(TLD文件):這是一種很簡(jiǎn)單的XML文件,TLD文件描述和說(shuō)明了屬性、信息和標(biāo)簽處理器文件位置等信息。JSP 容器使用這一文件來(lái)映射被調(diào)用標(biāo)簽庫(kù)的位置和用法。

Web站點(diǎn)的web.xml文件:其實(shí)這就是你的Web站點(diǎn)上的初始化文件。在這個(gè)文件內(nèi)你可以定義Web應(yīng)用程序中使用的定制標(biāo)簽,還可以定義用來(lái)描述每個(gè)定制標(biāo)簽的TLD文件。

發(fā)布文件(WAR或JAR文件):如果你打算重用定制標(biāo)簽,那么你肯定需要想個(gè)簡(jiǎn)便的辦法把標(biāo)簽從一個(gè)項(xiàng)目遷移到其他項(xiàng)目中去。把標(biāo)簽庫(kù)打包成一個(gè)JAR文件就是這種既方便又高效的標(biāo)簽庫(kù)發(fā)布方式。我們?cè)谝陨系氖吕袥]有建立JAR文件,但是如果你打算更進(jìn)一步地了解JAR文件的細(xì)節(jié),你不妨閱讀“JSP WAR文件簡(jiǎn)介”。

【編輯推薦】

  1. 拋開JSP,直接從JSF入手
  2. JSF和JSP是一對(duì)新的搭檔
  3. 在JSP程序中Application使用淺析
  4. JavaBean實(shí)現(xiàn)JSP頁(yè)面和代碼分離
  5. 在JSF/JSP中集成FCKEditor
責(zé)任編輯:佚名 來(lái)源: builder
相關(guān)推薦

2009-07-02 08:50:01

JSP標(biāo)簽庫(kù)

2009-07-07 11:18:59

JSP Servlet

2009-07-07 17:37:32

JSP標(biāo)簽庫(kù)

2009-07-07 17:43:33

JSP系統(tǒng)

2009-07-03 11:46:43

JSP標(biāo)簽庫(kù)

2009-07-02 11:15:34

標(biāo)簽實(shí)例JSP網(wǎng)頁(yè)應(yīng)用

2009-07-02 11:25:33

JSP課程

2009-07-07 17:07:28

JSP標(biāo)簽

2011-12-26 10:11:08

JSP

2009-07-06 15:32:49

JSP應(yīng)用標(biāo)簽功能

2009-07-06 16:59:26

JSP自定義標(biāo)簽

2009-07-06 16:20:50

JSP自定義標(biāo)簽

2023-12-12 07:16:34

HTML標(biāo)簽開發(fā)

2009-06-05 10:12:36

Struts標(biāo)簽庫(kù)HTML標(biāo)簽

2009-06-05 09:24:53

struts標(biāo)簽jsp

2012-02-02 13:45:28

JavaJSP

2009-07-02 15:31:49

JSP標(biāo)簽

2009-06-30 10:40:25

JSP自定義標(biāo)簽

2009-06-03 09:44:30

JSTLJSP編程

2009-07-03 10:41:53

JSP對(duì)象
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)