1. 1、本文档共52页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
自定义标签(Tag)训练 1.实训目标 创建一个Servlet的例子,并配置运行这个例子.了解Servlet的编程要点和配置步骤。 2.实训场景 (此处把程序结果的界面粘贴到这里就可以了) 3.概念及定义 在 JSP 应用程序中添加自定义标签的能力可以使您将工作重点放到以文档为中心的开发方式上。可以使 Java 代码不出现在 JSP 页中,从而使这些页面更容易维护。 可以定义两种类型的标签:简单标签和正文标签 javax.servlet.jsp.tagext.Tag javax.servlet.jsp.tagext.BodyTag 对正文进行操作,即对在开始和结束标签之间的内容进行操作的,标签必须实现 BodyTag接口。在这个教程中,我们将称这些标签为正文标签。我们将不对其正文操作的标签称为简单标签。简单标签可以实现Tag接口,尽管不要求它们这样做。要记住不对其正文操作的标签仍然 有 正文,只不过,它的标签处理程序不能读取这个正文。 简单标签 构建一个简单标签,我们需要完成以下步骤: 创建实现了 Tag 接口(准确地说是 javax.servlet.jsp.tagext.Tag)的标签处理程序类。 创建一个 TLD 文件。 在标签处理程序 Java 类中创建属性。 在 TLD 文件中定义与标签处理程序 Java 类中定义的属性对应的属性。 在 TLD 文件中声明 scriptlet 变量。 实现 doStartTag() 方法。在标签处理程序类中,根据属性将值设置到 scriptlet 变量中。 为了编写标签处理程序,必须实现 Tag 接口。标签处理程序接口有以下方法: 方法 作用 int doStartTag() throws JspException 处理开始标签 int doEndTag() throws JspException 处理结束标签 Tag getParent()/void setParent(Tag t) 获得/设置标签的父标签 void setPageContext(PageContext pc) pageContext 属性的 setter 方法 void release() 释放获得的所有资源 TagSupport类使得自定义标签不必直接实现 Tag 接口。这个类以有意义的默认方法实现 Tag 接口,因而使开发自定义标签更容易。 在默认情况下,TagSupport 实现了 doStartTag() 以使它返回 SKIP_BODY 常量,表示将不对标签正文进行判断。 此外,在默认情况下,doEndTag() 方法返回 EVAL_PAGE,它表示 JSP 运行时引擎应当对页面的其余部分进行判断。 最后,TagSupport 实现了 release(),它设置 pageContext 及其父元素为 null。 TagSupport 类还实现了 IterationTag 接口和 doAfterBody(),这样它就返回 SKIP_BODY。 TLD 文件对自定义标签处理程序的作用就像 Web 部署描述符对 servlet 的作用。 TLD 文件列出了从标签名到标签处理程序的映射。 这个文件中的大多数数据都是在 JSP 页转换时使用的。 TLD 文件通常保存在 Web 应用程序的 WEB-INF 目录,并在 web.xml 文件中声明。它们一般用 .tld 扩展名结束。 正文标签 可以编写标签处理程序对其 正文内容 进行操作。记住,标签的正文内容是 JSP 页中出现在自定义标签的开始和结束标签之间的数据。操纵其正文的标签称为 正文标签。编写正文标签处理程序比简单标签处理程序要复杂。 注意: 记住,简单标签也可以有正文。惟一的不同是简单标签不能读取或者操纵其正文。 要编写正文标签处理程序,必须实现 BodyTag 接口。BodyTag 实现了 Tag 实现的所有方法,而且还实现了另外两个处理正文内容的方法: 方法 目的 void setBodyContent(BodyContent b) bodyContent 属性的 Setter 方法。 void doInitBody() 准备对正文进行判断。每次调用标签时,在获得新的 BodyContent 并通过 setBodyContent() 对其进行设置之后调用一次。 如果没有请求正文内容就不调用,因为 doStartTag() 返回 EVAL_BODY_BUFFERED。 就像 Tag 接口有 TagSupport 类一样,BodyTag 接口有 BodyTagSupport 类。 因此,正文标签处理程序只需要覆盖它们要使用的方法。BodyTagSupport 类继承了 TagSupport 并实现

文档评论(0)

精华文档888 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档