欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
標簽庫
什么是標簽庫?
JSP標簽庫(也稱(chēng)自定義標簽庫)可看成是一種通過(guò)JavaBean生成基于XML的腳本的方法。從概念上講,標簽就是很簡(jiǎn)單而且可重用的代碼結構。比方說(shuō),在我們最新發(fā)布的JSPKit(在JSP Insider內)中,使用XML標簽實(shí)現了對XML文檔的輕松訪(fǎng)問(wèn)。請看以下的清單A。
清單A:執行XML/XSL 轉換的示例標簽及其所在的HTML頁(yè)面
<%@ taglib uri="http://www.jspinsider.com/jspkit/JAXP" prefix="JAXP"%>
<JAXP:TransformerTag>
<JAXP:XMLFile>c:/xml/example.xml</JAXP:XMLFile>
<JAXP:XSLFile>c:/xml/example.xsl</JAXP:XSLFile>
</JAXP:TransformerTag>

   以上的示例使用了簡(jiǎn)單的標簽來(lái)訪(fǎng)問(wèn)處在幕后的更強大代碼,標簽部分的語(yǔ)句首先裝載了一個(gè)XML文件,然后應用了一個(gè)XSL文件來(lái)將XML文件中的內容轉換成某個(gè)表現格式,并發(fā)送給客戶(hù)端,這一切僅僅只是用了一個(gè)很簡(jiǎn)單的標簽。定制標簽使得JSP項目中很容易創(chuàng )建重用的開(kāi)放源代碼模塊,而你所需要的只是標簽庫和它的文檔說(shuō)明。

標簽庫的重要特性

1.易于安裝在多個(gè)項目上
標簽很容易從一個(gè)JSP項目遷移到其他項目。一旦建立了一個(gè)標簽庫,則只需要將所有的東西打包為一個(gè)JAR文件,你就可以在任何的JSP項目中重新使用。因為標簽可以重新使用,標簽庫可以輕松地用于你自己的項目,所以標簽庫越來(lái)越通行。目前,最好的標簽資源可以在JSPTags.com這個(gè)站點(diǎn)找到。


2.擴展JSP      標簽庫可以具備JSP規范(JSP 1.2)中的任何特性和功能,你可以無(wú)限制地擴展和增加JSP的功能,而無(wú)需要等待下一版本JSP的出現。例如,你對JSP的include調用不太滿(mǎn)意。你可以建立自己的include標簽,該標簽執行的是你自己的規范。


3.容易維護

標簽庫使得JSP的web應用程序非常易于維護,原因有:
(1)標簽應用簡(jiǎn)單,對任何人而言都很容易使用、易于理解。
(2)所有的程序邏輯代碼都集中放在的標簽處理器和JavaBeans中。這意味著(zhù)你在升級代碼時(shí),無(wú)需要對每個(gè)使用該代碼的頁(yè)面進(jìn)行修改,你只需要修改集中的代碼文件便可。
(3)如果需要加入新的功能,你也無(wú)需修改任何已經(jīng)存在的頁(yè)面,可以在標簽中加入額外的屬性,從而引進(jìn)新的行為,而其它舊的屬性不變,這樣所有舊的頁(yè)面還可以正常工作。 例如你有一個(gè)讓所有文本變藍的標簽:
<BlueText>My Text</BlueText>
但在后來(lái)項目中,你又想讓藍色變暗。你可以保留原有的標簽,只要為其增加一個(gè)新的屬性:shade ,如下所示:
<BlueText shade="teal">My Text</BlueText>
所有舊的標簽仍然可以產(chǎn)生藍色的文本,但現在你可以使用同一標簽來(lái)產(chǎn)生變暗的藍色文本了。
(4)標簽提升了代碼的重用性。那些經(jīng)過(guò)多次測試和使用的代碼肯定具有更少的bug。所以,使用定制標簽的JSP頁(yè)面也同樣具有更少的缺陷,維護起來(lái)自然方便多了。

