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()返回。
分享到:
相关推荐
### 自定义标签学习笔记 #### 一、什么是自定义标签? 自定义标签是JSP(Java Server Pages)中的一种功能,允许开发者创建可重用的组件。这些组件封装了特定的功能,可以在不同的JSP页面中复用,从而提高开发效率...
对于带有标记体的标签,需要继承`javax.servlet.jsp.tagext.BodyTagSupport`,并在处理类中使用`doStartTag()`、`doAfterBody()`和`doEndTag()`方法来处理标签体内容。 5.3 一个简单的带标记体的标签(二) 在实际...
通过深入学习JSP自定义标签的生命周期和`BodyTagSupport`类提供的方法,开发者能够更好地理解和解决问题,从而编写出高效、可靠的自定义标签。如果你在实现过程中遇到具体的错误或疑惑,可以参考`JSP自定义标签各...
- **BodyTagSupport 类别**:支持标签体内容的处理。 - **自定义标签属性**:讲解如何为自定义标签添加属性。 - **自定义动态标签属性**:介绍如何创建动态属性。 - **SimpleTagSupport 类别**:用于创建无体...
- **编写标签处理类**:这个类需要继承或实现Java的特定接口,如`javax.servlet.jsp.tagext.Tag`、`TagSupport`、`BodyTagSupport`等,以便处理标签逻辑。 - **标签描述文件**:这是一个XML文件,通常命名为`.tld`,...
4. **自定义标签的增强**:通过提供`TagSupport`和`BodyTagSupport`等类,开发者可以更轻松地创建自定义标签,这些标签可以更好地集成到EL和JSTL中。 5. **分离的Java源文件**:JSP2.0允许将JSP页面编译为单独的...
在`<c:parent>`标签中,我们可以使用`setValue("key", value)`保存有用属性,然后在`<c:child>`标签内,通过`BodyTagSupport parent = (BodyTagSupport) getParent();`获取父标签,并使用`parent.getValue("key")`...
这个类必须实现`javax.servlet.jsp.tagext.TagSupport`接口或者其子接口,如`BodyTagSupport`、`SimpleTagSupport`等,根据标签的复杂程度选择合适的接口。 3. **配置TLD文件**:在`.tld`文件中,我们需要为每个...
标签处理类通常实现了`javax.servlet.jsp.tagext.Tag`或其子接口,如`TagSupport`、`BodyTagSupport`等。这些接口定义了标签的生命周期方法,如`doStartTag()`、`doEndTag()`等。通过这些方法,开发者可以在特定阶段...
学习和掌握这些技术对于任何Java Web开发者来说都是至关重要的,因为它们能够提升应用的安全性、性能和可维护性。随着技术的不断演进,像Spring MVC这样的框架进一步整合和扩展了这些概念,使得开发更加高效和便捷。...
3. **标签体的处理**:如果标签需要处理其内部的JSP内容(即标签体),可以实现`javax.servlet.jsp.tagext.BodyTag`接口,或继承`BodyTagSupport`类。 ### 四、JSP页面中的使用 在JSP页面中,通过`<jsp:taglib>`...
首先,创建一个标签处理类,该类继承自BodyTagSupport,这是自定义标签的处理类,可以重写其中的方法来实现具体的逻辑。例如,在这个案例中,重写了doEndTag()方法,该方法在标签体结束时执行。处理类MyReferer中...
在Java中,我们通常会继承自`javax.servlet.jsp.tagext.TagSupport`或`javax.servlet.jsp.tagext.BodyTagSupport`等基类。这些基类提供了属性的生命周期管理,如初始化、设置值、获取值以及释放等方法。 例如,`...