您的位置:首页 > 编程语言 > Java开发

深入体验JavaWeb开发内幕——传统标签开发接口与实现类方法的解读

2012-11-20 23:18 246 查看

一、Tag接口中主要的方法与字段

1、字段:

staticintEVAL_BODY_INCLUDE

通过输出流输出标签体中的内容。

staticintEVAL_PAGE

继续执行页面其余部分内容。

staticintSKIP_BODY

忽略标签体内容。

staticintSKIP_PAGE

忽略页面内容。

2、方法:

intdoEndTag()

执行实例对象的结束标签。

intdoStartTag()

执行实例对象的开始标签。

TaggetParent()

为标签处理类获取自定义标签的父标签。

voidrelease()

调用标签处理类去等待释放当前存在的状态。

voidsetPageContext(PageContextpc)

设置当前页面的内容。

voidsetParent(Tagt)

设置标签处理类的父标签。.

Tag接口方法详解:

JSP引擎将遇到自定义标签时,首先创建标签处理器类的实例对象,然后按照JSP规范定义的通信规则依次调用它的方法。

1、publicvoidsetPageContext(PageContextpc),JSP引擎实例化标签处理器后,将调用setPageContext方法将JSP页面的pageContext对象传递给标签处理器,标签处理器以后可以通过这个pageContext对象与JSP页面进行通信。

2、publicvoidsetParent(Tagt),setPageContext方法执行完后,WEB容器接着调用的setParent方法将当前标签的父标签传递给当前标签处理器,如果当前标签没有父标签,则传递给setParent方法的参数值为null。

3、publicintdoStartTag(),调用了setPageContext方法和setParent方法之后,WEB容器执行到自定义标签的开始标记时,就会调用标签处理器的doStartTag方法。

4、publicintdoEndTag(),WEB容器执行完自定义标签的标签体后,就会接着去执行自定义标签的结束标记,此时,WEB容器会去调用标签处理器的doEndTag方法。

5、publicvoidrelease(),通常WEB容器执行完自定义标签后,标签处理器会驻留在内存中,为其它请求服务器,直至停止web应用时,web容器才会调用release方法。

二、IterationTag接口中主要的方法与字段

IterationTag接口继承了Tag接口所以其字段与方法除了自己独有的外还保留了从父接口中继承来的。

1、IterationTag接口中的字段:

staticintEVAL_BODY_AGAIN

请求重新执行某一部分的标签体。

2、IterationTag接口中的方法:

intdoAfterBody()

执行或重复执行标签体。

从Tag接口中继承的字段:

EVAL_BODY_INCLUDE,EVAL_PAGE,SKIP_BODY,SKIP_PAGE

从Tag接口中继承的方法:

doEndTag,doStartTag,getParent,release,setPageContext,setParent

三、BodyTag接口中主要的方法与字段

BodyTag接口继承了Iteration接口,除了保有从它的父接口中继承来的字段和方法外还有自己独有的字段和方法。

1、BodyTag接口中的字段

staticintEVAL_BODY_BUFFERED

创建一个新的缓冲区去存放标签体的主体内容。

staticintEVAL_BODY_TAG

不赞成使用的字段。在JavaJSPAPI1.2后已用BodyTag.EVAL_BODY_BUFFEREDorIterationTag.EVAL_BODY_AGAIN替代了该字段的使用。

2.BodyTag接口中的方法

voiddoInitBody()

对标签体内容进行初始化。

voidsetBodyContent(BodyContentb)

设置标签体内容的值。

从其直接父接口ItrationTag中继承来的字段:

EVAL_BODY_AGAIN

从Tag接口中继承来的字段:

EVAL_BODY_INCLUDE,EVAL_PAGE,SKIP_BODY,SKIP_PAGE

从其直接父接口ItrationTag中继承来的方法:

doAfterBody

从Tag接口中继承来的方法:

doEndTag,doStartTag,getParent,release,setPageContext,setParent

