doStartTag()方法必须返回一个整型数。
返回EVAL_BODY_TAG则正常处理标签体(跳到e);
返回SKIP_BODY则从初始JSP页面中直到此标签结束标记处的内容均被忽略。(跳到f)
e.如果返回EVAL_BODY_TAG时,则正常处理标签体。
e1.在栈中保存当前的JspWriter对象,创建新的BodyContent对象,并将其置为JSP页面的out对象保存在上下文范围内名为name的属性中。并调用它的setBodyContent()方法。
e2.调用doInitBody()方法进行初始化。
e3.处理标签体。将输出写入BodyContent对象中,此过程依赖于TLD的标签元素
e4.调用doAfterBody()方法,将体内体内容写入JspWriter,可如下实现:
JspWriterout=bodyContent.getEnclosingWriter();
out.println(bodyContent.getString());//bodyContent.writeOut(out);
bodyContent.clear();
e5.doAfterBody()方法返回两种可能:
返回EVAL_BODY_TAG时,再对标签体进行评估,这是数组和枚举被循环处理的典型情况。
返回SKIP_PAGE时,继续页面的其余部份。
e6.体内容完成,因此创建它的过程被反向:
调用pageContent.popBody()方法检索前面的JspWriter对象。
将写入者设置回out隐含对象。
f.标签体被评估或忽视后调用doEndTag()方法,允许标签处理器像输出流发回内容。
返回EVAL_PAGE则页面的其余部分被评估;
返回SKIP_PAGE则servlet代码立即从_jspService()中返回。
g.此时体的内容在受保护的bodyContent对象中仍然可用。
可以将它写入servlet输出流中:
JspWriterout=pageContext.getOut();
out.println(bodyContent.getString());
或者
bodyContent.WriteOut(pageContext.getOut());
6.标签附加信息类
四、标签指令
taglib指令元素的目的是指定TLD的位置,设置在页面上与标签区分开来的一个短别名。
语法:
属性:prefix:用于标识标签库的唯一标识。uri:标签库本身的URI。
uri不必指向一个实际文件,它是JSP容器可以在web.xml中查找实际文件位置的唯一标识符。

