jsp 自定义标签 学习笔记 (1)

http://zgqhyh.iteye.com/blog/198249

 

jsp 自定义标签 学习笔记 (1) 
简单标签的学习 

1、标签的功能实现是通过一个具体类来实现的,这个类要实现一个接口。而这个类被称作标签处理器(tag handler) 
2、标签的功能特性(如标签的名称及属性)都被定义在一个标签库描述符文件(tag library descriptor)TLD中. 
3、当标签最终在页面上被使用时,标签处理器的一个实例就会被创建,并且它的方法会被调用 
4、SimpleTag接口 
  这个接口 是在jsp2.0规范中定义的。它定义了简单标签以及jsp页面之间的关系。 
  这个接口本身服务以下两个目的: 
  (1) 为简单标签提供运行时环境 
  (2)它提供了一个方法,通过这个方法来执行简单标签处理器所封装的功能 
下面是这个接口的代码 

Java代码   收藏代码
  1. package javax.serlet.jsp.tagext;  
  2. public interface SimpleTag extends JspTag{  
  3.   public void doTag() throws JspException,IOException;  
  4.   public JspTag getParent();  
  5.   public void setJspBody(JspFrgment jspBody);  
  6.   public void setJspContext(JspContext jspContext);  
  7.   public void setParent(JspTag parent);  
  8. }  


各个方法的执行顺序,是由jsp规范确定的。 
 

5、SimpleTagSupport 类 
为了方便,jsp规范提供了一个类,javax.servlet.jsp.tagext.SimpleTagSupport 类,这个类提供了SimpleTag接口的实现。现在,只需要继承这个类,并且 重写doTag()方法即可。 
6、一个简单标签的例子 
功能是在页面上显示出当前的时间。 
(1)标签处理器 

Xml代码   收藏代码
  1. package com.mycom.cn.tag;  
  2. import java.io.IOException;  
  3. import java.text.DateFormat;  
  4. import java.util.Date;  
  5.   
  6. import javax.servlet.jsp.JspException;  
  7. import javax.servlet.jsp.tagext.SimpleTagSupport;  
  8.   
  9. public class DateTimeTag extends SimpleTagSupport{  
  10.     public void doTag() throws JspException, IOException{  
  11.         DateFormat df = DateFormat.getDateTimeInstance(  
  12.                 DateFormat.MEDIUM,DateFormat.MEDIUM);  
  13.         getJspContext().getOut().write(df.format(new Date()));  
  14.     }  
  15. }  


7、tld文件 

Java代码   收藏代码
  1. <?xml version="1.0" encoding="GBK" ?>  
  2. <!DOCTYPE taglib  
  3.   PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"  
  4.   "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">  
  5. <taglib>  
  6.     <description>对此标签库的简单描述</description>  
  7.     <jsp-version>2.0</jsp-version>  
  8.     <tlib-version>1.0</tlib-version>  
  9.     <short-name>testTag</short-name>  
  10.     <uri>http://www.mycom.cn</uri>    
  11.     <tag>  
  12.         <name>datetime</name>  
  13.         <tag-class>com.mycom.cn.tag.DateTimeTag</tag-class>  
  14.         <body-content>empty</body-content>  
  15.         <description>输出当时日期和时间</description>  
  16.     </tag>      
  17. </taglib>  


7、布署 
class文件要放在classpath下,tld文件放在WEB-IN下的目录中 
8、在页面上引用 
<

Java代码   收藏代码
  1. %@ taglib uri="/WEB-INF/testtag.tld" prefix="testTag" %>  
  2. <testTag:datetime/>  

你可能感兴趣的:(自定义标签)