标签库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.指令元素<%@page%>、<%@include%>和<%@taglib%>向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 使用标签时被编码的属性信息。用于定义标签的属性。
三、标签处理器
标签处理器是通过实现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()返回时,指明页面其余部分就被跳过。
Tag接口的方法
public void setPageContext (PageContext ctx) 生成的servlet在请求处理器执行其它任务前首先调用此方法,实现类应保存上下文对象以便它可以在标签生命期中使用。从页面上下文中标签处理器可以访问所有JSP隐含对象。
public void setParent(Tag p) 使用一个标答可以找到操作栈中它上面的标签。在setPageContext后立即调用。
public Tag getParent() 返回父标签。
public int doStartTag() throws Jsp 在设置了页面上下文、父标签和开始标记中编码的属性后调用。返回码表明JSP实现servlet是否就评估标签体。
public int doEndTag()throws JspException 当遇到结否标记时调用。返回码表明JSP是否就继纽页面的其余部份。
public void release() 确保在页面退出前被调用。释放资源并重置标签处理器状态。
TagSupport类的方法
public static Tag finAncestorWithClass(Tag thisTag, Class cls) 为所需的父标签处理器查找运行时标签栈。一个标签处理器可以提供其范围内子标签调用的方法。
public void setId(String id) 保存和检索在id属性中指定的名字。
public void setValue(String name, Object o) 在本地哈希表中设置指定名字的值。
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
JSP中标签库的深入研究
来源:互联网
作者:west263.com
时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
热点关注
- JBoss jBPM2.0工作流引擎
- 在java体系结构中集成Macr
- 对代理模式与Java动态代理
- Java 实现连接sql server
- 基于Tcp/IP的JAVA简单聊天
- JAVA正则表达式和特殊字符
- Visual Studio:针对 Java
- 在Java中如何确定浮点数的
- jBPM-JPDL v3.2环境部署—
- JSTL 入门:表达式语言
- Textarea标签封装为Web在
- jsp页面显示数据导出到exc
- JBossIDE Eclispe 开发EJB
- java.util.Collections.so
- 目前最好的JSP分页技术
- [Boss Connector笔记]第3
- JSP SmartUpload上传文件
- javascript 动态添加表格
- JS代码做的导航栏菜单.帮
- Java容器类学习心得,欢迎
- 经过百般努力,终于用JSP写
- ANTLR中文手册之三(ANTLR
- Java入门笔记5_异常
- 关于Oracle9i中BLOB类型的
- 一个在JSP下实现将动态页
- java.lang.ArrayIndexOutO
- web.xml和struts-config.x
- JSP XML构架网站的实例
- 我在Spring中解决中文乱码
- javascript里的document.a
- javax.naming.NameNotFoun
- Tomcat中DataSource的配置
- 一个简单的用JAVA实现的屏
- Hibernate配置文件中映射
- java(Web)中相对路径,绝
IDC资讯
虚拟主机
域名注册
托管租用
vps主机
智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD



