深入体验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
好了,上面就是关于开发传统标签接口与实现类相关方法的描述了有不精确的地方请见谅!
相关文章推荐
- JSP自定义标签开发接口与实现类方法的解读
- 深入体验JavaWeb开发内幕——使用简单标签实现传统标签开发实现的几个功能
- 传统方法左边接口,右边实现类,spring如何通过接口来调用类,又如何去确定是哪一个类
- Skylinesoft TEPro6.1 通过开发接口加载WFS和WMS图层的实现方法
- C语言开发函数库时对外接口隐藏库内结构体实现细节的方法
- Mybatis之原始dao开发方法(程序员需要写dao接口和dao实现类)(11)
- CodeIgniter开发实现支付宝接口调用的方法示例
- 开发web service的接口实现方法
- (礼拜一log)前端开发:<td> 标签的 colspan 属性 & 两个div并排、一个宽度固定的实现方法
- 深入体验JavaWeb开发内幕——进一步体味传统自定义标签的接口与实现类
- ATL开发的activex要放上网能调用方法要先实现安全接口
- Android开发实现webview中img标签加载本地图片的方法
- CodeIgniter开发实现支付宝接口调用的方法示例
- Cocoa Touch 入门记——《精通 iOS 开发》学习心得(3) [标签栏实现多视图的方法(运用 xib)]
- 在串口通信开发中实现自动查找串口端口的方法
- 多态理解,方法重写分析,类继承与接口实现中,方法重写的实现机制的区别
- 统一接口开发架构,统一接口架构实现封装
- 学习笔记_JFame事件处理的三种方法(3)类直接实现接口法
- Session HttpSession接口中的方法 利用Cookie实现Session跟踪
- [Android开发] 修改Gradle实现同时安装多个相同apk共存的方法和分析