1.标签处理器的工作方式 a.导入javax.servlet.jsp和javax.servlet.jsp.tagext包。 b.实现javax.servlet.jsp.tagext包中的Tag接口或BodyTag接口。BodyTag是Tag的子接口。 c.继续TagSupport类或BodyTagSuppoert类。它们是上述接口的缺省实现。 d.重载public int doStartTag()throws JspException方法。
2.标签处理器的接口与实现 javax.servlet.jsp.tagext.Tag是实现标签的最基本的接口。 javax.servlet.jsp.tagext.TagSupport是实现Tag接口的具体类。 通常情况下继续tagSupport类而不直接实现Tag接口通常是有益的。除了对所有必需方法提供了缺省实现外、还保存了pageContext对象及对嵌套标签的支持。 Tag接口包含4个常量,表示doStartTag()和doEndTag()方法可能的返回码。 EVAL_BODY_INCLUDE 当doStartTag()返回时,指明servlet应对标签体进行评估。 SKIP_BODY 当doStartTag()返回时,指明servlet应忽视标签体。 EVAL_PAGE 当doEndTag()返回时,指明页面其余部分应被评估。 SKIP_PAGE 当doEndTag()返回时,指明页面其余部分就被跳过。 Tag接口的方法 public void setPageContext (PageContext ctx) 生成的servlet在请求处理器执行其它任务前首先调用此方法,实现类应保存上下文对象以便它可以在标签生命期中使用。从页面上下文中标签处理器可以访问所有JSP隐含对象。 public void setParent(Tag p) 使用一个标答可以找到操作栈中它上面的标签。在setPageContext后立即调用。 public Tag getParent() 返回父标签。 public int doStartTag() throws Jsp 在设置了页面上下文、父标签和开始标记中编码的属性后调用。返回码表明JSP实现servlet是否就评估标签体。 public int doEndTag()throws JspException 当碰到结否标记时调用。返回码表明JSP是否就继纽页面的其余部份。 public void release() 确保在页面退出前被调用。释放资源并重置标签处理器状态。 TagSupport类的方法 public static Tag finAncestorWithClass(Tag thisTag, Class cls) 为所需的父标签处理器查找运行时标签栈。一个标签处理器可以提供其范围内子标签调用的方法。 public void setId(String id) 保存和检索在id属性中指定的名字。 public void setValue(String name, Object o) 在本地哈希表中设置指定名字的值。 public Object getValue (String name) 从本地哈希表中获取指定名称的值。 public void removeValue (String name) 从本地哈希表中删除指定名称的值。 public Enumeration getValues() 返回哈希表中要害字的一个枚举。