自定义标签实际上是一个实现了特定接口的java类,封装了一些常用功能,在运行时,标签将被相应的代码所替换。标签的集合构成了标签库。
要开发自定义标签,其核心就是要编写标签处理器类,一个标签对应一个标签处理器类。所有的标签处理器类都要实现JspTag接口。
标签有四种形式:空标签、带有属性的空标签、带有内容的标签、带有内容和属性的标签。
Tag接口定义了所有的传统标签处理器需要实现的基本方法。这些方法包含:设置页面的上下文setPageContext、设置父标签setParent、获取父标签getParent、标签开始调用doStartTag、标签结束调用doEndTag、释放资源调用release。Tag接口还定义了一些常量:执行标签体EVAL_BODY_INCLUDE、忽略标签体SKIP_BODY、执行余下部分EVAL_PAGE、忽略余下部分SKIP_KPAGE。
IterationTag接口从Tag接口继承过来,新增了方法doAfterBody和常量EVAL_BODY_AGAIN。
BodyTag接口从IterationTag接口继承过来,新增了方法setBodyContent、doInitBody和EVAL_BODY_BUFFERED。

编写好标签处理器类后,为了使用标签,还需要在标签库描述符(TLD)文件中配置标签的相关信息。当标签库部署在JAR文件中,TLD文件必须放在META-INF目录或其子目录下;当标签库部署在WEB应用程序中,TLD文件必须放在WEB-INF目录或其子目录下,classes和lib子目录除外。
SimpleTag接口定义了5个方法:设置上下文setJspContext、设置父标签setParent、获取父标签getParent、设置标签体setJspBody、处理标签doTag。
与传统标签处理器不同,简单标签的处理器实例不会被缓存而重复使用,每当遇到标签时,容器会创建一个新的标签处理器实例。
posted on 2009-12-11 20:06
冯真海 阅读(141)
评论(0) 编辑 收藏