国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

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

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

開(kāi)通VIP
自定義標(biāo)簽

自定義標(biāo)簽

 

1.  什么是自定義標(biāo)簽
答:1) 用戶自定義的Java語(yǔ)言元素, 實(shí)質(zhì)是運(yùn)行一個(gè)或者兩個(gè)接口的JavaBean;
   2) 可以非常機(jī)密地和JSP的表示邏輯聯(lián)系在一起,又具有和普通JavaBean相同的業(yè)務(wù)邏輯處理能力;
   2) 當(dāng)一個(gè)JSP頁(yè)面轉(zhuǎn)變?yōu)閟ervlet時(shí),其間的用戶自定義標(biāo)簽轉(zhuǎn)化為操作一個(gè)稱為標(biāo)簽hander的對(duì)象;
   3) 可操作默認(rèn)對(duì)象,處理表單數(shù)據(jù),訪問(wèn)數(shù)據(jù)庫(kù)以及其它企業(yè)服務(wù);                

2.  自定義標(biāo)簽庫(kù)的特點(diǎn)
答:1) 通過(guò)調(diào)用頁(yè)面?zhèn)鬟f參數(shù)實(shí)現(xiàn)定制;
   2) 訪問(wèn)所有對(duì)JSP頁(yè)面可能的對(duì)象;
   3) 修改調(diào)用頁(yè)面生成的響應(yīng);
   4) 自定義標(biāo)簽間可相互通信;
   5) 在同一個(gè)JSP頁(yè)面中通過(guò)標(biāo)簽嵌套,可實(shí)現(xiàn)復(fù)雜交互。

3.  如何使用自定義標(biāo)簽庫(kù)
答:1) 聲明標(biāo)簽庫(kù)
   2) 使標(biāo)簽庫(kù)執(zhí)行對(duì)Web應(yīng)用程序可用

4.  聲明標(biāo)簽庫(kù)
答:1) 使用taglib指令聲明標(biāo)簽庫(kù)
   2) 語(yǔ)法:<%@taglib uri="URI" prefix="pre" %>
      注意:a. uri屬性可以是絕對(duì)的,也可以是相對(duì)URL,該URL指向標(biāo)記庫(kù)描述符(TLD)文件;
            b. uri屬性也可以是一個(gè)并不存在的URL,該URL為web.xml文件中將標(biāo)記庫(kù)描述符(TLD)文件的絕對(duì)URL到本地系統(tǒng)的一個(gè)映射;
   3) 范例:<%@taglib uri="/WEB-INF/template.tld" prefix="test" %>
            <%@taglib uri="

5.  使標(biāo)簽庫(kù)執(zhí)行可用
答:方式一:在WEB-INF/classes目錄下部署標(biāo)記處理程序類;
   方式二:將標(biāo)記處理程序類打包成jar文件并置于WEB-INF/lib目錄。

6.  幾種典型的標(biāo)簽(疑問(wèn):可以有帶主體而沒(méi)有屬性的標(biāo)簽么?)
答:1) 不帶屬性和主體的簡(jiǎn)單標(biāo)簽:<mytaglibs:SomeTag/>;
   2) 不帶主體但有屬性的標(biāo)簽:<mytaglibs:SomeTag user="TonyDeng"/>;
   3) 帶有主體和屬性的標(biāo)簽:<mytaglibs:SomeTag user="TonyDeng">
                            ...// 標(biāo)簽體
                            </mytaglibs:SomeTag>;
   注意:a. 屬性列于start tag中,它是在標(biāo)記庫(kù)描述符(TLD)文件中指定,服務(wù)于標(biāo)記庫(kù)的自定義行為;
         b. 標(biāo)簽體位于start tag和end tag間,可以是任何合法的JSP內(nèi)容或者標(biāo)簽;

7.  定義標(biāo)簽
答:1) 開(kāi)發(fā)實(shí)現(xiàn)tag的類(tag handler);
   2) 編輯標(biāo)記庫(kù)描述符(TLD)文件;
   3) 在web.xml中為標(biāo)記庫(kù)描述符(TLD)文件的絕對(duì)URL建立一個(gè)映射(該步驟可選);

