想飛就別怕摔

          大爺的并TM罵人

          簡單的標簽編程【學習筆記】

          創建和使用一個Tag Library的基本步驟

          1、創建標簽的處理類(Tag Handler Class)
          2、創建標簽庫描述文件(Tag Library Descrptor File)
          3、在web.xml文件中配置元素
          4、在JSP文件中引人標簽庫


          標簽庫程序應該有一下幾部分組成
              標簽的具體實現文件(*.java)
              標簽的描述文件(*.tld)
             如果需要可以在web.xml中進行配置
              在jsp中通過標簽進行自定義標簽的調用
          *.tld文件是標簽的描述文件,此文件對標簽庫的運行起決定性作用。*.tld文件也是一個XML文件,如果是使用XML,則需要DTD、SCHEMA支持。

          標簽庫的接口和類的繼承關系:
          JsTag<interface>←←SimpleTag<interface>←←SimpleTagSupport<class>
          JsTag<interface>←←Tag<interface>←←Iterater Tag<interface>←←TagSupport<class>←←BodyTagSupport<class>

          幾種典型的標簽:

              不帶屬性和主體的簡單標簽:<mytaglibs:SomeTag/>
              有屬性沒有主體的標簽:   <mytaglibs:SomeTag user="hellking"/>
              帶有主體和屬性的標簽:   <mytaglibs:SomeTag user="hellking"/>主體部分可以是jsp內容或標簽</mytaglibs:SomeTag>

           傳統的標簽的生命周期:

              1.setPageContext:當容器創建一個新的標簽后,通過setPageContext來設置標簽頁面的上下文;
              2.setParent:使用setParent方法設置一個標簽的上一級標簽,如果沒有上一級,設為NULL;
              3.setAttribute:設置標簽的屬性,這個屬性在標簽描述文件中定義,如果沒有定義屬性,則不用調用此方法;
              4.doStartTag():調用doStartTag()方法,當返回EVAL_BODY_INCLUDE時,就計算body,返回SKIP_BODY反之;
              5.doEndTag():調用doEndTag()方法,當返回EVAL_PAGE時,容器將在標簽結束時繼續計算JSP的其他部分,SKIP_PAGE反之;
              6.release():調用release()方法釋放標簽程序占用的任何資源。

           1 <?xml version="1.0" encoding="UTF-8"?>
           2 <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
           3                         "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
           4 <taglib>
           5  <tlib-version>1.0</tlib-version>
           6  <jsp-version>2.0</jsp-version>
           7  <short-name>hello</short-name>
           8  <tag>
           9   <name>shan</name>
          10   <tag-class>org.zzn.demo01.Hello</tag-class>
          11   <body-content>empty</body-content>
          12  </tag>
          13 </taglib>
          建立Java文件代碼:
           1 package org.zzn.demo01;
           2 import java.io.IOException;
           3 import javax.servlet.jsp.JspException;
           4 import javax.servlet.jsp.JspWriter;
           5 import javax.servlet.jsp.tagext.TagSupport;
           6 
           7 public class Hello extends TagSupport {
           8     @Override
           9     public int doStartTag() throws JspException {
          10         //向jsp頁面中打印“蜘蛛俠”字符串
          11         String str = "蜘蛛俠";
          12         JspWriter out = pageContext.getOut();
          13         try {
          14             out.println(str);
          15         } catch (IOException e) {
          16             // TODO Auto-generated catch block
          17             e.printStackTrace();
          18         }
          19         return TagSupport.SKIP_BODY;
          20     }
          21 }
          22 

          建立jsp文件代碼:
           1 <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
           2 <%@ taglib uri="/WEB-INF/hello.tld" prefix="zzn"%>
           3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
           4 <html>
           5   <head>
           6     <title>My JSP 'Hello.jsp' starting page</title>
           7   </head>
           8   <body>
           9       <h2><zzn:shan/></h2>
          10   </body>
          11 </html>

          posted on 2008-12-29 13:09 生命的綻放 閱讀(274) 評論(0)  編輯  收藏 所屬分類: JAVA

          <2008年12月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導航

          統計

          常用鏈接

          留言簿(5)

          隨筆分類(94)

          隨筆檔案(93)

          文章分類(5)

          文章檔案(5)

          相冊

          JAVA之橋

          SQL之音

          兄弟之窗

          常用工具下載

          積分與排名

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 特克斯县| 交口县| 承德县| 邵东县| 荣昌县| 池州市| 册亨县| 卢湾区| 丘北县| 都安| 澄城县| 杭锦后旗| 滦平县| 内江市| 喀喇| 封开县| 澄城县| 金阳县| 会泽县| 漯河市| 大田县| 宁津县| 固安县| 札达县| 怀宁县| 巍山| 延安市| 洞头县| 宜川县| 四子王旗| 喀什市| 奉化市| 襄樊市| 微博| 济阳县| 安阳县| 兴宁市| 连州市| 和顺县| 达拉特旗| 常州市|