第5章 JSP自定义标记.ppt

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 JSP自定义标记

利用jar文件的标记库分发方式 整个标记库作为一个jar分发,所有标记处理类文件及标记库描述文件都放在jar中,而且标记库描述文件必须放到jar包的META-INF下。 第5章 JSP自定义标记 本章主要内容 自定义标记的定义和分类 自定义标记库的组成 属性自定义标记 处理体内容的自定义标记 引入脚本变量的自定义标记 嵌套自定义标记 自定义标记库的发布 自定义标记的定义和分类 自定义标记库的组成 属性自定义标记 处理体内容的自定义标记 引入脚本变量的自定义标记 嵌套自定义标记 自定义标记库的发布 JSP自定义标记可以看成是对JSP标准动作标记的一种扩展。自定义标记是用户定义的以XML形式表示的JSP语言元素。当一个包含自定义标记的JSP页面被转化为Servlet时,Web容器自动调用自定义标记对应的标记处理程序来处理JSP页面。 通过自定义标记,将一些重复性的、与特定应用相关的业务逻辑以文档化标记的形式进行调用,维护JSP以文档为中心的开发方式,最大程度地降低JSP页面的代码含量,提高JSP页面可维护性。 自定义标记由下面几部分组成 (1)标记名称。标记名称由两部分组成:前缀,用来区分不同标记库,不同的标记库具有不同的前缀;后缀,用来区分统一标记库中的不同标记。前缀和后缀之间以冒号隔开。如自定义标记mytag:hello表示使用的是mytag标记库中的hello标记。 (2)属性。就像XML文件中的标记一样,自定义标记可以有属性,可以通过属性来动态控制标记的行为。如标记mytag:hello name=“John”表示自定义标记hello带有一个name 属性。 (3)体内容:在标记的开始元素与结束元素之间的内容称为体内容。如自定义标记mytag:hello name=“John”welcome/mytag:hello 的体内容为welcome。 根据对体内容的不同行为,可以将自定义标记分为两种类型: (1)处理体内容的标记。对体内容(即对在开始和结束标记之间的内容)进行操作的标记,它必须继承接口javax.Servlet.jsp.tagext.BodyTag。 (2)简单标记。不对体内容进行处理的标记。它必须继承接口javax.Servlet.jsp.tagext. Tag。 注意:简单标记仍然可以有体内容,只不过它的标记处理程序不能读取体内容。 简单标记的处理过程 1)Web容器设置标记处理器的pageContext属性来初始化标记处理器。 (2)Web容器设置标记处理器的parent属性(如果标记不被其他标记包含,则该属性为null)。 (3)设置标记开发定义的标记参数,它是一个从XML标记属性到相应标记处理器bean的属性的映射过程。如被调用的标记为mytag:hello name=“John”,则Web容器调用标记处理器的setName()方法。 (4)Web容器调用标记处理器的doStartTag()方法。方法返回SKIP_BODY,引导Web容器忽略体内容;返回EVAL_BODY_INCLUDE, Web容器分析体内容及其包含的子标记。 (5)Web容器调用标记处理器的doEndTag()方法。方法返回SKIP_PAGE,引导Web容器忽略页面其他内容;返回EVAL_PAGE,Web容器分析页面其他内容。 (6)Web容器调用标记处理器的release()方法,释放标记处理执行期间使用的资源,重置标记处理器的属性状态等。 体标记的处理过程 (1)Web容器设置标记处理器的pageContext属性来初始化标记处理器。标记处理器使用这个属性访问使用该标记的JSP页面信息。 (2)Web容器设置标记处理器的parent属性(如果标记不被其他标记包含,则该属性为null)。 (3)设置标记开发定义的标记参数,它是一个从XML标记属性到相应标记处理器bean的属性的映射过程。如被调用的标记为mytag:hello name=“John”,则Web容器调用标记处理器的setName()方法。 (4)Web容器调用标记处理器的doStartTag()方法。方法返回SKIP_BODY,引导Web容器忽略体内容;返回EVAL_BODY_INCLUDE,Web容器分析体内容及其包含的子标记。 (5)调用SetBodyContent()方法。 (6)调用doInitBody()方法。方法返回SKIP_BODY,引导Web容器忽略体内容;返回EVAL_BODY_Tag, Web容器分析体内容及其包含的子标记。 (7)调用doAfterBody()方法。方法返回SKIP_BODY,引导Web容器忽略体内容;返回EVAL_BODY_Tag,Web容器分析体内容及其包含的子标记。 (8)Web容器调用

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档