第06章-JSP标签技术【PPT课件】_第1页
第06章-JSP标签技术【PPT课件】_第2页
第06章-JSP标签技术【PPT课件】_第3页
第06章-JSP标签技术【PPT课件】_第4页
第06章-JSP标签技术【PPT课件】_第5页
已阅读5页,还剩121页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第 6章 本章内容 定义标签的开发 解 种类型标签的开发 本章内容 从 用标签不但可以实现代码重用,而且可以使 为了进一步简化 用它们可以开发简单标签。 定义标签的开发 标签扩展 自定义标签的开发步骤 定义标签的开发 所谓自定义的标签是用 当其在 所以有时自定义标签又叫作自定义动作 ( 。 在 一类是 简单的 ( 自定义标签 , 一类是 传统的 ( 自定义标签 。 传统的自定义标签是 简单的自定义标签是 标签扩展 要开发自定义标签,些接口和类称为标签扩展 6 J s pT S i m pl eT S i m pl eT o r t 接口中没有定义任何方法,它只起到接口标识和类型安全的作用。 来实现简单的自定义标签。 标签扩展 除上面的接口和类外,标签处理类还要使用到 定义标签的开发步骤 创建自定义标签需要创建下面两步: 创建标签处理类。 创建标签库描述文件 1. 创建标签处理类 标签处理类( 实现某个标签接口或继承某个标签类的实现类,程序 实现了标签的功能是向 程序 . 创建标签库描述文件 标签库描述文件 (用来定义使用标签的 是 展名一般为 面的 程序 3. 在 在 要通过式如下: 缀名称不能使用 们包括 程序 一,它允许在 二,它是由 接口共定义了 5个方法: 1 该方法由容器调用,用来设置 其在标签处理类中可用。 该方法由容器调用,用来设置父标签对象。 若标签带标签体,容器调用该方法将标签体内容存放到 :返回当前标签的父标签。 方法是简单标签的核心方法,由容器调用完成简单标签的操作。 2简单标签的生命周期 当容器在 将加载标签处理类并创建一个实例,然后调用标签类的生命周期方法。标签的生命周期有下面几个主要阶段: 1)调用 容器为该方法传递一个 实例称为 将该对象保存到一个实例变量中以备以后使用。 、 、 和 等。该类还提供了 ,它返回 来向 2简单标签的生命周期 2)调用 标签可以相互嵌套。在相互嵌套的标签中,外层标签称为 父标签( 内层标签称为子标签( 如果标签是嵌套的,容器调用 设置标签的父标签对象。因为 返回一个以返回的父标签可以是实现 2简单标签的生命周期 3)调用属性的修改方法 如果自定义标签带属性,那么容器在运行时将调用属性修改方法设置属性值。由于方法格式依赖于属性名和类型,这些方法在标签处理类中定义。 例如,假设标签处理类提供了下面属性: 则应该提供下面的属性修改方法: 2简单标签的生命周期 4)调用 如果标签包含标签体内容,容器将调用法设置标签体。它将标签体中的内容存放到后调用该对象的输出标签体。在本章的后面将详细讨论 2简单标签的生命周期 5)调用 该方法是简单标签的核心方法,在 中完成标签的功能。该方法不返回任何值,当它返回时,容器返回到前面的处理任务中。不需要调用特殊的方法,使用常规的可以控制所有迭代和标签体的内容。 除实现了 提供了另外三个方法。 :返回标签中要处理的 :返回存放了标签体的内容。 根据给定的实例和类型查找最接近的实例。该方法主要用在开发协作标签中。 编写简单标签处理类通常不必实现 是继承 且仅需覆盖该类的 。修改 ; A ); 现在时间是: + ); 理解 元素 元素 元素 元素 元素 理解 自定义标签需要在 在器将读取中获取有关自定义标签的信息,如标签名、标签处理类名、是否是空标签以及是否有属性等。 的根元素是,该元素定义了一些子元素。下面详细说明这些元素的使用。 元素 元素是 元素带若干属性,它们指定标签库的命名空间、版本等信息等。下面是 元素的 只有 和 元素是必须的,其他元素都是可选的。 元素 元素指定在 如,若该元素的定义如下: 则在 这里的 元素值看上去像一个 实际上它仅仅是一个逻辑名称,并不与任何 器使用它仅完成 元素 绝对 如,。 根相对 “ /”开头且不带协议、主机名或端口号的 被解释为相对于 。 非根相对 以“ /”开头也不带协议、主机名或端口号的 被解释为相对于当前 要看它在哪使用的。 元素 在 指定 元素 ,这时容器会尝试将 “ /”开头)。例如,对 果没有在 素,在 1. 容器如何查找 容器是如何找到正确的 际上,在部署一个 器会自动建立一个 只要把 器就会找到这个 为标签库建立一个映射。 容器自动查找 在 / 在 / 2. 在 在 发人员必须在 为 后,素,建立 例如,对于上述标签库,可以将下面代码加到 素中。 元素可以包含一个或多个 元素,每个 元素都提供了关于标签的信息,如在 签处理类及标签的属性等。 元素的 元素 在一个 为容器不能解析标签处理类。因此,下面代码是非法的。 元素 但是,可以使用一个标签处理类定义多个名称不同的标签。例如 : 在 设使用 和 两个标签都将调用 元素 如果自定义标签带属性,则每个属性的信息应该在 元素中指定。下面是元素的 在 元素中,只有 元素是必须的且只能出现一次。所有其他元素都是可选的并最多只能出现一次。 元素 的子元素 指定标签体的内容类型,在简单标签中它的值是下面三者之一: 认值) 元素值指定为 示标签不带标签体。下面的例子声明了标签并指定标签体为空。 . 对空标签,如果使用时页面作者指定了标签体,容器在转换时产生错误。下面对该标签的使用是不合法的。 . . 元素值指定为 示标签体中不能包含 表达式 和小脚本 ),但可以包含普通模板文本、 准动作、甚至在该标签中嵌套其他自定义标签。下面的例子声明了 标签,并指定标签体中不能使用脚本。 if . 因此,下面对 标签的使用是合法的: 2+3 = $2+3 3. 元素值指定为示容器不会执行标签体,而是在请求时把它传递给标签处理类,由标签处理类根据需要决定处理标签体。 . 对该标签, 元素值必须指定为 几种类型标签的开发 空标签的开发 带属性标签的开发 带标签体的标签 迭代标签 在标签中使用 使用动态属性 编写协作标签 空标签的开发 空标签是不含标签体的标签,它主要向 面是一个标签处理类的实现,它是一个空标签。当它在页面中使用时打印一个红色的星号( *)字符。 程序 空标签的开发 下面在 素描述该标签的定义。 空标签的开发 在 种是由一对开始标签和结束标签组成,中间不含任何内容,例如: 另一种写法是简化的格式,即在开始标签末尾使用一个斜线( /)表示标签结束,例如: 程序 带属性标签的开发 自定义标签可以具有属性,属性可以是必选的,也可以是可选的。 对必选的属性,如果没有指定值,容器在 对可选的属性,如果没有指定值,标签处理类将使用默认值。默认值依赖于标签处理类的实现。 带属性标签的开发 在 / 属性值可以是常量或 可以是达式是在请求时计算的,并传递给相应的标签处理类。 带属性标签的开发 当标签接受属性时,对每个属性需要做三件重要的事情。 必须在标签处理类中声明一个实例变量存放属性的值。 如果属性不是必须的,则必须要么提供一个默认值,要么在代码中处理相应的 对每个属性,必须实现适当的修改方法。 下面开发一个名为 接受一个名为 在输出中打印欢迎词。 程序 带属性标签的开发 下面的 元素是在 带属性标签的开发 对上述定义的 标签,若使用 下面的使用是合法的。 / 带属性标签的开发 属性值的指定也可以使用 过该标签的 性值在标签体中指定。 $ 程序 带标签体的标签 在起始标签和结束标签之间包含的内容称为 标签体( 对于 签体可以是文本、不能包含 声明、表达式和小脚本)。 如果需要访问标签体,应该调用简单标签类的 ,它返回一个抽象类 带标签体的标签 定义了两个方法。 : 返回与 :执行标签体中的代码并将结果发送到 果将结果输出到 数应该为 程序 带标签体的标签 由于简单标签的标签体中不能包含脚本元素,所以在 值指定为下所示。 程序 带标签体的标签 如果希望多次执行标签体,可以在 中使用循环结构,多次调用 可。修改 中的代码。 i = 0 ; i 下面的 程序 迭代标签 所谓 迭代标签 就是能够多次访问标签体的标签,它实现了类似于编程语言的循环的功能。 下面的迭代标签通过一个名为 程序 迭代标签 下面的 元素在 迭代标签 下面是使用 程序 上述标签有一个名为 接收一个整型值,指定标签主体应该执行的次数。上述代码将在输出中打印三次标签体的内容,结果如图 6 在标签中使用 在标签体中还可以使用 如: 商品名称为 :$ 在标签中使用 那么在标签处理类中的 应该如下。 苹果 手机 ); 在标签中使用 标签体中的 组、 象,在标签体中可以访问它的每个元素,这只需要在 中使用循环即可,例如: $在标签中使用 在标签处理类的 中的代码如下。 = 苹果 手机 , 文曲星电子词典 ; i = 0; 为其传递 程序 程序 在标签中使用 在 在标签中使用 下面的 程序 使用动态属性 在简单标签中还可以处理动态属性。所谓动态属性( 就是不需要在 要在简单标签中使用动态属性,标签处理类应该实现 接口中只定义了一个名为的方法,它用来处理动态属性,格式为: 用动态属性 参数 果属于默认命名空间,其值为 数 标签声明允许接受动态属性,而传递的属性又没有在 用动态属性 下面程序定义了一个带动态属性的标签处理类。在该类中创建了一个 每个动态属性它将被更新。一旦结束读取属性,它将调用 ,把该 程序 使用动态属性 在 签中,动态属性需要使用 元素定义并将其值指定为 下所示。 使用动态属性 下面代码给出了如何在 程序 态属性的使用 写协作标签 在标签的设计和开发中,通常一组标签协同工作,这些标签称为协作标签( 协作标签的一个最简单的例子是实现类似于 看下面三个标签: 、 和,它们可以用在 下所示。 程序 编写协作标签 程序 程序 程序 由于使用自定义标签可能造成程序员对标签的重复定义,因此从 为标准支持,它可以简化 通用目的标签 条件控制标签 循环控制标签 在使用 首先应该获得 并安装到 可以到 站下载 , 地址为。 。 下载的是一个 将该文件解压到一个目录中 , 然后将 将 这样就完成了 实际上在 务器安装的 将它们复制到你的 个库,每个子库提供了一组实现特定功能的标签,具体来说,这些子库包括: 核心标签库,包括通用处理的标签。 括解析、查询和转换 国际化和格式化库,包括国际化和格式化的标签。 括访问关系数据库的标签。 函数库,包括管理 本节主要介绍核心( 签库,该库的标签可以分成 4类,如表 6 通用目的 条件控制 循环控制 在 须使用 如,要使用核心标签库,必须在 通用目的标签 通用目的的标签包括 1. 标签 标签使用很简单,它有两种语法格式。 【 格式 1】 不带标签体的情况 如果 认值),表示将 、 或 &等特殊字符转换为相应的实体引用(或字符编码),如小于号( )将转换为 。如果 1. 标签 【 格式 2】 带标签体的情况 【 格式 2】 中默认值是在标签体中给出的。 1. 标签 在 如: 上述代码分别输出客户地址和 从 标签的功能可以看到,它可以替换 2. 标签 标签设置作用域变量以及对象(如属性值。该标签有下面 4种语法格式。 【 格式 1】 不带标签体的情况 2. 标签 【 格式 2】 带标签体的情况 c: 格式 2】 是在标签体中指定变量值。 2. 标签 例如,下面两个标签: 与 $4*4 都将变量 6,且其作用域为会话作用域。 2. 标签 使用 标签还可以设置指定对象的属性值,对象可以是 可以使用下面两种格式实现。 【 格式 3】 不带标签体的情况 2. 标签 【 格式 4】 带标签体的情况 与设置变量值一样,属性值可以通过 2. 标签 下面程序为一个名为 程序 . 标签 标签用来从作用域中删除变量,它的语法格式为: 选的果没有指定器将先在 后是 下来是 后是 到后将变量清除。 4. 标签 标签的功能是捕获标签体中出现的异常,语法格式为: 这里, 标签体中代码发生异常时,将由该变量引用异常对象,变量具有 4. 标签 例如: 条件控制标签 条件控制标签有 4个: 和 标签的功能类似于 1. 标签 标签用来进行条件判断,它有下面两种语法格式。 【 格式 1】 不带标签体的情况 【 格式 2】 带标签体的情况 . 标签 每个 标签必须有一个名为 是一个 于 【 格式 1】 ,只将 于 【 格式 2】 ,若执行标签体。 例如,在下面代码中如果 6,则会显示其值。 $2. 标签 标签类似于 本身不带任何属性,但包含多个 标签和一个 标签,这些标签能够完成多分支结构。例如,下面代码根据 2. 标签 白色 ! 黑色 ! 其他颜色 ! 循环控制标签 核心标签库的 和 标签允许重复处理标签体内容。使用这些标签,能以三种方式控制循环的次数。 对数的范围使用 以及它的 对 及它的 对 用 以及它的 1. 标签 标签主要实现迭代,它可以对标签体迭代固定的次数,也可以在集合对象上迭代,该标签有两种格式。 【 格式 1】 迭代固定的次数 . 标签 标签还可以嵌套,签实现输出九九表。 程序 . 标签 在 标签中还可以指定 如,如果指定: 则可以通过 中包括:本次迭代的索引、已经迭代的次数、是否是第一个迭代、是否是最后一个迭代等。它们分别用 1. 标签 下面代码从 0计数到 10,每 3个输出一个数。 程序 . 标签 【 格式 2】 在集合对象上迭代 这种迭代主要用于对 合对象如 签对每个元素处理一次标签体内容。这里, 变量只在 标签内部有效。 1. 标签 下面例子使用 标签显示 设有一个 1. 标签 下面的 后将控制转发到 该页面中使用 标签访问每本书的信息。 程序 在 签访问列表中的元素,代码如下。 程序 . 标签 该标签用来在字符串中的令牌( 迭代,它的语法格式为: . 标签 下面的 签输出一个字符串中各令牌的内容。 程序 与 个: 。 1. 标签 标签主要用于在 、和 标签中指定请求参数,它的格式有下面两种。 【 格式 1】 参数值使用 【 格式 2】 参数值在标签体中指定 2. 标签 标签的功能与 标准动作的功能类似,可以将一个静态或动态资源包含到当前页面中。 标签有下面两种语法格式。 【 格式 1】 资源内容作为字符串对象包含 . 标签 【 格式 2】 资源内容作为 这里, 他属性与上面格式中含义相同。 2. 标签 下面代码使用 向其传递了一个名为 程序 被包含的页面代码如下。 程序 . 标签 标签的功能是将用户的请求重定向到另一个资源,它

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论