隨筆-86  評論-33  文章-0  trackbacks-0
          =========自定義標(biāo)簽學(xué)習(xí)總結(jié)========= 2005年7月28日 09:54:07 Derek

          標(biāo)簽的運行方式是:
          JSP頁面解析中發(fā)現(xiàn)自定義標(biāo)簽,則到上面的標(biāo)簽說明中尋找:如
          <%@ taglib uri="/mytitle.tld" prefix="dada"%>
          此時它會找到該標(biāo)簽的uri ,uri 在web.xml中已經(jīng)定義了
           <taglib>
              
          <taglib-uri>/mytitle.tld</taglib-uri>
              
          <taglib-location>/WEB-INF/mytitle.tld</taglib-location>
            
          </taglib>
          此時它會通過uri在web.xml中查找到該標(biāo)簽的描述文件tld。那么在tld描述文件中又定義了該標(biāo)簽的處理類,具體完成業(yè)務(wù)的操作,標(biāo)簽處理類繼承TagSupport,處理類完成操作后將返回頁面。
          <name>title</name>
              
          <tagclass>com.derek.tags.TitleTag</tagclass>
           
           準(zhǔn)備工作 :首先在WEB-INF\lib下添加taglibs-log.jar包
          1、創(chuàng)建標(biāo)簽描述文件
               在WEB-INF下新建一個tld文件,該文件描述了此tld文件將由那個處理類完成操作,并且定義了該標(biāo)簽的屬性。一個<taglib>中可以有很多個<tag>,由<name>標(biāo)簽名區(qū)分。
          <?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</shortname>
          <uri>http://jakarta.apache.org/struts/tags-html</uri>

          <tag>
               
          <name>title</name>
              
          <tagclass>com.derek.tags.TitleTag</tagclass>
              
          <bodycontent>empty</bodycontent>
              
          <attribute>
                  
          <name>begin</name>
                  
          <required>true</required>
              
          </attribute>
                  
          <attribute>
                  
          <name>end</name>
                  
          <required>true</required>
              
          </attribute>
          </tag>

          </taglib>

          2、創(chuàng)建標(biāo)簽處理類
               該類繼承  TagSupport,覆蓋doEndTag()方法
             
          package com.derek.tags;

          import javax.servlet.jsp.tagext.TagSupport;
          import javax.servlet.jsp.JspException;
          import java.util.Properties;
          import java.io.
          *
          ;
          import javax.servlet.jsp.JspWriter;

          public class
           TitleTag extends TagSupport {
            
          private String begin = null
          ;
            
          private String end = null
          ;
            
          public
           TitleTag() {}
            
          public String getBegin() {return
           begin;}
            
          public void setBegin(String begin) {this.begin =
           begin;}
            
          public String getEnd(){return
           end;}
            
          public void setEnd(String end){this.end =
           end;}

            
          public int
           doEndTag() throws JspException {
              Properties ps 
          = (Properties)pageContext.getAttribute("ps",pageContext.APPLICATION_SCOPE);//從上下文中取的message.properties

                            JspWriter jw = pageContext.getOut();
              
          if(begin!=null&&begin.length()>0
          ){
                 String header 
          =
           ps.getProperty(begin);
                 System.
          out.println("頁眉"+
          begin);
                 
          try
           {
                jw.println(header);
                  }
          catch
           (IOException ex) {ex.printStackTrace();}
              }
              
          if(end!=null&&end.length()>0
          ){
                 String footer 
          =
           ps.getProperty(end);
                 System.
          out.println(" 頁腳"+
          end);
              
          try
           {
                jw.println(footer);
                }
          catch
           (IOException ex1) {ex1.printStackTrace();}
              }
              
          return
           SKIP_BODY;
            }

            
          public void
           release() {
              super.release();
            }
          }

          3、修改web.xml文件
            在web.xml中<web-app>下添加,將標(biāo)簽的uri與具體標(biāo)簽描述文件綁定
          <taglib>
              
          <taglib-uri>/mytitle.tld</taglib-uri>
              
          <taglib-location>/WEB-INF/mytitle.tld</taglib-location>
          </taglib>

          4、在頁面中使用標(biāo)簽
          首先在頁面中導(dǎo)入標(biāo)簽
          <%@ taglib uri="/mytitle.tld" prefix="dada"%>
          該句表示標(biāo)簽前綴為“dada”的標(biāo)簽將調(diào)用uri指定的標(biāo)簽,uri可以隨便起名字,但一定要可web.xml中定義的uri相對應(yīng)。
          然后就可以在頁面中使用了
          <dada:title begin="" end="footer"/>

          posted on 2005-09-11 09:56 Derek.Guo 閱讀(545) 評論(0)  編輯  收藏 所屬分類: Java
          MSN:envoydada@hotmail.com QQ:34935442
          主站蜘蛛池模板: 庐江县| 嘉兴市| 上蔡县| 龙山县| 禹城市| 廉江市| 称多县| 和田县| 噶尔县| 稻城县| 资溪县| 温州市| 山阴县| 大关县| 驻马店市| 长葛市| 黑河市| 时尚| 监利县| 定兴县| 滨州市| 循化| 尼玛县| 敦化市| 巴中市| 沙河市| 肥城市| 工布江达县| 湘潭市| 罗甸县| 馆陶县| 萝北县| 洞口县| 中山市| 荣昌县| 宾阳县| 清流县| 台州市| 东台市| 吉木乃县| 台中市|