`

BodyTag和Tag接口的关系、SimpleTag接口的方法(第四天)

    博客分类:
  • JSP
阅读更多

BodyTagTag接口的关系

interface javax.servlet.jsp.tagext.BodyTag-->interface javax.servlet.jsp.tagext.Tag

------------------------------------------

+EVAL_BODY_AGAIN:int//继续执行标签体

-----------------------------------------

+doInitBody():void

+setBodyContent(javax.servlet.jsp.tagext.BodyContext):void

+doAfterBody():int

BodyTag的处理过程

1setPageContext(javax.servlet.jsp.PageContext):void

2setParent(javax.servlet.jsp.tagext.Tag):void //设置此标签的父标签,也就是上一层标签

3setParent()

4doStartTag():int

5setBodyContent(javax.servlet.jsp.tagext.BodyContent):void//设置方法体

6doInitBody():void//

7doAfterBody():int

/* 这个方法会被不断的调用直到不再满足条件,通过这个方法来控制返回,从而控制循环是否中断

  SKIP_BODY是跳出标签体的,EVAL_BODY_INCLUDE是继续执行标签体,通过返回这两个值来控制循环是否*/

8doEndTag():int

9release():void

SimpleTag接口的方法

javax.servlet.jsp.tagext.SimpleTag

------------------------------------------

+doTag():void

+getParent():JspTag

+setJspBody(JspFragment jspBody):void

+setJspContext(JspContext pc):void

+setParent(JspTag parent):void

SimpleTage接口的生命周期(JSP2.0的自定义标签接口)

 

1new:      

   每次遇到标签,容器构造一个SimpleTag的实例,这个构造方法没有参数。和红典的标签一样,          SimpleTag不能缓冲,故不能重用,每次都需要构造新的实例。

2setJspContext()setParent(): 只有这个标签在另一个标签之,才调用setParent()方法;

3,设置属性:调用每个属性的setter方法;

4setJspBody();

5doTag(): 所有标签的逻辑、迭代和Body计算,都在这个方法中;

6return

例:

package com.tag;

public class HelloTag implements Tag

{

        private PageContext pageContext;

        private Tag parent;

     public HelloTag(){ 

          super();

     }

    

    /**

      *设置标签的页面的上下文

      */

     public void setPageContext(final PageContext pageContext) {

           this.pageContext=pageContext; 

     }

    /**

      *设置上一级标签

      */

     public void setParent(final Tag parent) {  

          this.parent=parent;  

     }

     /**

      *开始标签时的操作

      */

     public int doStartTag() throws JspTagException{  

          return SKIP_BODY;  //返回SKIP_BODY,表示不计算标签体

     }

     /**

      *结束标签时的操作

      */

     public int doEndTag() throws JspTagException{

            try{  

                 pageContext.getOut().write("Hello World!你好,世界!");

            }                  

          catch(java.io.IOException e){

                throw new JspTagException("IO Error: " + e.getMessage());

          } 

          return EVAL_PAGE;

      }

     /**

      *release用于释放标签程序占用的资源,比如使用了数据库,那么应该关闭这个连接。

      */

     public void release() {}   

     public Tag getParent(){   

        return parent;

     }

}

xxx.tld

<?xml version="1.0" encoding="ISO-8859-1" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"

    version="2.0">

  <tag>

    <description>Extends TagSupport</description>

    <name>hello</name>

    <tag-class>com.tag.HelloWorldTag</tag-class>

    <body-content>jsp</body-content>

  </tag>

</taglib>

web.xml

<web-app>

<taglib-uri>/xxx</taglib-uri>

       <taglib-location>/WEB-INF/tlds/xxx.tld</taglib-location>

</web-app>

xxx.jsp

<%@ taglib uri="/xxx" prefix="mytag" %>

<%@ page contentType="text/html; charset=gb2312" %>

<html><head><title>first cumstomed tag</title></head><body>

<p>以下的内容从Taglib中显示: </p>

<p><i><mytag:hello_int/></i>

<br>

<p><mytag:hello_int></mytag:hello_int>

</body></html>

JSP2.0中的表达式语言(EL表达式)

分享到:
评论

相关推荐

    自定义标签库

    JspTag 接口是 JSP2.0 之前的标签接口,包括 Tag 接口、IterationTag 接口和 BodyTag 接口。TagSupport 类是一个实现了 Tag 接口的类,BodyTagSupport 类是一个实现了 BodyTag 接口的类。 SimpleTag 接口 ...

    JSP动态网页设计:第10章 自定义标签.ppt

    3. **BodyTag**:扩展了Tag接口,用于处理有内容的标签,添加了`setBodyContent()`和`doAfterBody()`等方法。 4. **SimpleTag**:JSP 2.0引入,简化了标签处理,只需实现`doTag()`方法。 **接口详解**: - **Tag...

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

    Tag接口是基础接口,它定义了如`doStartTag()`和`doEndTag()`等生命周期方法,适用于需要处理标签体(Body)的情况。而SimpleTag接口是JSP 2.0引入的,用于创建不处理标签体的简单标签。 `TagSupport`和`...

    jdbc技术与数据库

    JDBC(Java Database Connectivity)是Java编程语言中用于与关系型数据库交互的一组接口和类,它提供了一种标准的API,使得开发者可以使用Java语言来连接和操作各种不同类型的数据库。JDBC技术是Java开发人员必备的...

    Java自定义标签实例分析

    `Tag`接口是经典且必须实现的接口,它定义了标签生命周期中的一系列方法,如`doStartTag()`和`doEndTag()`。`SimpleTag`接口是JSP 2.0引入的,适用于更简单的标签实现,只需要实现`doTag()`方法。 2. **标签生命...

    jsp自定义标签库问答集锦.

    3. **接口关系说明**:从上图可以看出 JspTag 是所有标签接口的基础,Tag 和 SimpleTag 分别提供了不同的功能,而 TagSupport 和 BodyTagSupport 提供了具体的实现支持。 #### 十一、Tag 实现的关键方法 1. **方法...

    java自定义标签教程

    `Tag`接口还有两个子接口,`SimpleTag`和`Tag`,其中`SimpleTag`是JSP 2.0引入的,适用于简单的标签处理;而`Tag`接口是经典接口,通常需要实现`IterationTag`,用于处理迭代标签。 `TagSupport`和`BodyTagSupport`...

    jsp标签库(详细)

    - **tag处理类**:负责执行标签的实际功能,可以是Tag接口的实现,或是BodyTag或SimpleTag接口的实现,具体取决于标签是否包含体内容或是否简单。 - **tag库描述**:定义了标签库中每个标签的行为,包括标签的属性、...

    自定义标签的开发

    通常,这些接口包括`javax.servlet.jsp.tagext.Tag`或`javax.servlet.jsp.tagext.SimpleTag`。`Tag`接口是经典标签的基础,适用于需要处理内容体(Body)的标签,例如循环或条件语句。而`SimpleTag`接口是JSP 2.0...

    jsp自定义标签

    - **BodyTag接口**(JSP1.2):处理带有体内容的标签,增加了`doAfterBody()`和`doBeforeBody()`方法。 - **IterationTag接口**(JSP1.2):处理迭代标签,通常与BodyTag一起使用。 - **SimpleTag接口**(JSP2.0):...

    jsp实例学习,学习的最佳例子

    以下是一些接口方法的简要说明: - `doStartTag()`: 标签开始时调用。 - `doEndTag()`: 标签结束时调用。 - `doAfterBody()`: 处理标签体后调用。 - `release()`: 标签使用完毕后释放资源。 - `doInitBody()`:...

    JSP扩展——自定义标签

    这三个接口之间的关系是:`BodyTag`接口扩展自`IterationTag`,而`IterationTag`又扩展自`Tag`接口。 - `Tag`接口:适用于不需要处理标记体的简单标签。 - `IterationTag`接口:适用于需要处理循环的标签,如在for-...

    自定义taglib的开发.pdf

    本文将详细解释如何开发自定义taglib,包括实现Tag、IterationTag和BodyTag接口,以及如何添加属性、变量和使用TagExtraInfo(TEI)类。 首先,自定义标签需要实现以下三个接口之一: 1. **Tag接口**:这是最基础...

    掌握自定义jsp标签

    BodyTag接口扩展了Tag接口,并添加了一个doAfterBody()方法,这个方法会在每次遇到标签体的内容时被调用。 4. **用自定义标签控制流程** 自定义标签不仅可以封装功能,还可以用来控制页面的流程。通过在doStartTag...

    JAVA_scwcd_認證部份筆記

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

    jsp 定制标签(Custom Tag).docx

    **四、带Body的标签处理器类方法详解** 对于带Body的标签,`doStartTag()`的返回值决定Body内容的处理策略: - `SKIP_BODY`:跳过Body内容,直接执行`doEndTag()`。 - `EVAL_BODY_INCLUDE`:包含Body内容并继续处理...

    jsp自定义标签介绍与操作实例.doc

    - **简单标签**:实现`Tag`接口,生命周期方法包括`doStartTag()`和`doEndTag()`。容器在遇到开始和结束标签时分别调用这两个方法。 - **正文标签**:实现`BodyTag`接口,增加了`doInitBody()`, `doAfterBody()`...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    全书一共被压缩为5个rar,这是第四个!!!! 其他的请看ID:ljtt123(本人分享) 本博客提供的所有教程的资源原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何...

    JSP自定义标签.ppt

    BodyTagSupport同时实现了BodyTag、Tag和IterationTag接口。每个接口都有一系列的方法,例如: - `doStartTag()`:处理标签开始。 - `doEndTag()`:处理标签结束。 - `release()`:释放资源。 - `doInitBody()`:...

Global site tag (gtag.js) - Google Analytics