重载BodyTagSupport类的方法:
编写标签对应的实现类时,需要重载BodyTagSupport类几个方法:doStartTag(), setBodyContent(), doInitBody(), doAfterBody(), doEndTag();
他们执行顺序如下:
doStartTag()→doInitBody()→setBodyContent()→doAfterBody()→doEndTag()
doStartTag()
方法可返回EVAL_BODY_INCLUDE或SKIP_BODY
,
如果返回EVAL_BODY_INCLUDE
则继续执行;
如果返回SKIP_BODY
则接下来的doInitBody(),setBodyContent(), doAfterBody()三个方法不会被执行,
而直接执行doEndTag()方法。
setBodyContent()
方法用于设置标签体内容,如果在此之前要作一些初始化工作,则在doInitBody()方法中完成。
标签体内容执行完后,会调用doAfterBody()方法,此方法可返回EVAL_BODY_TAG
, SKIP_BODY
,EVAL_PAGE
或
SKIP_PAGE
。
如果返回EVAL_BODY_TAG
则会再次设置标签体内容,直到返回SKIP_BODY;
如果返回EVAL_PAGE
则标签体执行完后会继续执行JSP页面中接下来的部分;
如果返回SKIP_PAGE
,则JSP页面的后续内容将不再执行。
标签中静态常量:
EVAL_BODY_INCLUDE
:告诉服务器正文的内容,并把这些内容送入输出流
SKIP_BODY
:告诉服务器不要处理正文内容
EVAL_PAGE
:让服务器继续执行页面
SKIP_PAGE
:让服务器不要处理剩余的页面
EVAL_BODY_AGAIN
:让服务器继续处理正文内容,只有doAfterBody方法可以返回
EVAL_BODY_BUFFERED
:BodyTag接口的字段,在doStartTag()返回
EVAL_BODY_INCLUDE、SKIP_BODY一般由doStartTag()返回,而EVAL_PAPGE、SKIP_PAGE由doEndTag()返回。
分享到:
相关推荐
2. **实现标签类**:接下来,创建一个实现`MyTag`接口和`BodyTagSupport`类的类。在这个类中,你需要覆盖`doStartTag()`和`doEndTag()`方法,以及可能需要的其他方法,如`release()`来清理资源。例如: ```java ...
这个类提供了一组方法,帮助开发者处理标签的生命周期,包括初始化、执行和清理阶段。例如: 1. `doStartTag()`: 这个方法在标签开始时被调用,通常用于设置标签的属性或初始化变量。 2. `doEndTag()`: 当标签结束...
通过深入学习JSP自定义标签的生命周期和`BodyTagSupport`类提供的方法,开发者能够更好地理解和解决问题,从而编写出高效、可靠的自定义标签。如果你在实现过程中遇到具体的错误或疑惑,可以参考`JSP自定义标签各...
- **继承**:`BodyTagSupport`,这表明`GetProperty`类是一个JSP标签库中的一个自定义标签,并且它继承了`BodyTagSupport`类。 - **功能**:此标签用于获取对象的属性值并将其输出到JSP页面上。 ### 2. 成员变量及...
TagSupport 类是一个实现了 Tag 接口的类,BodyTagSupport 类是一个实现了 BodyTag 接口的类。 SimpleTag 接口 SimpleTag 接口是 JSP2.0 中的标签接口,包括 SimpleTagSupport 类。 开发带属性的标签 要想让一个...
* TagSupport 类适用于没有主体的标签,而 BodyTagSupport 类适用于有主体的标签。 * 如果选择继承 TagSupport,可以实现 doStartTag 和 doEndTag 两个方法。 * 如果选择继承 BodyTagSupport,可以实现 doAfterBody ...
在JSP中,`BodyTagSupport`接口提供了一组方法,用于处理带有体内容的标签。这些方法包括: - `doStartTag()`:此方法在标签的开始执行,它决定了是否需要评估标签体内的内容。 - `setBodyContent()`:此方法由容器...
以`UserListTag`为例,该类继承自`BodyTagSupport`,这是一个常用的基类,它提供了许多有用的方法和属性。在这个类中,我们定义了几个关键方法: - `doStartTag()`: 这个方法在标签开始时被调用。在这里,我们可以...
如果选择继承TagSupport,可以实现doStartTag和doEndTag两个方法实现Tag的功能,如果选择继承BodyTagSupport,可以实现doAfterBody这个方法。 3. 过滤器Filter的作用及配置 过滤器是一个对象,可以传输请求或修改...
一个自定义标签其实是一个Java类,这个类需要继承自`TagSupport`或`BodyTagSupport`。这两个类由JSP容器提供,它们包含处理JSP页面与自定义标签之间交互所需的方法。选择继承哪个基类取决于标签是否需要处理内部内容...
2. 编写标签实现类:继承`BodyTagSupport`,并覆盖必要的方法,如`doStartTag()`、`doAfterBody()`和`doEndTag()`。这些方法分别在标签开始、内容处理和结束时被调用。 3. 处理分页逻辑:在标签实现类中,你需要实现...
- **创建Tag类**:编写一个Java类,继承自`TagSupport`或`BodyTagSupport`,并实现必要的业务逻辑。例如,创建一个`OutputTag`类,设置属性的set方法,如`setName()`。 - **定义行为**:覆盖`doStartTag()`和`...
`TagSupport`和`BodyTagSupport`类是对Tag接口的简化实现,它们提供了默认行为,方便开发者快速构建自定义标签。`TagSupport`类包含了`Tag`接口的默认实现,适合创建迭代标签(IterationTag),即那些可以重复执行的...
- `BodyTag`:允许标签包含Body内容,`BodyTagSupport`是其基础实现类。 5. **HelloWorld示例** 创建自定义标签通常涉及实现`Tag`接口,定义相关生命周期方法。例如,以下代码展示了如何实现一个简单的HelloWorld...
通常,我们继承`TagSupport`或`BodyTagSupport`类来创建自定义标记处理类。`TagSupport`实现了`IterationTag`接口,适合不处理标记体的标签,而`BodyTagSupport`实现了`BodyTag`接口,适用于处理标记体的标签。 ...
TagSupport类为标签提供了基础的生命周期方法,如doStartTag和doEndTag,而BodyTagSupport类则扩展了TagSupport,增加了对标签体内内容的处理能力。通过覆盖这些方法,开发者可以实现自定义标签的具体功能。 其次,...
该类需要继承自SimpleTagSupport或BodyTagSupport等类,并且至少要实现doTag方法(对于SimpleTagSupport类)。在doTag方法中可以编写标签执行的逻辑。 3. 定义标签属性:为了使自定义标签可以接受外部传入的参数,...
创建自定义标签的第一步是编写一个Java类,该类需要继承`javax.servlet.jsp.tagext.TagSupport`或`javax.servlet.jsp.tagext.BodyTagSupport`。这两个基类提供了与JSP页面交互所需的基本方法。 **示例代码:** ```...
处理类通常需要继承`javax.servlet.jsp.TagSupport`或`javax.servlet.jsp.BodyTagSupport`类,并实现`doStartTag()`和`doEndTag()`等方法,以响应标签的开始和结束事件。 2. **创建标签库描述文件(TLD)**:TLD...