经典标签处理器(JSP2.0以前):实现接口Tag、IterationTag、BodyTag的标签处理器都叫做经典标签处理器。 简单标签处理器(JSP2.0引入):实现接口SimpleTag或者继承类SimpleTagSupport的标签处理
经典标签处理器(JSP2.0以前):实现接口Tag、IterationTag、BodyTag的标签处理器都叫做经典标签处理器。
简单标签处理器(JSP2.0引入):实现接口SimpleTag或者继承类SimpleTagSupport的标签处理器叫做简单标签处理器。
// 自定义标签的相关接口都在 javax.servlet.jsp.tagext包中 public interface Tag extends JspTag public interface IterationTag extends Tag public interface BodyTag extends IterationTag public interface SimpleTag extends JspTag public class SimpleTagSupport extends java.lang.Object implements SimpleTag // 提供了接口Simpletag的所有方法的默认实现 public abstract class JspFragment extends java.lang.Object
简单标签的声明周期如下:
(1)JSP容器通过简单标签处理器的无参构造其创建它的实例,因此简单标签处理器必须有无参构造器。
(2)JSP容器通过setJspContext(jspContext)方法,传入JspContext对象:该对象中最重要的方法是getOut()方法,其能够返回JspWriter对象,通过JspWriter就可以把相应返回前端了。通常情况下,要把传入的JspContext赋值给类的成员变量方便以后使用。
public void setJspContext(JspContext jspContext)
(3)如果自定义标签被另一个自定义标签所嵌套,JSP容器就会调用setParent(jspTag)方法
public void setParent(JspTag parent)
(4)JSP容器调用该标签中所定义的每个属性的set方法
(5)如果需要处理页面内容,JSP容器还会调用接口SimpleTag的setJspBody(jspBody)方法,把使用JspFragment封装的页面内容传过来。如果没有页面内容则不会调用该方法。
public void setJspBody(JspFragment jspBody)
创建自定义标签的步骤
第一步:编写标签处理器
第二步:注册标签
实例