欢迎来到天天文库
浏览记录
ID:48770777
大小:366.00 KB
页数:27页
时间:2020-01-23
《第6讲 自定义标签库.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第6讲自定义标签库纲要自定义标签概述创建一个简单的自定义标签示例创建自定义标签的基本步骤给自定义标签添加属性自定义标签处理标签体2(1)为什么要自定义标签?由于在实际开发中,这些标准操作标签往往不能满足用户的要求,就需要我们自己来制定标签。即自定义标签库。(2)自定义标签的格式。其格式与标准操作标签相似,其特征为:所有的自定义标签都有名称,标签名称应该用“:”分隔前缀与后缀;标签可以有任意数目的属性,属性可以是可选的或必需的;标签可以将其他子标签包含在内,包含标签被称为被包含标签的父标签;自定义标签可以有主体内容
2、,即为标签开始元素和结束元素之间的内容(包括子标签)。自定义标签概述3创建一个简单的自定义标签示例simple.jspweb.xmlgreeting.tldGreetingTagHandler.java4(2)自定义标签的使用形式空标签(不含标签体和属性)格式:<前缀:标签名/>或<前缀:标签名>前缀:标签名>例如:带有属性的空标签格式:<前缀:标签名属性1=“值1”属性2=“值2”…/>或<前缀:标签名属性1=“值1”属性2=“值2”…>前缀:标签名>例如:3、le:greetingAttname="<%=username%>“/>5带有标签体的标签格式:<前缀:标签名>标签体前缀:标签名>例如:<%=hr%>:<%=min%>:<%=sec%>既带有属性又有标签体的标签格式:<前缀:标签名属性1=“值1”属性2=“值2”…>标签体前缀:标签名>例如:">现在时间是:<%=hr%>:<%=m4、in%>:<%=sec%>请记住:一个标签包含起始标记和结束标记;在起始标记中可设置标签属性;在起始标记和结束标记之间还可以有标签体;执行顺序:起始标记、标签体、结束标记。6(3)自定义标签为什么能实现一定功能?自定义标签实际上是一个实现了特定接口的Java类,它封装了一些常用功能,在运行时被相应的代码所替换。如下图所示:Java代码……JSP页面<前缀:标签名属性=“值”…>标签处理类替换7几个基本概念:标签(Tag):让JSP页面实现特定功能,通过标签可以使JSP网页5、变得简洁并且易于维护,是一种XML元素,它的名称和属性都对大小写敏感;标签库(Taglibrary):由一系列功能相似、逻辑上互相联系的标签构成的集合,同一个标签库的“前缀”相同;标签库描述文件(TagLibraryDescriptor):是一个XML文件,它提供了标签库中类和JSP中标签引用的映射关系,也是一个配置文件,与web.xml类似;标签处理类(TagHandleClass):是一个Java类,这个类继承了TagSupport(或BodyTagSupport)类,也可能实现了Tag或其子接口,通过该类可6、以自已定义JSP标签的具体功能。8(4)自定义标签的类与接口:位于javax.servlet.jsp.tagext包JspTag接口IterationTag接口intdoAfterBody()Tag接口voidsetPageContext(PageContext)voidsetParent(Tag)intdoStartTag()intdoEndTag()TaggetParent()voidrelease()BodyTag接口voidsetBodyContent(BodyContentb)voiddoInitBod7、y()SimpleTag接口SimpleTagSupport类TagSupport类BodyTagSupport类9说明:JspTag是Tag和SimpleTag接口的父接口,是一个标记接口,不包含任何属性和方法;Tag接口中的方法和常量:setPageContext()、setParent():分别设置pageContext和父标签;doStartTag():遇到自定义标签的开始标记时去调用标签处理类的方法,返回值为:EVAL_BODY_INCLUDE(表示标签体要执行,执行结果放在当前输出流中)、SKIP_B8、ODY(不执行标签体);doEndTag():遇到自定义标签的结束标记时去调用标签处理类的方法,返回值:EVAL_PAGE(Jsp页面的剩余内容将继续执行)、SKIP_PAGE(Jsp页面的剩余内容不执行)。10doAfterBody():是IterationTag接口增加的方法,在执行完标签体后调用,如果没有标签体,该方法将不会调用。该方法的返回值是:SKIP_BODY
3、le:greetingAttname="<%=username%>“/>5带有标签体的标签格式:<前缀:标签名>标签体前缀:标签名>例如:<%=hr%>:<%=min%>:<%=sec%>既带有属性又有标签体的标签格式:<前缀:标签名属性1=“值1”属性2=“值2”…>标签体前缀:标签名>例如:">现在时间是:<%=hr%>:<%=m
4、in%>:<%=sec%>请记住:一个标签包含起始标记和结束标记;在起始标记中可设置标签属性;在起始标记和结束标记之间还可以有标签体;执行顺序:起始标记、标签体、结束标记。6(3)自定义标签为什么能实现一定功能?自定义标签实际上是一个实现了特定接口的Java类,它封装了一些常用功能,在运行时被相应的代码所替换。如下图所示:Java代码……JSP页面<前缀:标签名属性=“值”…>标签处理类替换7几个基本概念:标签(Tag):让JSP页面实现特定功能,通过标签可以使JSP网页
5、变得简洁并且易于维护,是一种XML元素,它的名称和属性都对大小写敏感;标签库(Taglibrary):由一系列功能相似、逻辑上互相联系的标签构成的集合,同一个标签库的“前缀”相同;标签库描述文件(TagLibraryDescriptor):是一个XML文件,它提供了标签库中类和JSP中标签引用的映射关系,也是一个配置文件,与web.xml类似;标签处理类(TagHandleClass):是一个Java类,这个类继承了TagSupport(或BodyTagSupport)类,也可能实现了Tag或其子接口,通过该类可
6、以自已定义JSP标签的具体功能。8(4)自定义标签的类与接口:位于javax.servlet.jsp.tagext包JspTag接口IterationTag接口intdoAfterBody()Tag接口voidsetPageContext(PageContext)voidsetParent(Tag)intdoStartTag()intdoEndTag()TaggetParent()voidrelease()BodyTag接口voidsetBodyContent(BodyContentb)voiddoInitBod
7、y()SimpleTag接口SimpleTagSupport类TagSupport类BodyTagSupport类9说明:JspTag是Tag和SimpleTag接口的父接口,是一个标记接口,不包含任何属性和方法;Tag接口中的方法和常量:setPageContext()、setParent():分别设置pageContext和父标签;doStartTag():遇到自定义标签的开始标记时去调用标签处理类的方法,返回值为:EVAL_BODY_INCLUDE(表示标签体要执行,执行结果放在当前输出流中)、SKIP_B
8、ODY(不执行标签体);doEndTag():遇到自定义标签的结束标记时去调用标签处理类的方法,返回值:EVAL_PAGE(Jsp页面的剩余内容将继续执行)、SKIP_PAGE(Jsp页面的剩余内容不执行)。10doAfterBody():是IterationTag接口增加的方法,在执行完标签体后调用,如果没有标签体,该方法将不会调用。该方法的返回值是:SKIP_BODY
此文档下载收益归作者所有