4.快速的開(kāi)發(fā)時(shí)間
標簽庫提供一個(gè)簡(jiǎn)單的方式來(lái)重用代碼。在服務(wù)器端的語(yǔ)言中,其中一個(gè)標準的重用代碼方式是使用模板。相對于使用模板庫,標簽庫是一個(gè)更好的解決辦法。使用模板庫,你必須為每個(gè)項目修改模板或者且建立嚴格的界面,而標簽庫則沒(méi)有這些限制,并且擁有所有面向對象的好處,可以做到靈活和更有擴展性,而且,通過(guò)重用代碼,你可以花費更少的時(shí)間來(lái)做開(kāi)發(fā),更多的時(shí)間可以用在設計你的web應用上。標簽庫的接口也很簡(jiǎn)單,非常容易做插入、使用和調試。

標簽的組成結構

雖然標簽庫非常易于使用,不過(guò)要建立一個(gè)標簽庫的內部實(shí)現機制還是頗復雜的,起碼要比建立一個(gè)簡(jiǎn)單的JavaBean復雜。這個(gè)復雜是來(lái)自于標簽庫是由幾部分構成的。不過(guò),你只需要掌握了Java和JSP的知識就夠了。
一個(gè)簡(jiǎn)單的標簽由下面的元素構成:
1.JavaBean:為了得到Java與生具來(lái)的面向對象的好處,可重用的代碼應該放到一個(gè)獨立的代碼容器中,也就是JavaBean。這些JavaBeans并不是標簽庫必不可少的一部分,但它們是標簽庫用來(lái)執行所分配任務(wù)的基礎代碼模塊。
2.標簽處理器:標簽處理器是標簽庫的真正核心。一個(gè)標簽處理器(tag handler)引用它所需要的任何外部資源(JavaBean)并且負責訪(fǎng)問(wèn)JSP頁(yè)面的信息(PageContext對象)。而JSP頁(yè)面則把頁(yè)面上設置的標簽屬性和標簽體中的內容都傳遞給標簽處理器,當標簽處理器完成其處理過(guò)程后,它就會(huì )把處理后的輸出結果回送給JSP頁(yè)面做進(jìn)一步處理。
3.標簽庫描述符(TLD文件):這是一個(gè)簡(jiǎn)單的XML文件,它記錄著(zhù)標簽處理器的屬性、信息和位置等信息。JSP容器通過(guò)這個(gè)文件來(lái)得知從哪里及如何調用一個(gè)標簽庫。
4.Web站點(diǎn)的web.xml文件:這是Web站點(diǎn)的初始化文件,在這個(gè)文件中,需要定義了Web站點(diǎn)中用到的自定義標簽,以及用來(lái)描述每個(gè)自定義標簽的tld文件。
5.發(fā)布文件(WAR或JAR文件):如果你想重用自定義標簽的話(huà),你需要一個(gè)方法來(lái)將它由一個(gè)項目遷移到其他項目中去。將標簽庫打包為一個(gè)JAR文件是一個(gè)簡(jiǎn)單而且有效的方式。
6.JSP頁(yè)面上的標簽庫聲明:要在JSP頁(yè)面中的使用某個(gè)自定義標簽的話(huà),需要使用標簽庫標示符在頁(yè)面上進(jìn)行聲明。


看來(lái)要做的工作很多,剛開(kāi)始用的時(shí)候當然會(huì )有點(diǎn)棘手,不過(guò)其實(shí)并不是很難。它的要點(diǎn)并不在于編碼,而是在于如何將各部分正確地組織起來(lái)。這種層次性的結構是很重要的,它令標簽的使用靈活和更容易轉移。更重要的事,這些層次可以讓整個(gè)建立標簽庫的過(guò)程都能通過(guò)JSP IDE(JSP的集成開(kāi)發(fā)環(huán)境)自動(dòng)完成。JSP IDE更可以自動(dòng)完成創(chuàng )建定制標簽的大部分工作,而你自己則只需要負責建立代碼和標簽處理器。

