<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    飛艷小屋

    程序--人生--哲學___________________歡迎艷兒的加入

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      52 Posts :: 175 Stories :: 107 Comments :: 0 Trackbacks

    jsp自定義標簽

    關鍵詞jsp自定義標簽 ?? ??????????????????????????????????????

    定義標簽

    要定義標簽,需要:

    ·? 為該標簽開發一個tag handler和helper類

    ·? 在標簽庫描述符中聲明這個標簽

    本節描述標簽handler和TLD的屬性,并解釋如何為在前面幾節中介紹的標簽開發tag handler和庫描述符元素。

    標簽handler

    標簽handler是由Web容器調用的一個對象,用于執行帶有自定義標簽的JSP頁面時對這個標簽進行判斷。標簽handler必須實現Tag或者BodyTag接口。接口可以用于接受現有Java對象并使它成為標簽handler。對于新創建的處理器,可以用TagSupportBodyTagSupport類作為基類。這些類和接口包含在javax.servlet.jsp.tagext包中。

    JSP頁面的servlet在對標簽處理的不同階段調用由Tag和BodyTag接口定義的標簽handler。遇到自定義標簽的開始標簽時,JSP頁面的servlet調用方法以初始化相應的handler,然后調用handler的doStartTag方法。遇到自定義標簽的結束標簽時,調用處理器的doEndTag方法。在標簽handler需要與標簽的正文交互時調用其他方法,見帶正文的標簽。為了提供標簽handler的實現,必須實現在處理標簽的不同階段調用的方法,在表16-1中匯總了這些方法。

    16-1標簽handler方法

    標簽handler類型

    方法

    簡單

    doStartTag, doEndTag, release

    屬性

    doStartTag, doEndTag, set/getAttribute1...N, release

    正文、判斷且無交互

    doStartTag, doEndTag, release

    正文、迭代判斷

    doStartTag, doAfterBody, doEndTag, release

    正文、交互

    doStartTag, doEndTag, release, doInitBody, doAfterBody, release

    標簽handler可以使用一個能讓它得以與JSP頁面通信的API。到API的入口點是頁面上下文對象(javax.servlet.jsp.PageContext),通過它標簽handler可以獲取JSP頁面能夠訪問的所有其他隱式對象(請求、會話和應用程序)。

    隱式對象可以有與其相關聯的命名屬性。可以用[set|get]Attribute方法訪問這種屬性。

    如果標簽是嵌入的,標簽handler還可以訪問與外圍標簽關聯的handler稱為parent)。

    一組相關的標簽handler類(標簽庫)一般是打包的且作為JAR文檔部署。

    標簽庫描述符

    標簽庫描述符(TLD)是一個描述標簽庫的XML文檔。TLD包含有關整個庫以及庫中包含的每一個標簽的信息。Web容器用TLD驗證標簽,JSP頁面開發工具也使用TLD。

    TLD文件名必須有擴展名.tld。TLD文件也儲存在WAR文件的WEB-INF目錄中或者在WEB-INF的子目錄中。

    TLD必須以指定XML的版本和文檔類型定義(DTD)的XML文檔序言(prolog)開始。

    <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

    Tomcat支持版本 1.1和1.2的DTD。不過,本章所討論的是1.2版本,因為在開發的所有標簽庫中都應該使用最新的版本。模板庫TLDtutorial-template.tld符合版本1.2。Struts庫TLD符合版本1.1的DTD,它的元素要少,且其中一些元素使用了稍微不同的名字。

    TLD的根是taglib元素。表16-2中列出了taglib的子元素:

    16-2 taglib子子元素?

    元素

    說明

    tlib-version

    標簽庫的版本

    jsp-version

    這個標簽庫要求的JSP規范版本

    short-name

    JSP頁面編寫工具可以用來創建助記名的可選名字

    uri

    唯一標識該標簽庫的的URI

    display-name

    將由工具顯示的可選名

    small-icon

    將由工具使用的可選小圖標

    large-icon

    可被工具使用的可選大圖標

    description

    可選的標簽特定信息

    listener

    listener元素

    tag

    tag元素

    ?

    listener元素

    標簽庫可以指定一些事件監聽器類(見處理Servlet生命周期事件)。這些監聽器在TLD中作為listener元素列出,Web容器將初始化監聽器類并以類似在WAR級定義的監聽器的方式注冊它們。與WAR級監聽器不同,這里沒有指定標簽庫監聽器注冊的順序。listener元素的唯一子元素是listener-class元素,它必須包含監聽類的完全限定名。

    tag元素

    庫中的每一個標簽都由給出其名字和其標簽handler的類、在由標簽創建的腳本變量上的信息以及標簽屬性上的信息描述。腳本變量信息可以在TLD中直接給出,也可以通過tag extra info類給出(見定義腳本變量的標簽)。每一個屬性聲明包含指明屬性是否是必需的、其值是否可以由請求時表達式確定以及屬性類型的內容(見屬性元素)。

    在tag元素中的TLD中指定標簽。在表16-3中出了tag的子元素:

    16-3 標簽子元素

    元素

    說明

    name

    唯一標簽名

    tag-class

    標簽handler類的完全限定名

    tei-class

    javax.servlet.jsp.tagext.TagExtraInfo的可選子類。見提供有關腳本變量的信息

    body-content

    正文內容類型。見body-conten元素body-content元素

    display-name

    由工具顯示的可選名

    small-icon

    可以由工具使用的小圖標

    large-icon

    可以由工具使用的大圖標

    description

    可選的標簽特定的信息

    variable

    可選的腳本變量信息。見提供有關腳本變量的信息

    attribute

    標簽屬性信息。見Attribute 元素

    下面幾節描述開發在標簽類型中介紹的每一種類型的標簽所需要的方法和TLD。

    簡單標簽

    標簽handler

    簡單標簽的handler必須實現Tag接口的doStartTag和doEndTag方法。在遇到開始標簽時調用doStartTag方法。因為簡單標簽沒有正文,所以這個方法返回SKIP_BODY。在遇到結束標簽時調用doEndTag方法。如果要對頁面的其他部分進行判斷,則doEndTag方法需要返回EVAL_PAGE,否則,它就返回SKIP_PAGE。

    在第一節討論的簡單標簽

    <tt:simple />

    由下列標簽handler實現:

    public SimpleTag extends TagSupport {
    ??public int doStartTag() throws JspException {
    ????try { ??????pageContext.getOut().print("Hello.");
    ????} catch (Exception ex) {
    ??????throw new JspTagException("SimpleTag: " +
    ????????ex.getMessage()); ????}
    ????return SKIP_BODY; ??}
    ??public int doEndTag() {
    ????return EVAL_PAGE;
    ??}
    }

    body-content元素

    沒有正文的標簽必須用body-content元素聲明它們的正文內容是空的:

    <body-content>empty</body-content>

    posted on 2006-08-11 17:08 天外飛仙 閱讀(928) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲国产综合精品| 亚洲国产精品国自产电影| 亚洲午夜精品久久久久久app | 人人爽人人爽人人片av免费 | 亚洲精品中文字幕无码蜜桃| 男人和女人高潮免费网站| 亚洲区日韩区无码区| 成人国产网站v片免费观看 | 亚洲av永久无码制服河南实里| a免费毛片在线播放| 亚洲色大成网站www永久一区| 好猛好深好爽好硬免费视频| 亚洲人成人77777网站| 一区二区三区福利视频免费观看| 亚洲一区二区三区在线观看精品中文| 97超高清在线观看免费视频| 亚洲av最新在线网址| 2015日韩永久免费视频播放 | 免费下载成人电影| 亚洲人av高清无码| 久久精品国产亚洲一区二区三区| 国产免费久久精品99久久| 亚洲av永久无码制服河南实里 | 99re免费视频| 亚洲毛片基地4455ww| 在线观看国产情趣免费视频| 人人爽人人爽人人片A免费| 亚洲成av人影院| 成年女人18级毛片毛片免费| 老司机午夜性生免费福利| 亚洲色偷偷综合亚洲AVYP| 麻豆视频免费播放| 国产综合成人亚洲区| 国产亚洲精品资源在线26u| 午夜国产精品免费观看| 无人视频在线观看免费播放影院| 国产亚洲综合一区柠檬导航| 亚欧免费视频一区二区三区| 免费夜色污私人影院网站| 久久亚洲AV成人无码| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 |