`
haijun0314
  • 浏览: 8181 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SKIP_BODY,SKIP_PAGE,EVAL_BODY_INCLUDE,EVAL_BODY_AGAIN

jsp 
阅读更多
SKIP_BODY,SKIP_PAGE,EVAL_BODY_INCLUDE,EVAL_BODY_AGAIN返回值的各个含义
SKIP_BODY                  隐含0:跳过了开始和结束标签之间的代码。 
EVAL_BODY_INCLUDE隐含1:将body的内容输出到存在的输出流中  
SKIP_PAGE                  隐含5:忽略剩下的页面。 
EVAL_PAGE                 隐含6:继续执行下面的页 
--------------------------------------------------------------- 

doStartTag()和doEndTag()返回值是在Tag  Interface里定义的静态int 

SKIP_BODY隐含0     

在doStartTag()方法中,若返回EVAL_BODY_INCLUDE就计算标签的body 
                                      若返回SKIP_BODY就不计算标签的body 
  
  在doEndTag()方法中,若返回EVAL_PAGE容器在标签结束时继续计算jsp页面的其它部分, 
                                      若返回SKIP_PAGE则在标签结束时停止计算jsp页面其他的部分。 
  
  当你实现了BodyTag接口时,也就是你进行带body标签的开发时,有doAfterBody()方法。 
              当返回EVAL_BODY_TAG时,表示继续计算一次BodyTag,直到返回SKIP_BODY才会调用doEndTag()方法

在doStartTag()方法中,若返回EVAL_BODY_INCLUDE就计算标签的body 
                                      若返回SKIP_BODY就不计算标签的body  

传统的标签的生命周期:

当容器创建一个新的标签实例后,通过setPageContect(PageContext)来设置标签的页面上下文。
使用setParent(Tag)方法设置这个标签的上一级标签,如果没有上一级标签,设置为null
设置标签的属性,这个属性在标签库描述文件中定义,如果没有定义属性,就不调用此类方法。
调用doStartTag(),这个方法有两个返回值:              

1、如果返回的是:EVAL_BODY_INCLUDE, 则继续计算Body。                                            

2、如果返回的是:SKIP_BODY 就不计算 Body。

调用doEndTag(),这个方法也有两个返回值:                                                      

1、如果返回的是:EVAL_PAGE , 容器将在标签结束时继续计算 JSP 页面其他的部分;                  

2、如果返回的是:SKIP_PAGE ,容器将在标签结束时停止计算 JSP 页面其他的部分。

调用release() 方法释放程序占用的任何资源。


带有Body的标签的生命周期:

当容器创建一个新的标签实例后,通过setPageContect(PageContext)来设置标签的页面上下文。

使用setParent(Tag)方法设置这个标签的上一级标签,如果没有上一级标签,设置为null

设置标签的属性,这个属性在标签库描述文件中定义,如果没有定义属性,就不调用此类方法。

调用doStartTag(),这个方法有两个返回值:1、如果返回的是:EVAL_BODY_INCLUDE, 则继续计算Body。                                                                                                                2、 如果返回的是:SKIP_BODY 就不计算 Body。
       调用 setBodyContent() 设置当前的 BodyContent

调用 doInitBody() ,如果在计算 BodyContent 时需要进行一些初始化,就在这个方法中进行。
       每次计算完BodyTag后调用doAfterBody():1、如果方法返回 EVAL_BODY_TAG, 继续计算Body, 直到返回 SKIP_BODY;                                                                                        2、如果方法返回 SKIP_BODY 则执行第 8 步;                                                               
       调用doEndTag(),这个方法也有两个返回值:1、 如果返回的是:EVAL_PAGE , 容器将在标签结束时继续计算 JSP 页面其他的部分;                                                                     2、如果返回的是:SKIP_PAGE ,容器将在标签结束时停止计算 JSP 页面其他的部分。
       调用release() 方法释放程序占用的任何资源。
分享到:
评论

相关推荐

    java 自定义标签

    1. `doStartTag()`:初始化标签,可以返回`SKIP_BODY`、`EVAL_BODY_INCLUDE`或`EVAL_BODY_AGAIN/EVAL_BODY_BUFFERED`。 2. `doInitBody()`(仅在实现了`BodyTag`或`BodyTagSupport`时使用):进行标签体的一些初始化...

    jsp 定制标签(Custom Tag).docx

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

    Java web自定义标签知识.docx

    返回值同样有`EVAL_BODY_AGAIN`、`SKIP_BODY`和`SKIP_PAGE`供选择。 3. `doEndTag()`:在标签结束时调用,处理页面剩余部分。返回值`EVAL_PAGE`表示继续处理余下页面。 二、返回值作用域 理解这些返回值的作用至关...

    自定义(jsp)标签

    1. **Tag**: 这是所有传统标签的父接口,它定义了两个核心方法 `doStartTag()` 和 `doEndTag()`,以及四个常量 `EVAL_BODY_INCLUDE`、`SKIP_BODY`、`EVAL_PAGE` 和 `SKIP_PAGE`。 - `doStartTag()`: 当JSP引擎遇到...

    jsp自定义标签中的困扰

    例如,返回`Tag.EVAL_BODY_AGAIN`表示需要继续读取下一个字符,而`Tag.SKIP_BODY`则停止处理。 5. **doEndTag()**:这是标签生命周期的最后一个方法,当遇到标签结束标记时调用。在此处进行清理工作,如释放资源或...

    ForEach_java(cusTag).txt

    - `EVAL_BODY_INCLUDE`:表示需要执行后续的标签体,并允许在标签体中访问当前迭代的元素。 - `SKIP_BODY`:如果集合为空或未找到,则跳过标签体。 #### 2. `doAfterBody()` 方法 - **作用**:在每次迭代后被调用...

    JSTL自定义标签实例解析

    - `EVAL_BODY_INCLUDE`: 处理标签体,但忽略`setBodyContent()`和`doInitBody()`。 - `EVAL_BODY_AGAIN`: 对标签体进行循环处理。 2. **标签库描述文件(.tld)** - .tld文件是XML格式,用于定义标签库,包括...

    Taglib自定义标签

    - `EVAL_BODY_INCLUDE`或`EVAL_BODY_AGAIN`:处理标签体并可能重复处理。 - `SKIP_PAGE`:停止当前页面的进一步处理,直接将结果返回给客户端。 - `EVAL_PAGE`:继续执行剩余的页面内容。 **标签库描述文件(....

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

    4. `doAfterBody`方法:给定的JavaBean代码中,`doAfterBody`方法会连续输出两次"good",因为每次返回`EVAL_BODY_AGAIN`时会再次调用此方法,直到num达到2,然后返回`SKIP_BODY`结束。所以选项B正确,输出两次。 5....

    jsp 定制标签(Custom Tag)

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

Global site tag (gtag.js) - Google Analytics