开发定制标签库-5
来源:互联网 发布:工行网络金融品牌推广 编辑:程序博客网 时间:2024/05/17 01:36
实现BodyTag接口
BodyTag接口继承了IterationTag接口。它提供了这样一种功能,将标签体的处理结果放到一个缓冲区,在缓冲区内对结果在进行处理,而不是象Tag或IterationTag接口将标签体的处理结果直接发送到输出流。
另外,由于继承了IterationTag接口,对标签体结果的处理也可以循环进行多次。
在该接口中定义了两个方法(setBodyContent()和doInitBody())和一个整数常量(EVAL_BODY_BUFFERED)。
setBodyContent()方法
完整写法是:
public int setBodyContent(BodyContent);
该方法的典型实现是将BodyContent赋值给本地局部变量以供后面使用。
doInitBody()方法
jsp引擎在调用完setBodyContent方法后会接着调用doInitBody方法。完整写法是:
public void doInitBody() throws JspException;
该接口的运行机制象前两种接口一样,先依次调用setPagerContext(),setParent(),实例变量的setXXX方法,doStartTag()。
这是doStartTag方法返回一个常量(EVAL_BODY_INCLUDE, SKIP_BODY或EVAL_BODY_BUFFERED)。
如果返回的是EVAL_BODY_BUFFERED,jsp引擎首先创建一个BodyContent类对象。BodyContent类是JspWriter的子类,而且所有的write,print方法都被重写。不再直接输出到客户端,而是输出到该对象(缓冲对象)内部。
jsp引擎接着将该对象作为参数带入到setBodyContent方法中,在执行完setBodyContent方法后,接着再调用doInitBody方法,此时并没有对缓冲对象进行计算,只是给出一个机会,对缓冲对象初始化。
接着,jsp引擎处理缓冲对象,并将结果再存在缓冲对象中。
再后来,doAfterBody方法被调用,它将返回EVAL_BODY_AGAIN或EVAL_BODY_BUFFERED用以指示缓冲对象需要循环计算,而返回SKIP_BODY则标明就此结束。
最后,呼叫doEndTag方法,结束标签处理。
其流程图如下:
- 开发定制标签库-5
- 开发定制标签库-1
- 开发定制标签库-2
- 开发定制标签库-3
- 开发定制标签库-4
- 开发定制标签库-6
- 开发定制标签库-1
- 开发定制标签库-2
- 开发定制标签库-3
- JSP定制标签库
- J2EE平台WEB组件开发中如何使用定制标签
- 定制xdoclet 标签
- 使用定制标签-1
- 使用定制标签-2
- 使用定制标签-3
- jsp 定制标签
- 定制标签内幕
- JSP 定制标签
- 4月25号 阴
- 开发定制标签库-1
- 开发定制标签库-2
- 开发定制标签库-3
- 开发定制标签库-4
- 开发定制标签库-5
- 我们的全部希望就在于思想
- 开发定制标签库-6
- 如何在windows系统下安装MySQL?
- Peercast中“流”概念的分析
- 看来又是郁闷的五一
- 使用定制标签-1
- 使用定制标签-2
- 使用定制标签-3