四、TaggfggggSurTag类中主要的方法与字段

1、TagSurpport类中的字段:

protected
java.lang.Stringid

自定义标签的id属性值,或空值

protectedPageContextpageContext

页面内容。

2.TagSurpport类中的方法:

intdoAfterBody()

默认的执行标签体。

intdoEndTag()

默认的执行结束标签并返回EVAL_PAGE.

intdoStartTag()

默认的执行开始标签并返回SKIP_BODY.

staticTagfindAncestorWithClass(Tagfrom,java.lang.Classklass)

查找一个最接近被给定类型的实例

java.lang.StringgetId()

获取标签id属性的值否则值为空。

TaggetParent()

获取自定义标签的父标签。

java.lang.ObjectgetValue(java.lang.Stringk)

根据给定的键获取值。

java.util.EnumerationgetValues()

通过标签处理类获取枚举值。

voidrelease()

等待释放当前的状态。.

voidremoveValue(java.lang.Stringk)

移除所给定键的值。

voidsetId(java.lang.Stringid)

为标签设置id属性。

voidsetPageContext(PageContextpageContext)

设置页面内容。

voidsetParent(Tagt)

设置父标签的值。

voidsetValue(java.lang.Stringk,java.lang.Objecto)

根据所给定的键设置值。

从Itration接口中继承的字段:

EVAL_BODY_AGAIN

从Tag接口中继承的字段:

EVAL_BODY_INCLUDE,EVAL_PAGE,SKIP_BODY,SKIP_PAGE

从Object中继承的方法:

clone,equals,finalize,getClass,hashCode,notify,notifyAll,toString,wait,wait,wait

五、
TagSurpport类中主要的方法与字段

1、TagSurpport类中主要字段

protectedBodyContentbodyContent

当前标签体的内容。

2、TagSurpport类中主要方法

intdoAfterBody()

当执行完标签体后不再重复执行标签体内容,而是继续执行页面内容。

intdoEndTag()

默认执行结束标签体返回值为EVAL_PAGE.

voiddoInitBody()

当第一次执行标签体时就初始化标签体。

intdoStartTag()

默认执行开始标签返回值为EVAL_BODY_BUFFERED.

BodyContentgetBodyContent()

获取当前的页面内容。

JspWritergetPreviousOut()

获取之前的输出。

voidrelease()

释放当前状态。

voidsetBodyContent(BodyContentb)

设置页面内容。

用BodyTagSupport类主要方法详解:

BodyTagSupport类中增加了两个方法:

setBodyContent(BodyContentbc):

容器在执行这个标签处理类的实例时,将调用该方法,把标签主体返回的内容缓存在BodyContent类的实例中。BodyContent除了从父类JspWriter继承提供用于向响应体中写入文本的方法,还提供了用于获取它缓冲的标签体内容。

doInitBody():

计算标签主体之前调用该方法进行初始化共,可以向bodyContent对象中写入初始内容,这些内容会放置在标签主体内容之前。

BodyContent类专门用于缓存标签主体返回的内容,包括静态文本以及由嵌套标签或脚本元素所创建的动态内容。

从TagSupport类中继承的字段:

id,pageContext




从BodyTag类中继承的字段:



EVAL_BODY_BUFFERED,EVAL_BODY_TAG




从BodyTag接口中继承的字段:



EVAL_BODY_AGAIN




从Tag接口中继承的字段:



EVAL_BODY_INCLUDE,EVAL_PAGE,SKIP_BODY,SKIP_PAGE




从TagSupport类中继承的方法:



findAncestorWithClass,getId,getParent,getValue,getValues,removeValue,setId,setPageContext,setParent,setValue




从Object类中继承的方法:



clone,equals,finalize,getClass,hashCode,notify,notifyAll,toString,wait,wait,wait




从Tag接口中继承的方法:




getParent,setPageContext,setParent


好了,上面就是关于
开发传统标签接口与实现类相关方法的描述了有不精确的地方请见谅!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