8.  標(biāo)記庫(kù)描述符(TLD)文件
答:1) 一個(gè)描述標(biāo)記庫(kù)的XML文件;
   2) 內(nèi)容開(kāi)始是整個(gè)庫(kù)的描述,然后是tag的描述;
   3) 標(biāo)記庫(kù)描述符(TLD)文件用于Web Container確認(rèn)tag以及JSP頁(yè)面發(fā)展工具;

9.  實(shí)現(xiàn)tag的類(tag handler)
答:1) 是一些在引用了標(biāo)簽的JSP頁(yè)面執(zhí)行期間被Web Container調(diào)用以求自定義標(biāo)簽值的對(duì)象;
   2) 必須實(shí)現(xiàn)Tag, SimpleTag和BodyTag之一;
   3) 可以繼承TagSupport和BodyTagSupport之一。

10. 標(biāo)簽庫(kù)的接口和類的繼承關(guān)系
答:表現(xiàn)形式一:
   a. 接口的繼承關(guān)系:
      ☉ interface javax.servlet.jsp.tagext.JspTag
         ☉ interface javax.servlet.jsp.tagext.SimpleTag
         ☉ interface javax.servlet.jsp.tagext.Tag
            ☉ interface javax.servlet.jsp.tagext.IterationTag
            ☉ interface javax.servlet.jsp.tagext.BodyTag
   b. 類的繼承關(guān)系:
      ☉ class javax.servlet.jsp.tagext.TagSupport (implements javax.servlet.jsp.tagext.IterationTag, java.io.Serializable)
         ☉ class javax.servlet.jsp.tagext.BodyTagSupport (implements javax.servlet.jsp.tagext.BodyTag)
      ☉ class javax.servlet.jsp.tagext.SimpleTagSupport (implements javax.servlet.jsp.tagext.SimpleTag)
   表現(xiàn)形式二:
                 (Interface)
                   JspTag
                     ↑
             |ˉˉˉˉˉˉˉˉ|    
        (Interface)      (Interface)
            Tag           SimpleTag ←--SimpleTagSupport
             ↑                          
             |                            
        (Interface)  
        IterationTag←--TagSupport
             ↑                ↑
             |                 |
        (Interface)            |
          BodyTag   ←--BodyTagSupport

11. 一個(gè)Tag處理程序類必須實(shí)現(xiàn)的方法
答:標(biāo)簽處理程序類型            方法
   Simple                      doStartTag, doEndTag, release
   Attributes                  doStartTag, doEndTag, set/getAttribute...release
   Body,No Itrative and        doStartTag, doEndTag, release
   Evaluation  
   Body, Itrative Evaluation   doStartTag, doAterTag, doEndTag, release
   Body, Interaction           doStartTag, doEndTag, release, doInitbody, doAfterBody

12. 簡(jiǎn)單的標(biāo)簽處理程序類
答:1) 必須實(shí)現(xiàn)Tag接口的doStartTag()和doEndTag()方法;
   2) 因?yàn)椴淮嬖贐ody,doStartTag()方法必須返回SKIP_BODY;
   3) 如其余頁(yè)面要執(zhí)行,doEndTag()方法返回EVAL_PAGE, 否則返回SKIP_PAGE;
   4) 對(duì)于每一個(gè)標(biāo)簽屬性,你必須在標(biāo)簽處理程序類里定義一個(gè)特性以及get和set方法以一致于JavaBeans體系慣例

13. 帶Body的自定義標(biāo)簽
答:1) 必須實(shí)現(xiàn)Tag接口的doStartTag()和doEndTag()方法;
   2) 可以實(shí)現(xiàn)IterationTag接口的doAfterBody()方法;
   3) 可以實(shí)現(xiàn)BodyTag接口的doInitBody和setBodyContent方法;
   4) doStartTag方法可以返回SKIP_BODY、EVAL_BODY_INCLUDE、或者EVAL_BODY_BUFFERED(當(dāng)你想使用BodyContent);
   5) doEndTag方法可以返回SKIP_PAGE或EVAL_PAGE;
   6) doAfterBody方法可以返回EVAL_BODY_AGAIN, SKIP_BODY;

