`

BodyTagSupport,包括SKIP_PAGE, EVAL_PAGE等

阅读更多
EVAL_BODY_INCLUDE:把Body读入存在的输出流中,doStartTag()函数可用 
EVAL_PAGE:继续处理页面,doEndTag()函数可用 
SKIP_BODY:忽略对Body的处理,doStartTag()和doAfterBody()函数可用 
SKIP_PAGE:忽略对余下页面的处理,doEndTag()函数可用 
EVAL_BODY_TAG:已经废止,由EVAL_BODY_BUFFERED取代 
EVAL_BODY_BUFFERED:申请缓冲区,由setBodyContent()函数得到的BodyContent对象来处理tag的body,如果类实现了BodyTag,那么doStartTag()可用,否则非法 




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()返回。 
分享到:
评论

相关推荐

    java 自定义标签

    5. `doEndTag()`:结束标签处理,可以返回`SKIP_PAGE`或`EVAL_PAGE`。 开发自定义标签的过程包括: 1. 创建标签处理程序(Java类):实现上述接口或继承类,并编写相应的方法实现标签功能。 2. 编写`.tld`文件:...

    jsp 定制标签(Custom Tag).docx

    - `doStartTag()`: 返回值可为`BodyTag.SKIP_BODY`(跳过Body并直接调用`doEndTag()`)、`BodyTag.EVAL_BODY_INCLUDE`(包括Body并继续)或`BodyTag.EVAL_BODY_BUFFERED`(缓冲Body内容)。 - `doAfterBody()`: ...

    java自定义标签教程[收集].pdf

    返回`EVAL_PAGE`继续,`SKIP_PAGE`则停止。 6. 最后,`release()`方法被调用,释放任何由标签占用的资源。 开发自定义标签时,可以选择直接实现Tag接口,或者继承`TagSupport`类。以下是一个简单的HelloWorld标签...

    jsp自定义带标签体的标签

    在TLD文件中,你需要定义你的标签,包括标签名、类名、标签体类型等属性。例如,对于`bodyTag1`,你应该定义它的名称、类名、标签体类型(通常为`jsp`),以及任何必要的属性(如`countNum`)。 5. **在JSP页面中...

    jsp自定义标签中的困扰

    `BodyTagSupport`是JSP API提供的一种用于处理包含内容(body)的标签的支持类,它是`TagSupport`的子类。 1. **doStartTag()**:这是自定义标签生命周期的第一个方法,当遇到标签开始标记时调用。通常在这里进行...

    Java自定义标签实例分析

    - **结束标签**: 调用`doEndTag()`,返回`EVAL_PAGE`将继续处理页面,返回`SKIP_PAGE`则停止处理。 - **释放资源**: `release()`方法被调用,释放标签占用的资源。 3. **标签支持类** 为了简化开发,通常会从`...

    JSTL自定义标签实例解析

    `TagSupport`适用于无标签体的标签,而`BodyTagSupport`则用于包含标签体的标签。 - `setter`方法用于设置标签属性值,例如`doStartTag()`和`doEndTag()`会在标签开始和结束时被调用。 - `doStartTag()`和`...

    ForEach_java(cusTag).txt

    根据提供的文件信息,本文将详细解释“ForEach_java(cusTag).txt”中涉及的关键知识点,主要包括自定义 JSP 标签库中的 `ForEach` 标签实现及其在 Java Web 应用程序中的应用。 ### 一、ForEach 标签概述 `ForEach...

    自定义标签的内容及使用

    6. 执行`doEndTag()`方法,返回`EVAL_PAGE`或`SKIP_PAGE`决定是否继续执行JSP页面的剩余部分。 7. 最后,调用`release()`方法释放资源。 开发自定义标签的完整步骤包括: 1. 开发标签类,实现所需的接口或继承基类...

    Taglib自定义标签

    `TagSupport`适用于没有标签体(即标签内部没有内容)的标签,而`BodyTagSupport`用于处理包含标签体的标签。 - `doStartTag()`:当遇到标签开始符时调用,用于初始化标签状态。 - `doEndTag()`:标签结束时调用,...

    Java自定义标签 教程

    4. 还有一些其他接口,如`TagSupport`, `BodyTagSupport`等,是`Tag`接口的子接口,提供了默认实现。 **自定义标签的形式**: 自定义标签可以有四种形式: 1. 空标签,如`<hello />` 2. 带有属性的空标签,如`...

    jsp 定制标签(Custom Tag)

    而doEndTag()方法返回Tag.EVAL_PAGE表示标签后的页面内容将继续被处理,返回Tag.SKIP_PAGE则表示不处理后续的页面内容。 对于带内容体的标签处理器类,除了doStartTag()和doEndTag()方法,还需要覆盖doAfterBody()...

    自定义标签

    当你创建一个自定义标签,并且这个标签需要包含JSP页面中的其他内容时,你应该继承`BodyTagSupport`。例如,你可以创建一个“highlight”标签,用于高亮显示其内部的文本。以下是一个简单的实现: ```java import ...

    jsp通过自定义标签库实现数据列表显示的方法.docx

    return EVAL_PAGE; } @Override public int doStartTag() throws JspException { List<UserInfo> users = new ArrayList(); if (cateid == 1) { users.add(new UserInfo("张三", 20, "Zhangsan@163.com")); ...

    jsp程序设计考试题及答案.doc

    4. **BodyTagSupport类的doAfterBody方法**:在给出的代码示例中,`doAfterBody`方法会连续执行两次,因为每次执行后返回`EVAL_BODY_AGAIN`,直到num达到2,返回`SKIP_BODY`结束循环。因此,"good"会被输出2次。 5....

    掌握自定义jsp标签

    通过在doStartTag()方法中返回不同的Tag.EVAL_BODY_INCLUDE、Tag.SKIP_BODY或Tag.EVAL_PAGE常量,可以决定是否继续处理标签体,跳过标签体,或是结束整个页面的处理。例如,可以创建一个条件标签,根据某个条件决定...

    GetProperty_java(cusTag).txt

    - 功能:表示结束标签的处理逻辑,在这里返回`EVAL_PAGE`,意味着继续处理当前页面的后续部分。 ### 3. 反射机制的应用 在`doStartTag`方法中,使用了Java反射机制来动态地调用对象的getter方法获取属性值。具体...

    jsp自定义迭代标签

    TLD文件定义了标签库的行为,包括标签的名称、属性以及功能描述等。 例如,在`myTag.tld`文件中配置迭代标签的信息: ```xml <tlib-version>1.0 <short-name>MyTagLib <uri>...

    JAVA_scwcd_認證部份筆記

    首先,你需要编写Tag Handler,这个类需要实现Tag、IterationTag或BodyTag接口,通常会继承TagSupport或BodyTagSupport。然后,创建一个Tag Library Descriptor (TLD)文件,用于描述标签的行为、名称、类路径以及...

    JSP自定义标签

    return EVAL_PAGE; } @Override public void doInitBody() throws JspTagException { // 初始化body内容 } @Override public void setBodyContent(BodyContent bodyContent) { this.bodyContent = body...

Global site tag (gtag.js) - Google Analytics