隨筆-86  評論-33  文章-0  trackbacks-0
          =========自定義標簽學習總結========= 2005年7月28日 09:54:07 Derek

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

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

          posted on 2005-09-11 09:56 Derek.Guo 閱讀(545) 評論(0)  編輯  收藏 所屬分類: Java
          MSN:envoydada@hotmail.com QQ:34935442
          主站蜘蛛池模板: 沈丘县| 巢湖市| 三亚市| 华宁县| 汤阴县| 马公市| 奉贤区| 通榆县| 江阴市| 白城市| 兰坪| 瑞昌市| 绥中县| 陆良县| 黄浦区| 灵石县| 腾冲县| 鄂托克前旗| 左云县| 贺州市| 霍林郭勒市| 米林县| 平阴县| 永福县| 山阴县| 临海市| 南康市| 宝山区| 和龙市| 汤原县| 乐安县| 湖口县| 洮南市| 逊克县| 闻喜县| 海原县| 汝城县| 保靖县| 梅河口市| 固原市| 济阳县|