14. 定義腳本變量的標(biāo)簽(迭代的標(biāo)簽庫(kù))
答:1) 定義腳本標(biāo)簽的二個(gè)步驟:
      a. 在標(biāo)記庫(kù)描述符(TLD)文件中列明腳本變量;
      b. 定義標(biāo)簽擴(kuò)展信息類(TEI)并且在TLD文件中包括這個(gè)類元素(tei-class);
   2) 變量必須在標(biāo)簽處理程序類中使用pageContext.setAttribute()方法設(shè)置;
   3) 標(biāo)簽擴(kuò)展信息類(TEI)必須繼承TagExtraInfo以及覆蓋getVariableInfo()方法;
   4) 變量的范圍可以是AT_BEGIN, NESTED, AT_END(標(biāo)簽擴(kuò)展信息類(TEI)的VariableInfo中定義)之一;

15. 腳本變量的有效性
答:變量     |   有效性                    
   ---------------------------------------
   NESTED   | 標(biāo)簽中的參數(shù)在starttag到endtag之間是有效的
   AT_BEGIN | 標(biāo)簽中的參數(shù)在標(biāo)簽的開(kāi)始到JSP頁(yè)面結(jié)束是有效的
   AT_END   | 標(biāo)簽中的參數(shù)在標(biāo)簽的結(jié)束到JSP頁(yè)面結(jié)束是有效的

16.  Tag接口的方法
答:interface javax.servlet.jsp.tagext.Tag
   ------------------------------------------------------
   +EVAL_BODY_INCLUDE:int
   +EVAL_PAGE:int
   +SKIP_BODY:int
   +SKIP_PAGE:int
   ------------------------------------------------------
   +release():void
   +getParent():javax.servlet.jsp.tagext.Tag
   +setParent(javax.servlet.jsp.tagext.Tag):void
   +doEndTag():int
   +doStartTag():int
   +setPageContext(javax.servlet.jsp.PageContext):void

17.  Tag的生命周期
答:1) setPageContext(javax.servlet.jsp.PageContext):void
   2) setParent(javax.servlet.jsp.tagext.Tag):void
   3) //setAttribute:void
   4) doStartTag():int
   5) doEndTag():int
   6) release():void

18.  BodyTag和Tag接口的關(guān)系
答:interface javax.servlet.jsp.tagext.BodyTag      -->     interface javax.servlet.jsp.tagext.Tag
   ------------------------------------------
   +EVAL_BODY_AGAIN:int
   ------------------------------------------
   +doInitBody():void
   +setBodyContent(javax.servlet.jsp.tagext.BodyContext):void
   +doAfterBody():int

19.  BodyTag的處理過(guò)程
答:1) setPageContext(javax.servlet.jsp.PageContext):void
   2) setParent(javax.servlet.jsp.tagext.Tag):void
   3) //setParent()
   4) doStartTag():int
   5) setBodyContent(javax.servlet.jsp.tagext.BodyContent):void
   6) doInitBody():void
   7) doAfterBody():int
   doEndTag():int
   9) release():void

20.  SimpleTag接口的方法
答:javax.servlet.jsp.tagext.SimpleTag
   ------------------------------------------
   +doTag():void
   +getParent():JspTag
   +setJspBody(JspFragment jspBody):void
   +setJspContext(JspContext pc):void
   +setParent(JspTag parent):void

21.  SimpleTage接口的生命周期
答:1) new:
      每次遇到標(biāo)簽,容器構(gòu)造一個(gè)SimpleTag的實(shí)例,這個(gè)構(gòu)造方法沒(méi)有參數(shù)。和紅典的標(biāo)簽一樣,SimpleTag不能緩沖,故不能重用,每次都需要構(gòu)造新的實(shí)例。
   2) setJspContext()、setParent(): 只有這個(gè)標(biāo)簽在另一個(gè)標(biāo)簽之內(nèi)時(shí),才調(diào)用setParent()方法;
   3) 設(shè)置屬性:調(diào)用每個(gè)屬性的setter方法;
   4) setJspBody();
   5) doTag(): 所有標(biāo)簽的邏輯、迭代和Body計(jì)算,都在這個(gè)方法中;
   6) return

打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
java自定義標(biāo)簽庫(kù)的開(kāi)發(fā)
JSP/Servlet/JSF:標(biāo)簽庫(kù)的深入研究
創(chuàng)建JSP自定義標(biāo)簽
自定義JSP標(biāo)簽
JSP 總結(jié)
[教程]自定義JSP中的Taglib標(biāo)簽之五自定義標(biāo)簽之SimpleTagSupport使用
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服