JSP自定义标签执行顺序
首先来看一下简单标签接口的方法以及它的生命周期
一 SimpleTag接口的方法
doTag() void
getParent() JspTag
setJspBody(javax servlet jsp tagext JspFragment body) void
setJspContext(javax servlet jsp JspContext pc) void
setParent(javax servlet jsp tagext JspTag tag) void
二 SimpleTag接口的声明周期
每次遇到Jsp标签容器构造一个SimpleTag实例 这个构造函数没有参数
setJspContext() setParent()只有当前的标签在另一个标签之内时才调用setParent()方法
设置属性 调用每一个属性的setter方法
setJspBody(javax servlet jsp tagext JspFragment body)
doTag()所有标签的逻辑迭代和Body计算都在这个方法中
return下面是对带体标签的介绍
三 带Body的自定以标签
必须实现Tag接口的doStartTag()和doEndTag()方法
可以实现IterationTag接口的doAffterBody()方法
可以实现BodyTag接口的doInitBody()和setBodyContent(javax servlet jsp tagext BodyContent bc)方法
doStartTag()可以返回的值 A SKIP_BODY 不处理标签体B EVAL_BODY_INCLUDE 计算的体的结果被包含在out(JspWriter)中输出C EVAL_BODY_BUFFERED 一个BodyContent对象被创建
doEndTag()方法可以返回SKIP_PAGE或者EVAL_PAGE以确定是否继续计算其余的页面
doAffterBody可以返回EVAL_BODY_AGAIN SKIP_BODY以确定是否再次计算标签体
四 BodyTag的处理过程
setPageContext(javax servlet jsp PageContext pc) void
setParent(javax servlet jsp tagext Tag tag) void
doStartTag() int
setBodyContext(BodyContext bc) void
doInitBody() int
doAffterBody() int
doEndTag() int
lishixinzhi/Article/program/Java/JSP/201311/20747