开发定制标签库-6
2006-04-25 21:20
141 查看
继承TagSupport和BodyTagSupport类
前面我们依次介绍了Tag,IterationTag,BodyTag接口。实际应用当中,我们并不需要直接实现他们。jsp规范中已经为我们提供了两个类TagSupport和BodyTagSupport,用以对IterationTag和BodyTag的缺省实现。
所以,我们只需要根据需要去继承这两个类,然后重写我们需要定制的方法就可以了。
TagSupport类
该类是IterationTag的缺省实现。除了实现原有方法外,本身还增加了一些有用的其他方法和成员变量。下表列出其中重要的几个:
BodyTagSupport类
该类同时继承了TagSupport类,并实现BodyTag接口。除了前表所示方法,该类还提供了一些其它方法便于使用。
定制标签和JavaBeans之间的简单区分
虽然两者都是为了提高组件可重用性而设计的。但是一个经常被问起的问题是:如何决定在何时使用其中的一种技术,而不是另一种。
这里有个简单的比较,来帮助你如何决策。
.JavaBeans是jsp页的数据处理器并增加数据管理的逻辑。主要用以存储。定制标签,倾向于对特定请求的处理。
.标签是线程安全的,而bean则不是。Bean的线程安全是由开发人员手工实现的。
.标签了解他所运行的外部环境(pageContext),而bean则不。
.标签属于转换单位的一部分,而bean独立于转换单位之外。
.标签可以访问隐含对象,bean则不能。(这是对上两条的细节描述)
.标签只有页范围(page scope)。他们在一个请求内和一个页面内被创建。虽然他们可以访问所有的范围。beans则可以被创建于各种不同的范围。标签可以创建和维护bean,反之不然。
.标签的API是围绕jsp页的概念开发的,所以标签只能用在jsp页中。而bean却可以被更广泛的组件使用。
.标签不是持久化对象。而bean可以被持久化(序列化),以被后续使用。
相比之下标签较靠近用户,且只能用于jsp页面;而bean较靠近商业逻辑,更适合处理数据处理和维护类工作,且可以被任何组件重用。因此,首选的使用方法是用户的请求由标签负责处理,而需要应用商业逻辑和数据处理的时候,由标签再调用bean来处理。
前面我们依次介绍了Tag,IterationTag,BodyTag接口。实际应用当中,我们并不需要直接实现他们。jsp规范中已经为我们提供了两个类TagSupport和BodyTagSupport,用以对IterationTag和BodyTag的缺省实现。
所以,我们只需要根据需要去继承这两个类,然后重写我们需要定制的方法就可以了。
TagSupport类
该类是IterationTag的缺省实现。除了实现原有方法外,本身还增加了一些有用的其他方法和成员变量。下表列出其中重要的几个:
名称 | 描述 |
重写的方法和他们的返回值 | |
void doStartTag() | 继承自Tag。返回值SKIP_BODY。 |
void doAfterBody() | 继承自IterationTag。返回值SKIP_BODY。 |
void doEndTag() | 继承自Tag。返回值EVAL_PAGE。 |
处理嵌套标签的有用的方法 | |
void setParent(Tag) | 接受和维护一个父标签的引用。 |
Tag getParent() | 返回父标签的引用。 |
Tag findAncestorWithClass(Tag,Class) | 静态方法。寻找最近的指定类的标签。 |
标签属性操作 | |
void setValue(String,Object) | 设置属性。属性名是字符串,值可以是任何对象。 |
Object getValue(String) | 返回给定属性名的属性的值。 |
Enumeration getValues() | 返回一个所有值的枚举。 |
void removeValue(String) | 删除给定的属性。 |
受保护的实例变量 | |
PageContext pageContext | 一个保存着PageContext对象的变量。 |
BodyTagSupport类
该类同时继承了TagSupport类,并实现BodyTag接口。除了前表所示方法,该类还提供了一些其它方法便于使用。
名称 | 描述 |
重写的方法和他们的返回值 | |
void doStartTag() | 继承自Tag。返回值EVAL_BODY_BUFFERED。 |
void doAfterBody() | 继承自IterationTag。返回值SKIP_BODY。 |
void doEndTag() | 继承自Tag。返回值EVAL_PAGE。 |
用以处理缓冲的方法 | |
void setBodyContent(BodyContent) | 接受和维护一个BodyContent对象(缓冲对象)的引用。 |
BodyContent getBodyContent() | 返回BodyContent对象的引用。 |
JspWriter getPreviousOut() | 返回JspWriter对象,BodyContent就是对他的简单包裹。 |
定制标签和JavaBeans之间的简单区分
虽然两者都是为了提高组件可重用性而设计的。但是一个经常被问起的问题是:如何决定在何时使用其中的一种技术,而不是另一种。
这里有个简单的比较,来帮助你如何决策。
.JavaBeans是jsp页的数据处理器并增加数据管理的逻辑。主要用以存储。定制标签,倾向于对特定请求的处理。
.标签是线程安全的,而bean则不是。Bean的线程安全是由开发人员手工实现的。
.标签了解他所运行的外部环境(pageContext),而bean则不。
.标签属于转换单位的一部分,而bean独立于转换单位之外。
.标签可以访问隐含对象,bean则不能。(这是对上两条的细节描述)
.标签只有页范围(page scope)。他们在一个请求内和一个页面内被创建。虽然他们可以访问所有的范围。beans则可以被创建于各种不同的范围。标签可以创建和维护bean,反之不然。
.标签的API是围绕jsp页的概念开发的,所以标签只能用在jsp页中。而bean却可以被更广泛的组件使用。
.标签不是持久化对象。而bean可以被持久化(序列化),以被后续使用。
相比之下标签较靠近用户,且只能用于jsp页面;而bean较靠近商业逻辑,更适合处理数据处理和维护类工作,且可以被任何组件重用。因此,首选的使用方法是用户的请求由标签负责处理,而需要应用商业逻辑和数据处理的时候,由标签再调用bean来处理。
相关文章推荐
- 开发定制标签库-1
- 开发定制标签库-1
- 开发定制标签库-4
- 开发定制标签库-3
- 【iOS开发-28】制造一个UITabBarController标签控制器、定制UITabBarItem文字图片的6种方式以及More讲解
- 开发定制标签库-5
- JAVAWEB开发之JSTL标签库的使用、 自定义EL函数、自定义标签(带属性的、带标签体的)
- iOS开发那些事-nib实现标签导航
- biztalk定制管道组件(pipeline component)的开发
- WEB开发中必须了解的HTML标签
- Excel 2007的功能区定制和开发
- 自定义标签(JspFragment类、invoke方法、开发带属性的标签)
- JSP自定义标签开发(七)—— xx.tld标签开发之权限管理标签开发
- 网站开发进阶(四十八)JSP c:choose标签注释学习
- [iOS开发必备技巧之]使用IB定制UITableViewCell
- 信阳掌上移动游戏厅为你开发定制房卡牛牛真的是国际化品牌
- 【jsp】开发自定义标签
- TaggingJS – 可以灵活定制的 jQuery 标签系统插件
- 深圳APP定制开发租房分期APP
- H5小游戏定制开发,微信游戏定制开发公司 -找向阳花科技!