频 道 直 达 - 新闻 - 读书 - 培训 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

JSP/Servlet/JSF中对标签库的深入研究(1)

作者: zxm0591 出处:赛迪网 2008-03-05 09:19    砖    好    评论   进入论坛
阅读提示:标签处理器和标签附加信息需要定位在JSP容器类载入器可以找到的地方。标签库描述器可在URL指定的符意位置。JSP1.1规范要求JSP容器接受一个打包成因定结构的JAR文件的标签库。

标签库Taglib

标签被定义和分布在一个称为标签库的结构中,一个标签库是由元信息和类组成的集合:

1、标签处理器:实现定制标签功能的Java类。
2、标签附加信息(TEI):向JSP容器提供边辑以确认标签属性和创建变量的类。
3、标签库描述器(TLD):描述单个标签和整个标签库属性的XML文档。

标签处理器和标签附加信息需要定位在JSP容器类载入器可以找到的地方。标签库描述器可在URL指定的符意位置。JSP1.1规范要求JSP容器接受一个打包成因定结构的JAR文件的标签库。TLD必须是/META-INF目录中名为taglib.tld的文件,JAR文件则复制到/WEB-INF/lib目录下。

一、标签实现

1、开发步骤

a.定义标签的名字、属性、声明的变量和标签体的内容。
b.编写标签库描述器TLD。
c.编写标签处理器。
d.在JSP页面中使用标签。

2、JSP页面在JSP容器中的转换步骤

JSP页面存在三种形式:jsp文件、java文件和class文件。

a.指令元素、和向JSP容器提供转换时信息。
b.HTML行在_jspService()方法中依顺序转换到out.print()语名中。
c.脚本元素的声明被原封不动地复制到_jspService()方法外的源码中。
d.脚本元素的表达式在_jspService()方法中依顺序转换到out.print()语名中。
e.脚本元素的Scriptlet被原封不动地复制到_jspService()方法中。
f.行为元素被转换为执行其功能的运行时逻辑代码。
g.定制标签被扩展到调用其相应标签处理器中方法的Java语句中。

3、标签在JSP容器中的转换步骤

a.JSP容器使用taglib指令元素定位标签库描述器,将页面中用到的定制标签和TLD相匹配。
b.读取标签库描述器的标签列表和每一标签相关的类名字。
c.在页面中遇到一个标签时,查找与具有指定名字的标签前缀相关的一个标签库。
d.容器使用在TLD中找到的标签结构信息生成一系列完成标签功能的Java语句。

二、标签库描述器(TLD)

标签库描述器是一个描述整个标签库标记信息和库中每个标签处理器及其属性的XML文档。

标签库描述器的DTD由一个简单的元素组成,此元素包含下列一些子元素。

整个标签库标记信息。

tlibversion    标签库版本号。是一个点式十进制数,最多为4组小数点分隔的数字组成。
jspversion    标签库所需的JSP规范最低版本。例如JSP1.1
shortname    标签库的缩写名。JSP可以使用该名字作为库中标签的缺省前缀。
uri    标签库唯一URI的元素。典型URL位置来自可下载taglib的位置。
info    标签库描述信息。

每个标签处理器及其属性

tag    在TLD中加入标签,描述组成库的每个标签。
name    与标签库的名字前缀一起使用的标签的名字, 是JSP容器唯一的标签标识。
tagclass    实现标签的标签处理器类的全名。
teiclass    标签附加信息(TEI)类的全名。TEI类给出关于标签处理器创建变量及对标签司性执行的任意有效性验证的信息。
bodycontent    描述标签处理器如何使用标签体的内容。有三种取值:

empty:表示标签体必须为空;
JSP:表示脚本元素和模板及其它标签一样被评估。
tagdependent:体内容被原封不动写入BodyContent,其它脚本元素以源码形式出现,而不被JSP容器解释。

info    标签的人工可读描述性信息。
attribute    使用标签时被编码的属性信息。用于定义标签的属性。

属性名:属性的名字。
true|false:属性在标签用到的位置是否要被编码。
true|false:属性值能否用表达式指定。

三、标签处理器

标签处理器是通过实现JSP容器调用的一系列预定义方法执行定制标签行为的一个Java类。

标签处理器实现了标签的行为,标签处理器是Java类。

1、标签处理器的工作方式

a.导入javax.servlet.jsp和javax.servlet.jsp.tagext包。
b.实现javax.servlet.jsp.tagext包中的Tag接口或BodyTag接口。BodyTag是Tag的子接口。
c.继承TagSupport类或BodyTagSuppoert类。它们是上述接口的缺省实现。
d.重载public int doStartTag()throws JspException方法。

2、标签处理器的接口与实现

javax.servlet.jsp.tagext.Tag是实现标签的最基本的接口。
javax.servlet.jsp.tagext.TagSupport是实现Tag接口的具体类。

通常情况下继承tagSupport类而不直接实现Tag接口通常是有益的。除了对所有必需方法提供了缺省实现外、还保存了pageContext对象及对嵌套标签的支持。

Tag接口包含4个常量,表示doStartTag()和doEndTag()方法可能的返回码。

EVAL_BODY_INCLUDE    当doStartTag()返回时,指明servlet应对标签体进行评估。
SKIP_BODY    当doStartTag()返回时,指明servlet应忽视标签体。
EVAL_PAGE    当doEndTag()返回时,指明页面其余部分应被评估。
SKIP_PAGE    当doEndTag()返回时,指明页面其余部分就被跳过。


共3页: 1 [2] [3] 下一页
【内容导航】
关于 JSP  Servlet  JSF  标签库  Java
专题
Java实用开发全集
Java类的基础教程专题
Java发展动态专题
Java编程开发手册
Java基础教程
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·Java基础教程 (查看68743次)
·UML类图详解 (查看63050次)
·UML统一建模语言 (查看34321次)
·C#技术开发指南 (查看32568次)
·Java编程开发手册 (查看30790次)
·Java编程开发手册 (1196个砖)
·Java基础教程 (429个砖)
·C#技术开发指南 (308个砖)
·.NET开发手册 (238个砖)
·PB开发教程 (223个砖)
·Java编程开发手册 (654个好)
·Java基础教程 (574个好)
·.NET开发手册 (271个好)
·PB开发教程 (212个好)
·Delphi开发技术手册 (187个好)
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。