JSP教程-JSP中自定义标签的示例

在这个示例中,我们将创建一个打印当前日期和时间的自定义标签。我们在标签开始时执行操作。
创建任何自定义标签,我们需要遵循以下步骤:
- 创建标签处理类并在标签的开始或结束时执行操作。
- 创建标签库描述符(TLD)文件并定义标签。
- 创建使用TLD文件中定义的自定义标签的JSP文件。
理解JSP中自定义标签的流程
1) 创建标签处理类
为了创建标签处理器,我们继承了TagSupport类并重写了其方法doStartTag()。要在jsp中写入数据,我们需要使用JspWriter类。
PageContext类提供了getOut()方法,该方法返回JspWriter类的实例。TagSupport类默认提供pageContext的实例。
文件:MyTagHandler.java
package cn.javatiku.sonoo;
import java.util.Calendar;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
public class MyTagHandler extends TagSupport{
public int doStartTag() throws JspException {
JspWriter out=pageContext.getOut();//returns the instance of JspWriter
try{
out.print(Calendar.getInstance().getTime());//printing date and time using JspWriter
}catch(Exception e){System.out.println(e);}
return SKIP_BODY;//will not evaluate the body content of the tag
}
}
2) 创建TLD文件
标签库描述符(TLD)文件包含标签和标签处理类的信息。它必须包含在WEB-INF目录内。
文件:mytags.tld
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>simple</short-name>
<uri>http://tomcat.apache.org/example-taglib</uri>
<tag>
<name>today</name>
<tag-class>cn.javatiku.sonoo.MyTagHandler</tag-class>
</tag>
</taglib>
3) 创建JSP文件
让我们在jsp文件中使用这个标签。这里,我们直接指定了tld文件的路径。但是建议使用uri名称而不是tld文件的完整路径。稍后我们将学习关于uri的知识。
它使用taglib指令来使用tld文件中定义的标签。
文件:index.jsp
<%@ taglib uri="WEB-INF/mytags.tld" prefix="m" %>
Current Date and Time is: <m:today/>