主頁 > 知識庫 > jsp 定制標(biāo)簽(Custom Tag)

jsp 定制標(biāo)簽(Custom Tag)

熱門標(biāo)簽:Linux服務(wù)器 科大訊飛語音識別系統(tǒng) 阿里云 團購網(wǎng)站 銀行業(yè)務(wù) 電子圍欄 服務(wù)器配置 Mysql連接數(shù)設(shè)置
怎樣自己定制標(biāo)簽(Custom Tag)
(整理的學(xué)習(xí)筆記)
步驟1、創(chuàng)建一個Tag handler class(標(biāo)記處理器類)
package javax.servlet.jsp.tagext
開發(fā)空Body的標(biāo)簽處理器類----->1)implements Tag 2)extends TagSupport
空Body的標(biāo)簽處理器類需要覆蓋方法:
doStartTag()
返回值:Tag.SKIP_BODY
doEndTag()
返回值:
1)Tag.EVAL_PAGE:讓標(biāo)簽下面的內(nèi)容繼續(xù)執(zhí)行
2)Tag.SKIP_PAGE:讓標(biāo)簽下面的內(nèi)容不執(zhí)行
開發(fā)帶Body的標(biāo)簽處理器類----->1)implements BodyTag 2)extends BodyTagSupport
帶Body的標(biāo)簽處理器類需要覆蓋方法
doStartTag()
返回值:
BodyTag.SKIP_BODY:執(zhí)行后直接調(diào)用doEndTag()方法
BodyTag.EVAL_BODY_INCLUDE:執(zhí)行后直接調(diào)用doAfterBody()方法
BodyTag.EVAL_BODY_BUFFERED:
doEndTag()
返回值:
BodyTag.EVAL_PAGE:標(biāo)簽下面的內(nèi)容繼續(xù)執(zhí)行
BodyTag.SKIP_PAGE:標(biāo)簽下面的內(nèi)容不執(zhí)行
doAfterBody()
返回值:
BodyTag.SKIP_BODY:執(zhí)行后調(diào)用doEngTag()方法
BodyTag.EVAL_BODY_AGAIN:執(zhí)行后調(diào)用doAfterBody()方法
步驟2、創(chuàng)建一個tld文件(tag library descriptor)
一個XML格式的文件,用于對標(biāo)記進行描述
通常放在WEB-INF目錄下 (/WEB-INF/*.tld)
abc.tld
?xml version="1.0" encoding="UTF-8" ?>
!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
!-- template test -->
taglib>
tlib-version>1.0/tlib-version>
jsp-version>1.2/jsp-version>
short-name>tagSample/short-name>
uri>/tagSample/uri>
description>A blank tag library template./description>
tag>
name>welcome/name>
tag-class>tagapp.HelloTag/tag-class>
body-content>empty/body-content>
display-name>my first tag/display-name>
small-icon> /small-icon>
large-icon> /large-icon>
description> /description>
attribute>
name>name/name>
required>true/required>
rtexprvalue>true/rtexprvalue>
type>java.lang.String/type>
/attribute>
/tag>
/taglib>
步驟3.創(chuàng)建一個JSP文件
%@taglib uri="[tld_url]" prefix=""%>
%@taglib uri="/WEB-INF/abc.tld" prefix="mike"%>
...
mike:welcome name=""/>
uri的值可以是:
A、/WEB-INF/mytag.tld -----> uri="/WEB-INF/mytag.tld"
B、tld文件中 uri>/tagSample/uri> ------> uri="/tagSample"
C、利用web.xml文件映射tld文件與taglib-uri的值 -----> uri="/abc"
taglib>
taglib-uri>/abc/taglib-uri>
taglib-location>/WEB-INF/mytag.tld/taglib-location>
/taglib>
帶Body的標(biāo)簽處理器類的方法的注釋:
doStartTag()
return value: SKIP_BODY 空BODY標(biāo)記
EVAL_BODY_INCLUDE 帶BODY標(biāo)記,執(zhí)行流程進入doAfterBody
EVAL_BODY_BUFFERED 帶BODY標(biāo)記,執(zhí)行流程進入setBodyContent
doEndTag()
return value: SKIP_PAGE 忽略標(biāo)記后剩余的JSP內(nèi)容
EVAL_PAGE 繼續(xù)執(zhí)行標(biāo)記后剩余的JSP內(nèi)容
doAfterBody()
return value: SKIP_BODY 結(jié)束doAfterBody()方法,流程進入doEndTag()
EVAL_BODY_AGAIN 繼續(xù)執(zhí)行doAfterBody()方法
SimpleTagSupport
較好的練習(xí)題:
一、
1、模仿jstl標(biāo)簽庫開發(fā)下列標(biāo)簽:
1)sql:setDataSource>
屬性有:
driver:必須的,可以用表達式
url;必須的,可以用表達式
user:必須的,可以用表達式
password:必須的,可以用表達式
2)sql:query>
屬性有:
dataSource:必須的,可以用表達式
sql:必須的,可以用表達式
3)sql:update>
屬性有:
dataSource:必須的,可以用表達式
sql:必須的,可以用表達式
2、開發(fā)類似于c:forEach>的標(biāo)簽,可以遍歷一個集合對象(可選,如不能完成,可直接利用jstl的標(biāo)簽來完成)
您可能感興趣的文章:
  • JSP自定義分頁標(biāo)簽TAG全過程
  • JSP自定義標(biāo)簽Taglib實現(xiàn)過程重點總結(jié)
  • JS 創(chuàng)建對象(常見的幾種方法)
  • JavaScript 三種創(chuàng)建對象的方法
  • Js動態(tài)創(chuàng)建div
  • js實現(xiàn)創(chuàng)建刪除html元素小結(jié)
  • js 用CreateElement動態(tài)創(chuàng)建標(biāo)簽示例
  • javascript轉(zhuǎn)換字符串為dom對象(字符串動態(tài)創(chuàng)建dom)
  • JS動態(tài)創(chuàng)建DOM元素的方法
  • JS中動態(tài)創(chuàng)建元素的三種方法總結(jié)(推薦)
  • 淺析JS動態(tài)創(chuàng)建元素【兩種方法】
  • JS創(chuàng)建Tag標(biāo)簽的方法詳解

標(biāo)簽:衢州 棗莊 萍鄉(xiāng) 江蘇 大理 廣元 衡水 蚌埠

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《jsp 定制標(biāo)簽(Custom Tag)》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266