(注意:一個(gè)標簽處理器僅定義一個(gè)自定義標簽;一個(gè)標簽庫是幾個(gè)處理相同任務(wù)的標簽處理器的集合)

建立你的第一個(gè)標簽

以下將一步一步地教你如何建立自定義的標簽,具體的例子是擴展JSP,令它擁有自己的HTML編碼功能。這個(gè)功能將所有的<和>字符用 HTML代碼來(lái)代替。它可以很容易地擴展為做其它的編碼處理。為了簡(jiǎn)化,這個(gè)例子只解釋了建立自定義標簽的基本要素。

創(chuàng )建JavaBean

代碼中的任何可重用部分都應該放到一個(gè)JavaBean中。這一點(diǎn)是很重要的。這樣你就可以在其他項目中重用這些代碼了。由于任何放置在標簽處理器內的代碼在標簽外都是不可以重用的,因此將可重用的代碼部分獨立開(kāi)來(lái)是很重要的。在這個(gè)例子總,為HTML編碼的邏輯是常用的,因此放到JavaBean中,請參看清單B
清單B:HTML編碼JavaBean
/* HTML_Format.java */
public class HTML_Format extends Object implements java.io.Serializable {

/** 創(chuàng )建新的HTML_Format */
public HTML_Format() {}

/** 將一個(gè)字符串中所有的所有 < 和 > 字符用響應的HTML編碼代替 */
public String HTML_Encode(String as_data)
{
int li_len = as_data.length();

/*string buffer的長(cháng)度要比原來(lái)的字符串長(cháng)*/
StringBuffer lsb_encode = new StringBuffer(li_len + (li_len/10));

/* 循環(huán)替換全部的< 和 > 字符 */
for( int li_count = 0 ; li_count < li_len ; li_count++)
{ String ls_next = String.valueOf(as_data.charAt(li_count));
if (ls_next.equals("<")) ls_next = "<";
if (ls_next.equals(">")) ls_next = ">";
lsb_encode.append( ls_next );
}

return( lsb_encode.toString() );
}
}


創(chuàng )建標簽處理器
標簽處理器的代碼請參看清單C:
清單C:HTML編碼標簽處理器
import java.io.IOException;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class HTML_FormatTag extends BodyTagSupport
{
/* 1) 在標簽末將會(huì )調用這個(gè)函數 */
public int doEndTag() throws JspTagException
{
try
{ /* 2)得到標簽中的文本 */
BodyContent l_tagbody = getBodyContent();
String ls_output = "";

/* 3)如果標簽體有文本,就處理它 */
if(l_tagbody != null)
{ HTML_Format l_format = new HTML_Format();
/* 3a) 將標簽體的內容轉換為一個(gè)字符串 */
String ls_html_text = l_tagbody.getString();
ls_output = l_format.HTML_Encode(ls_html_text);
}
/* 4)將結果寫(xiě)回到數據流中 */
pageContext.getOut().write(ls_output.trim());
}
catch (IOException e)
{ throw new JspTagException("Tag Error:" + e.toString());
}

/* 讓JSP繼續處理以下頁(yè)面的內容 */
return EVAL_PAGE;
}
}

這個(gè)處理很簡(jiǎn)單,它包括有:
1.讀入位于開(kāi)始和結束標簽間的文本
2.調用html編碼函數
3.將結果返回到JSP頁(yè)面。

創(chuàng )建標簽描述符

我們需要描述自定義標簽以讓系統知道如何處理。該描述文件的后綴為.tld,TLD文件通常就以標簽處理器命名,并存放在“/WEB-INF/”目錄之下。請參看清單D。
清單D:HTML編碼標簽描述器
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<TAGLIB>
<TLIBVERSION>1.0</TLIBVERSION>
<JSPVERSION>1.1</JSPVERSION>
<SHORTNAME>HTML_FormatTag</SHORTNAME>
<URI></URI>
<INFO>HTML Encoding Tag </INFO>

<TAG>
<NAME>HTMLEncode</NAME>
<TAGCLASS>HTML_FormatTag</TAGCLASS>
<INFO>Encode HTML</INFO>
</TAG>

