华帝售后服务电话江西:标签库描述文件(TLD)

来源:百度文库 编辑:中财网 时间:2024/04/30 00:46:48

标签库描述文件(TLD)

采用了XML文件格式的标签库描述文件(TLD)定义了用户的标签库, TLD文件中常用的元素有以下4个。

1.标签库元素

元素用来设置整个标签库的相关信息,如:

 

2.标签元素

元素用来定义一个标签,它是元素的子元素,如:

 

3.标签属性元素>

元素用来定义标签的属性,它是元素的子元素,如:

 

4.标签变量元素

元素用来定义标签的变量,它是元素的子元素,如:

 

 自定义JSP标签的一般步骤

在Java Web应用中自定义JSP标签的一般经过4个步骤。

(1)编写标签处理类,如:

  1. public class Echo extends TagSupport {  
  2.     //标签开始时调用的处理方法  
  3.     public int doStartTag() throws JspException{  
  4.         try{  
  5.             //将信息内容输出到JSP页面  
  6.             pageContext.getOut().print(msg);              
  7.         }catch(Exception ex){  
  8.             throw new JspTagException(ex.getMessage());  
  9.         }         
  10.         //跳过标签体的执行  
  11.         return SKIP_BODY;         
  12.     }  
  13.     //标签结束时调用的处理方法  
  14.     public int doEndTag() {  
  15.         //继续执行后续的JSP页面内容  
  16.         return EVAL_PAGE;  
  17.     }  

(2)创建标签库描述符(TLD),如:

  1.  
  2. Inc.//DTD JSP Tag Library 1.2//EN" "web-jsptaglibrary_1_2.dtd" >  
  3.  
  4.   mytaglib 1.0  
  5.   jsp 2.0  
  6.   mytag  
  7.   http://www.e868.net/mytag  
  8.     
  9.     echo  
  10.     mytags.Echo  
  11.     empty  
  12.       
  13.         msg  
  14.         true  
  15.         true  
  16.       
  17.     
  18.  

(3)在JSP页面中引用标签库,如:

  1. <%@ taglib prefix="mytag" uri="http://www.e868.net/mytag"%> 

(4)在JSP页面中使用标签,如:

  1.  
  2. "/> 


自定义JSP标签的应用实例(1)

本实例中分别创建3个自定义JSP标签:信息显示标签echo、格式化日期标签formatdate与转换大写标签touppercase。

首先创建信息显示标签的处理类Echo.java(见例程6-11) 、格式化日期标签的处理类FormatDate.java(见例程6-12)与转化大写标签的处理类ToUpperCase.java(见例程6-13)。

然后创建标签库描述文件mytaglib.tld(见例程6-14),并在mytaglib.tld中分别描述信息显示标签echo、格式化日期标签formatdate与转换大写标签touppercase。

最后创建一个使用自定义标签的JSP测试页面index.jsp(见例程6-15)。

本实例的视频教程请参考配套光盘的"视频教程"部分。

例程6-11  信息显示标签的处理类Echo.java

  1. package mytags;  
  2. import javax.servlet.jsp.JspException;  
  3. import javax.servlet.jsp.JspTagException;  
  4. import javax.servlet.jsp.tagext.TagSupport;  
  5. public class Echo extends TagSupport {  
  6.     //定义一个属性用于接收要显示的信息  
  7.     String msg = "";  
  8.     //读取msg的值  
  9.     public String getMsg() {  
  10.         return msg;  
  11.     }  
  12.     //设置msg的值  
  13.     public void setMsg(String msg) {  
  14.         this.msg = msg;  
  15.     }  
  16.     //标签开始时调用的处理方法  
  17.     public int doStartTag()throws JspException{  
  18.         try{  
  19.             //将信息内容输出到JSP页面  
  20.             pageContext.getOut().print(msg);              
  21.         }catch(Exception ex){  
  22.             throw new JspTagException(ex.getMessage());  
  23.         }         
  24.         //跳过标签体的执行  
  25.         return SKIP_BODY;         
  26.     }  
  27.     //标签结束时调用的处理方法  
  28.     public int doEndTag() {  
  29.         //继续执行后续的JSP页面内容  
  30.         return EVAL_PAGE;  
  31.     }  

例程6-12  格式化日期标签的处理类FormatDate.java

  1. package mytags;  
  2. import javax.servlet.jsp.JspException;  
  3. import javax.servlet.jsp.JspTagException;  
  4. import javax.servlet.jsp.tagext.TagSupport;  
  5. import java.util.*;  
  6. import java.text.*;  
  7. public class FormatDate extends TagSupport {  
  8.     //定义一个属性用于接收传入的日期  
  9.     Date date = null;  
  10.     //定义一个属性用于接收传入的类型  
  11.     String type = null;  
  12.     public Date getDate() {  
  13.         return date;  
  14.     }  
  15.     public void setDate(Date date) {  
  16.         this.date = date;  
  17.     }  
  18.     public String getType() {  
  19.         return type;  
  20.     }  
  21.     public void setType(String type) {  
  22.         this.type = type;  
  23.     }  
  24.     //标签开始时调用的处理方法  
  25.     public int doStartTag() throws JspException{  
  26.         try{  
  27.             SimpleDateFormat fmt = null;  
  28.             if (type.equals("date")){  
  29.                 fmt = new SimpleDateFormat("yyyy年MM月dd日");  
  30.             }  
  31.             if (type.equals("time")){  
  32.                 fmt = new SimpleDateFormat("hh时mm分ss秒");  
  33.             }  
  34.             if (type.equals("all")){  
  35.                 fmt = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒");  
  36.             }                 
  37.             //将最后的结果输出到页面  
  38.             pageContext.getOut().print(fmt.format(date));     
  39.         }catch(Exception ex){  
  40.             throw new JspTagException(ex.getMessage());  
  41.         }         
  42.         //跳过标签体的执行  
  43.         return SKIP_BODY;         
  44.     }  
  45.     //标签结束时调用的处理方法  
  46.     public int doEndTag() {  
  47.         //继续执行后续的JSP页面内容  
  48.         return EVAL_PAGE;  
  49.     }  


自定义JSP标签的应用实例(2)

例程6-13  转化大写标签的处理类ToUpperCase.java

  1. package mytags;  
  2. import javax.servlet.jsp.JspException;  
  3. import javax.servlet.jsp.tagext.BodyContent;  
  4. import javax.servlet.jsp.tagext.BodyTagSupport;  
  5. public class ToUpperCase extends BodyTagSupport {  
  6.     //定义一个存放结果的变量  
  7.     String var = null;  
  8.     public String getVar() {  
  9.         return var;  
  10.     }  
  11.     public void setVar(String var) {  
  12.         this.var = var;  
  13.     }     
  14.     //标签开始时调用的处理方法  
  15.     public int doStartTag() throws JspException {  
  16.         //表示需要处理标签体  
  17.         return EVAL_BODY_BUFFERED;  
  18.     }  
  19.     //判断了标签体内容之后调用的处理方法  
  20.     public int doAfterBody() throws JspException {  
  21.         //取得标签体对象  
  22.         BodyContent body = getBodyContent();  
  23.         //取得标签体的字符串内容  
  24.         String content = body.getString();  
  25.         //清除标签体中的内容  
  26.         body.clearBody();  
  27.         //将内容转换成大写  
  28.         content = content.toUpperCase();  
  29.         //在pageContext对象中保存变量  
  30.         pageContext.setAttribute(var,content);  
  31.         //结束对标签体的处理  
  32.         return SKIP_BODY;         
  33.     }  

例程6-14  标签库描述文件mytaglib.tld

  1.  
  2. Inc.//DTD JSP Tag Library 1.2//EN" 
  3. "web-jsptaglibrary_1_2.dtd" >  
  4.  
  5.   mytaglib 1.0  
  6.   jsp 2.0  
  7.   mytag  
  8.   http://www.e868.net/mytag  
  9.     
  10.     echo  
  11.     mytags.Echo  
  12.     empty  
  13.       
  14.         msg  
  15.         true  
  16.         true  
  17.       
  18.     
  19.     
  20.     formatdate  
  21.     mytags.FormatDate  
  22.     empty  
  23.       
  24.         date  
  25.         true  
  26.         true  
  27.       
  28.       
  29.         type  
  30.         true  
  31.         true  
  32.           
  33.     
  34.     
  35.     touppercase  
  36.     mytags.ToUpperCase  
  37.     tagdependent  
  38.       
  39.         var  
  40.         java.lang.String  
  41.         AT_BEGIN  
  42.       
  43.       
  44.         var  
  45.         true  
  46.           
  47.     
  48.  

例程6-15  使用自定义标签的JSP页面index.jsp

  1. <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>  
  2. <%@ taglib prefix="mytag" uri="http://www.e868.net/mytag"%>  
  3.  
  4.   自定义JSP标签应用实例  
  5.     
  6.     

    自定义JSP标签应用实例


     
  7.     
     
  8.      现在的时间是:"/>
     
  9.      当前容器的版本为:"/>
     
  10.      当前日期是:" type="date"/>
     
  11.      当前时间是:" type="time"/>
     
  12.      当前日期和时间是:" type="all"/>
     
  13.     abcdefghijklmnopqrst  
  14.     转换结果:<%=result%>  
  15.     
  16.  

运行效果如图6-5所示。

 (点击查看大图)图6-5  index.jsp运行效果