170 likes | 329 Views
自定义标签库. 讲课教师:马佩勋 EMAIL : flymanma@126.com. 主要内容:. 一、自定义标签的介绍 二、标签库中的类层次结构 三、简单标签的开发. 目标. 理解自定义标签 实现简单的自定义标签. 什么是自定义标签?. <%@ taglib uri='WEB-INF/welcome.tld ‘ prefix='w' %> <html> <body> <w:HelloWorldTag /> </body> </html>. 自定义标签.
E N D
自定义标签库 讲课教师:马佩勋 EMAIL:flymanma@126.com
主要内容: • 一、自定义标签的介绍 • 二、标签库中的类层次结构 • 三、简单标签的开发
目标 • 理解自定义标签 • 实现简单的自定义标签
什么是自定义标签? <%@ taglib uri='WEB-INF/welcome.tld‘ prefix='w' %> <html> <body> <w:HelloWorldTag /> </body> </html> 自定义标签 自定义标签是遵循 <Prefix:TagFileName> 格式的标准 HTML 标签 标签处理程序文件 嵌入 Java 代码 前缀
一、自定义标签的介绍 • 1.什么是自定义标签 • 1) 用户自定义的Java语言元素, 实质是运行一个或者两个接口的JavaBean; • 2) 可以非常机密地和JSP的表示逻辑联系在一起,又具有和普通JavaBean相同的业务逻辑处理能力; • 3) 可操作默认对象,处理表单数据,访问数据库以及其它企业服务;
标签库 标签库的示例如下: • JSP 标准标签库 (JSTL) - 提供两组标签,一组使用 EL(Expression Language,表达式语言),而另一组不使用 EL • JRun 标签库 - 不再提倡使用的标签库,但是它构成 JSTL 的基础 • StrutsTagLib - 提供允许开发人员实现模型-视图-控制器 (MVC) 设计模式的标签 按照功能或实现进行分组的自定义标签的集合
一、自定义标签的介绍 • 2、JSP自定义标签的优点 • 分离了程序业务逻辑和表示逻辑 • 将Java代码从HTML中剥离,便于美工维护页面 • 提供了可重用的功能组件
3、标签处理程序的组件及其关系 标签库 标签处理程序 .java 标签库描述符 .tld 应用程序 部署描述符 web.xml JSP 页面
实现标签的类和接口的关系 实现标签必须直接 实现某个tag接口 或继承某个实现类 (interface) JspTag ↑ |ˉˉˉˉˉˉˉˉ| (interface) (interface) TagSimpleTag <——SimpleTagSupport ↑ | (interface) IterationTag <——TagSupport ↑ ↑ | | (interface) | BodyTag <——BodyTagSupport
一般不会去实现Tag接口,而是通过TagSupport类是实现了Tag的接口继承过来的字段。下列字段用作一般不会去实现Tag接口,而是通过TagSupport类是实现了Tag的接口继承过来的字段。下列字段用作 public int doStartTag(), public int doEndTag()返回值 Tag.EVAL_BODY_INCLUDE 包含主体内容Tag.SKIP_BODY不包含主体内容Tag.EVAL_PAGE包含后面的页面内容 Tag.SKIP_PAGE不包含主体的内容
自定义标签的分类 • 不带属性和主体的简单标签 • <mytaglibs:SomeTag/> • 不带主体但是有属性的标签 • <mytaglibs:SomeTag user=“John” /> • 带有主体和属性的标签 <mytaglibs:SomeTag user=“John” > Hello! </mytaglibs:SomeTag>
4、创建自定义标签-使用TagSupport类 • 自定义标签的功能:在页面上显示HelloWorld • 步骤: • ①创建TagSupport类的子类:标签处理程序HelloWorld.java • ②创建标签库描述文件mytaglib.tld • ③配置web.xml部署描述文件:指定对标签的引用
Container 1: setPageContext(javax.servlet.jsp.PageContext): void 2: setParent(javax.servlet.jsp.tagext.Tag): void //3: setAttribute(): void 4: doStartTag(): void 5: doEndTag(): void 6: release(): void 5、创建自定义标签库 • 标签的生命周期: a Tag
JSP 容器遇到了自定义标签 到web.xml中查找标签库描述文件的位置 到标签库描述文件中查找某个标签的处理程序 自定义标签的处理过程 <%@ taglib uri='WEB-INF/welcome.tld‘ prefix='w' %> <html> <body> <w:HelloWorldTag /> </body> </html> 创建标签处理程序的实例并将当前JSP页面的参数传递给该标签实例
总结 • 自定义标签在 JSP 页面中嵌入少量的 Java 代码 • 自定义标签遵循标准 HTML 标签格式。 • 可以通过创建 Java 类来实现自定义标签 • 使用 Java 类文件实现自定义标签,需要标签处理程序和标签库描述符文件