</TAGLIB>

更新Web XML文件

現在可以告訴JSP容器如何使用標簽庫了。為此要修改web.xml文件,具體說(shuō)來(lái)是要在其中加入一個(gè)taglib的項目來(lái)注冊該標簽庫,并為標簽分配一個(gè)URI。URI是Web站點(diǎn)上唯一應用于這一特定標簽的索引。由于標簽今后還可能用在不同的Web站點(diǎn)上,所以你最好采用完整的URL和/或者包名字(package name)來(lái)保證這一唯一性。這個(gè)例子是簡(jiǎn)化了,示例代碼請參看清單E。
清單E:修改web.xml文件
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">

<WEB-APP>

<TAGLIB>
<TAGLIB-URI>
HTMLEncode
</TAGLIB-URI>
<TAGLIB-LOCATION>
/WEB-INF/HTML_FormatTag.tld
</TAGLIB-LOCATION>
</TAGLIB>

</WEB-APP>

使用新的標簽

自定義的標簽設置好后,就可以用在你的JSP頁(yè)面上了。要做到這一點(diǎn),只需要在頁(yè)面上使用taglib指示命令聲明所要采用的標簽即可。標簽通過(guò)其唯一的 URI被索引,然后被分配給一個(gè)名字空間前綴(prefix)。這一前綴并沒(méi)有什么特別的意義,只要它不與其它的名字空間沖突便可,可以任意。請參看以下的清單F和G。

清單F:在一個(gè)JSP頁(yè)面上使用HTML編碼標簽

<%@ taglib uri="HTMLEncode" prefix="Examples" %>
<PRE>
<?XML:NAMESPACE PREFIX = Examples /><Examples:HTMLEncode>
< Hello , Simple sample >
</Examples:HTMLEncode>
</PRE>

清單G:范例代碼的輸出
< Hello , Simple sample >
which displays as:
< Hello , Simple sample >

通過(guò)這個(gè)標簽,我就將該頁(yè)面的所有代碼編碼了。所有的自定義標簽都是在服務(wù)器上處理的。這意味著(zhù)你將不會(huì )在輸出的頁(yè)面上看到自定義的標簽。

正如你所看到的那樣,建立標簽并非難事。最麻煩的是學(xué)習標簽處理器的整個(gè)細節。這是一個(gè)很強大的功能,我們不過(guò)是觸及了皮毛。由于這一過(guò)程需要采取的步驟很多,所以剛入門(mén)的JSP程序員可能在建立標簽的時(shí)候會(huì )覺(jué)得很困惑。


結論

標簽庫是JSP最重要的特性之一,它還處在不斷的發(fā)展中。它的確是一個(gè)新事物,因此還沒(méi)有被廣泛采用,不過(guò)自定義標簽庫已經(jīng)剝去了它的神秘面紗,越來(lái)越多的開(kāi)發(fā)者也開(kāi)始關(guān)注和使用它了。在2001年末,可預料標簽庫將是許多JSP項目中的一個(gè)很常見(jiàn)的特性。

在這篇文章中只簡(jiǎn)要地討論了標簽庫的好處。標簽庫實(shí)際上還有許多其它強大的功能。標簽庫促使JSP開(kāi)發(fā)進(jìn)入了前所未有的新天地。對JSP開(kāi)發(fā)人員來(lái)說(shuō)這確實(shí)是一種很令人振奮的新技術(shù),因為他們得到了一個(gè)可將JSP轉到各個(gè)應用并且建立任何類(lèi)型web應用的工具。標簽庫讓JSP變成了最豐富、最具動(dòng)態(tài)開(kāi)發(fā)能力的、強大的Web編程環(huán)境。它的功能只受我們的想象和創(chuàng )造力限制
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
JSP的自定義標簽
JSTL 標簽大全詳解
JSP與XML的結合
JavaWeb之JSP自定義標簽
<%@ taglib uri=“” prefix=""%> 使用
Struts1.x系列教程(4):標簽庫概述與安裝
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久