由浅到深详细讲解JSP自定义标签_第1页
由浅到深详细讲解JSP自定义标签_第2页
由浅到深详细讲解JSP自定义标签_第3页
由浅到深详细讲解JSP自定义标签_第4页
由浅到深详细讲解JSP自定义标签_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

一 基本概念一 基本概念 1 标签 Tag 标签是一种 XML 元素 通过标签可以使 JSP 网页变得简洁并且易于维护 还可以方便地实 现同一个 JSP 文件支持多种语言版本 由于标签是 XML 元素 所以它的名称和属性都是大 小写敏感的 2 标签库 Tag library 由一系列功能相似 逻辑上互相联系的标签构成的集合称为标签库 3 标签库描述文件 Tag Library Descriptor 标签库描述文件是一个 XML 文件 这个文件提供了标签库中类和 JSP 中对标签引用的映射 关系 它是一个配置文件 和 web xml 是类似的 4 标签处理类 Tag Handle Class 标签处理类是一个 Java 类 这个类继承了 TagSupport 或者扩展了 SimpleTag 接口 通过 这个类可以实现自定义 JSP 标签的具体功能 二 自定义二 自定义 JSPJSP 标签的格式标签的格式 1 为了使到 JSP 容器能够使用标签库中的自定义行为 必须满足以下两个条件 1 从一个指定的标签库中识别出代表这种自定义行为的标签 2 找到实现这些自定义行为的具体类 第一个必需条件 找出一个自定义行为属于那个标签库 是由标签指令的前缀 Taglib Directive s Prefix 属性完成 所以在同一个页面中使用相同前缀的元素都属于这个标签 库 每个标签库都定义了一个默认的前缀 用在标签库的文档中或者页面中插入自定义标 签 所以 你可以使用除了诸如 jsp jspx java servlet sun sunw 它们都是在 JSP 白皮 书中指定的保留字 之类的前缀 uri 属性满足了以上的第二个要求 为每个自定义行为找到对应的类 这个 uri 包含了一 个字符串 容器用它来定位 TLD 文件 在 TLD 文件中可以找到标签库中所有标签处理类的 名称 2 当 web 应用程序启动时 容器从 WEB INF 文件夹的目录结构的 META INF 搜索所有以 tld 结尾的文件 也就是说它们会定位所有的 TLD 文件 对于每个 TLD 文件 容器会先获 取标签库的 URI 然后为每个 TLD 文件和对应的 URI 创建映射关系 在 JSP 页面中 我们仅需通过使用带有 URI 属性值的标签库指令来和具体的标签库匹配 三 自定义三 自定义 JSPJSP 标签的处理过程标签的处理过程 1 在 JSP 中引入标签库 2 在 JSP 中使用标签库标签 3 Web 容器根据第二个步骤中的 prefix 获得第一个步骤中声明的 taglib 的 uri 属性值 4 Web 容器根据 uri 属性在 web xml 找到对应的元素 5 从元素中获得对应的元素的值 6 Web 容器根据元素的值从 WEB INF 目录下找到对应的 tld 文件 7 从 tld 文件中找到 与 tagname 对应的元素 8 凑元素中获得对应的元素的值 9 Web 容器根据元素的值创建 相应的 tag handle class 的实例 10 Web 容器调用这个实例的 doStartTag doEndTag 方 法完成相应的处理 四 创建和使用一个四 创建和使用一个 TagTag LibraryLibrary 的基本步骤的基本步骤 1 创建标签的处理类 Tag Handler Class 2 创建标签库描述文件 Tag Library Descrptor File 3 在 web xml 文件中配置元素 4 在 JSP 文件中引人标签库 五 五 TagSupportTagSupport 类简介类简介 1 处理标签的类必须扩展 javax servlet jsp TagSupport 2 TagSupport 类的主要属性 A parent 属性 代表嵌套了当前标签的上层标签的处理类 B pageContex 属性 代表 Web 应用中的 javax servlet jsp PageContext 对象 3 JSP 容器在调用 doStartTag 或者 doEndTag 方法前 会先调用 setPageContext 和 setParent 方法 设置 pageContext 和 parent 因此在标签处理类中可以直接访问 pageContext 变量 4 在 TagSupport 的构造方法中不能访问 pageContext 成员变量 因为此时 JSP 容器还没 有调用 setPageContext 方法对 pageContext 进行初始化 p 六 六 TagSupportTagSupport 处理标签的方法处理标签的方法 1 TagSupport 类提供了两个处理标签的方法 public int doStartTag throws JspException public int doEndTag throws JspException 2 doStartTag 但 JSP 容器遇到自定义标签的起始标志 就会调用 doStartTag 方法 doStartTag 方法返回一个整数值 用来决定程序的后续流程 A Tag SKIP BODY 表示 之间的内容被忽略 B Tag EVAL BODY INCLUDE 表示标签之间的内容被正常执行 3 doEndTag 但 JSP 容器遇到自定义标签的结束标志 就会调用 doEndTag 方法 doEndTag 方法也返回一个整数值 用来决定程序后续流程 A Tag SKIP PAGE 表示立刻停止执行网页 网页上未处理的静态内容和 JSP 程序均被忽略 任何已有的输出内容立刻返回到客户的浏览器上 B Tag EVAL PAGE 表示按照正常的流程继续执行 JSP 网页 七 用户自定义的标签属性七 用户自定义的标签属性 如果在标签中还包含了自定义的属性 那么在标签处理类中应该将这个属性作为成员变量 并且分别提供设置和读取属性的方法 八 创建标签处理类的步骤八 创建标签处理类的步骤 1 创建包含 JSP 网页静态文本的文件 即是要替换自定义 JSP 标签的文本 2 在 Web 应用启动时装载静态文本 3 创建标签处理类 九 如何创建包含九 如何创建包含 JSPJSP 网页静态文本的文件网页静态文本的文件 1 使用 java util Properties 类来存放要替换网页中自定义 JSP 标签的静态文本 2 Properties 类代表了一系列属性的集合 其实例既可以被保存到流中 也可以从流中 加载 这些文本以 key value 的形式存放在 WEB INF 目录下 例如 key value 在属性列 表中这些 key value 都是 String 类型的 十 十 PropertiesProperties 类的常用类的常用 APIAPI 1 setProperty String key String value 调用 Hashtable 类的 put 方法添加属性 2 getProperty String key 获取属性列表中 key 对应的属性值 3 load InputStream in 从输入流对象 InputStream 中读取属性列表 Properties list 4 store OutputStream out String coMMent 使用适当的格式将属性列表的属性对写入 输出流对象中 默认使用 ISO 88590 1 编码格式 以行的方式处理输入 属性的 key value 之间以 配对 以回车 换行分隔 key value 配对 十一 十一 ServletContextServletContext 类的常用类的常用 APIAPI 1 getContext String uripath 返回服务器中 uripath 所代表的 ServletContext 对象 2 getInitParameter String name 返回 ServletConfig 对象中 name 参数的值 3 getMineType String file 返回 file 参数代表的文件的 MIME 类型 4 getRequestDispatcher String path 返回 path 代表的 RequestDispacher 对象 5 getResourceAsStream String path 以输入流的形式返回 path 对应的资源 在输入 留中对象可以为任意形式的数据 path 参数必须以 开始且相对于 Context Root 十二 如何使用十二 如何使用 ServletContxtServletContxt 读取并保存属性文件读取并保存属性文件 1 创建 java util Properties 类对象 2 获取 ServletContext 对象 3 将属性文件以输入流的形式读入到某个输入流对象中 4 将输入流对象加载到 Properties 对象中 5 将 Properties 对象保存到 ServletContext 对象中 十三 如何在十三 如何在 WebWeb 应用启动时装载静态文本应用启动时装载静态文本 1 创建继承了 HttpServlet 类的子类 在 web xml 中配置这 Servlet 时设置 load on startup 属性 someclass somepackage SomeClass1 2 在这个 Servlet 的 init 方法中创建 java util Properties 类 3 获取当前 Web 应用的 ServletContext 对象 4 将 WEB INF 目录下的属性文件读入到输入流 InputStream 中 InputStream in context getResourceAsString WEB INF someproperties properties 5 将输入流加载到属性对象中 ps load in 6 将属性对象保存到上 context setAttribute attributeName ps p 十四 如何创建标签处理类十四 如何创建标签处理类 1 引入必需的资源 import javax servlet jsp import javax servlet http import java util import java io 2 继承 TagSupport 类并覆盖 doStartTag doEndTag 方法 3 从 ServletContext 对象中获取 java util Properties 对象 4 从 Properties 对象中获取 key 对应的属性值 5 对获取的属性进行相应的处理并输出结果 十五 创建标签库描述文件十五 创建标签库描述文件 Tag Tag LibraryLibrary Descriptor Descriptor 1 标签库描述文件 简称 TLD 采用 XML 文件格式 定义了用户的标签库 TLD 文件中的 元素可以分成 3 类 A 标签库元素 B 标签元素 C 标签属性元素 2 标签库元素用来设定标签库的相关信息 它的常用属性有 A shortname 指定 Tag Library 默认的前缀名 prefix B uri 设定 Tag Library 的惟一访问表示符 3 标签元素用来定义一个标签 它的常见属性有 A name 设定 Tag 的名字 B tagclass 设定 Tag 的处理类 C bodycontent 设定标签的主体 body 内容 1 empty 表示标签中没有 body 2 JSP 表示标签的 body 中可以加入 JSP 程序代码 3 tagdependent 表示标签中的内容由标签自己去处理 4 标签属性元素用来定义标签的属性 它的常见属性有 A name 属性名称 B required 属性是否必需的 默认为 false C rtexprvalue 属性值是否可以为 request time 表达式 也就是类似于的表达 式 十六 在十六 在 WebWeb 应用中使用标签应用中使用标签 1 如果 Web 应用中用到了自定义 JSP 标签 则必须

温馨提示

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

评论

0/150

提交评论