jsp自定义标签:Jsp中的自定义标签由浅到深详细讲解来源: 发布时间:星期六, 2009年2月21日 浏览:0次 评论:0
、基本概念: 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标签具体功能 2、自定义JSP标签格式: 1. <% @ taglib prefix=”someprefix” uri=”/sometaglib” %> 为了使到JSP容器能够使用标签库中自定义行为必须满足以下两个条件: 1.从个指定标签库中识别出代表这种自定义行为标签 2.找到实现这些自定义行为具体类 第个必需条件-找出个自定义行为属于那个标签库-是由标签指令前缀(Taglib Directives Prefix)属性完成所以在同个页面中使用相同前缀元素都属于这个标签库每个标签库都定义了个默认前缀用在标签库文档中或者页面中插入自定义标签所以你可以使用除了诸如jsp,jspx,java,servlet,sun,sunw(它们都是在JSP白皮书中指定保留字)的类前缀 uri属性满足了以上第 2个要求为每个自定义行为找到对应类这个uri包含了个串容器用它来定位TLD文件在TLD文件中可以找到标签库中所有标签处理类名称 2. <someprefix:sometag key=”somevalue”/> 当web应用启动时容器从WEB-INF文件夹目录结构META-INF搜索所有以.tld结尾文件也就是说它们会定位所有TLD文件对于每个TLD文件容器会先获取标签库URI然后为每个TLD文件和对应URI创建映射关系 在JSP页面中我们仅需通过使用带有URI属性值标签库指令来和具体标签库匹配 3、自定义JSP标签处理过程: 1.在JSP中引入标签库: 2.在JSP中使用标签库标签: 3.Web容器根据第 2个步骤中prefix获得第个步骤中声明tagliburi属性值 4.Web容器根据uri属性在web.xml找到对应元素 5.从元素中获得对应元素值 6.Web容器根据元素值从WEB-INF/目录下找到对应.tld文件 7.从.tld文件中找到和tagname对应元素 8.凑元素中获得对应元素值 9.Web容器根据元素值创建相应tag handle 例子 10. Web容器这个例子doStartTag/doEndTag思路方法完成相应处理 4、创建和使用个Tag Library基本步骤: 1.创建标签处理类(Tag Handler Class) 2.创建标签库描述文件(Tag Library Descrptor File) 3.在web.xml文件中配置元素 4.在JSP文件中引人标签库 5、TagSupport类介绍: 1.处理标签类必须扩展javax.servlet.jsp.TagSupport. 2.TagSupport类主要属性: A.parent属性:代表嵌套了当前标签上层标签处理类 B.pageContex属性:代表Web应用中javax.servlet.jsp.PageContext对象 3.JSP容器在doStartTag或者doEndTag思路方法前会先PageContext和Parent思路方法设置pageContext和parent因此在标签处理类中可以直接访问pageContext变量 4.在TagSupport构造思路方法中不能访问pageContext成员变量此时JSP容器还没有 PageContext思路方法对pageContext进行化 6、TagSupport处理标签思路方法: 1.TagSupport类提供了两个处理标签思路方法: public doStartTag throws JspException public 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网页 7、用户自定义标签属性: 如果在标签中还包含了自定义属性例如: ... 那么在标签处理类中应该将这个属性作为成员变量并且分别提供设置和读取属性思路方法 8、创建标签处理类步骤: 1.创建包含JSP网页静态文本文件(即是要替换自定义JSP标签文本) 2.在Web应用启动时装载静态文本 3.创建标签处理类 |