jsp 自定义标签 学习笔记 (1)
简单标签的学习
1、标签的功能实现是通过一个具体类来实现的,这个类要实现一个接口。而这个类被称作标签处理器(tag handler)
2、标签的功能特性(如标签的名称及属性)都被定义在一个标签库描述符文件(tag library descriptor)TLD中.
3、当标签最终在页面上被使用时,标签处理器的一个实例就会被创建,并且它的方法会被调用
4、SimpleTag接口
这个接口 是在jsp2.0规范中定义的。它定义了简单标签以及jsp页面之间的关系。
这个接口本身服务以下两个目的:
(1) 为简单标签提供运行时环境
(2)它提供了一个方法,通过这个方法来执行简单标签处理器所封装的功能
下面是这个接口的代码
package javax.serlet.jsp.tagext;
public interface SimpleTag extends JspTag{
public void doTag() throws JspException,IOException;
public JspTag getParent();
public void setJspBody(JspFrgment jspBody);
public void setJspContext(JspContext jspContext);
public void setParent(JspTag parent);
}
各个方法的执行顺序,是由jsp规范确定的。
5、SimpleTagSupport 类
为了方便,jsp规范提供了一个类,javax.servlet.jsp.tagext.SimpleTagSupport 类,这个类提供了SimpleTag接口的实现。现在,只需要继承这个类,并且 重写doTag()方法即可。
6、一个简单标签的例子
功能是在页面上显示出当前的时间。
(1)标签处理器
package com.mycom.cn.tag;
import java.io.IOException;
import java.text.DateFormat;
import java.util.Date;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
public class DateTimeTag extends SimpleTagSupport{
public void doTag() throws JspException, IOException{
DateFormat df = DateFormat.getDateTimeInstance(
DateFormat.MEDIUM,DateFormat.MEDIUM);
getJspContext().getOut().write(df.format(new Date()));
}
}
7、tld文件
<?xml version="1.0" encoding="GBK" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<description>对此标签库的简单描述</description>
<jsp-version>2.0</jsp-version>
<tlib-version>1.0</tlib-version>
<short-name>testTag</short-name>
<uri>http://www.mycom.cn</uri>
<tag>
<name>datetime</name>
<tag-class>com.mycom.cn.tag.DateTimeTag</tag-class>
<body-content>empty</body-content>
<description>输出当时日期和时间</description>
</tag>
</taglib>
7、布署
class文件要放在classpath下,tld文件放在WEB-IN下的目录中
8、在页面上引用
<
%@ taglib uri="/WEB-INF/testtag.tld" prefix="testTag" %>
<testTag:datetime/>