自定义标签库

17
自自自自自自 自自自自 自自自 EMAIL [email protected]

Upload: gavrilla-rios

Post on 02-Jan-2016

41 views

Category:

Documents


0 download

DESCRIPTION

自定义标签库. 讲课教师:马佩勋 EMAIL : [email protected]. 主要内容:. 一、自定义标签的介绍 二、标签库中的类层次结构 三、简单标签的开发. 目标. 理解自定义标签 实现简单的自定义标签. 什么是自定义标签?. . 自定义标签. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 自定义标签库

自定义标签库

讲课教师:马佩勋EMAIL : [email protected]

Page 2: 自定义标签库

主要内容: 一、自定义标签的介绍 二、标签库中的类层次结构 三、简单标签的开发

Page 3: 自定义标签库

目标 理解自定义标签 实现简单的自定义标签

Page 4: 自定义标签库

自定义标签是遵循 <Prefix:TagFileName> 格

式的标准 HTML 标签

嵌入 Java 代码

标签处理程序文件

前缀

自定义标签

什么是自定义标签?<%@ taglib uri='WEB-INF/welcome.tld‘ prefix='w' %><html> <body> <w:HelloWorldTag /> </body></html>

Page 5: 自定义标签库

一、自定义标签的介绍 1. 什么是自定义标签

1) 用户自定义的 Java 语言元素 , 实质是运行一个或者两个接口的 JavaBean;

2) 可以非常机密地和 JSP 的表示逻辑联系在一起,又具有和普通 JavaBean 相同的业务逻辑处理能力 ;

3) 可操作默认对象,处理表单数据,访问数据库以及其它企业服务 ;

Page 6: 自定义标签库

标签库的示例如下: JSP 标准标签库 (JSTL) - 提供两组标签,一组使用 EL

( Expression Language ,表达式语言),而另一组不使用 EL

JRun 标签库 - 不再提倡使用的标签库,但是它构成 JSTL 的基础

Struts TagLib - 提供允许开发人员实现模型 - 视图 - 控制器 (MVC) 设计模式的标签

标签库

按照功能或实现进行分组的自定义标签的集合按照功能或实现进行分组的自定义标签的集合

Page 7: 自定义标签库

一、自定义标签的介绍 2 、 JSP 自定义标签的优点

分离了程序业务逻辑和表示逻辑 将 Java 代码从 HTML 中剥离,便于美工维

护页面 提供了可重用的功能组件

Page 8: 自定义标签库

JSP 页面JSP 页面应用程序

部署描述符web.xml

应用程序部署描述符

web.xml

3 、标签处理程序的组件及其关系

标签库描述符 .tld

标签库描述符 .tld

标签处理程序 .java

标签处理程序 .java

标签库标签库

Page 9: 自定义标签库

实现标签的类和接口的关系 (interface) JspTag ↑ |ˉˉˉˉˉˉˉˉ| (interface) (interface) Tag SimpleTag <——SimpleTagSupport ↑ | (interface) IterationTag <—— TagSupport ↑ ↑ | | (interface) | BodyTag <—— BodyTagSupport

实现标签必须直接

实现某个 tag 接口

或继承某个实现类

Page 10: 自定义标签库

一般不会去实现 Tag 接口,而是通过 TagSupport 类是实现了 Tag 的接口继承过来的字段。下列字段用作

public int doStartTag() ,

public int doEndTag()返回值

Tag.EVAL_BODY_INCLUDE 包含主体内容 Tag.SKIP_BODY 不包含主体内容 Tag.EVAL_PAGE 包含后面的页面内容 Tag.SKIP_PAGE 不包含主体的内容

Page 11: 自定义标签库

自定义标签的分类 不带属性和主体的简单标签

<mytaglibs:SomeTag/> 不带主体但是有属性的标签

<mytaglibs:SomeTag user=“John” /> 带有主体和属性的标签

<mytaglibs:SomeTag user=“John” > Hello!</mytaglibs:SomeTag>

Page 12: 自定义标签库

4、创建自定义标签 - 使用 TagSupport类

自定义标签的功能:在页面上显示 HelloWorld

步骤: ①创建 TagSupport 类的子类:标签处理程

序 HelloWorld.java ②创建标签库描述文件 mytaglib.tld ③配置web.xml 部署描述文件:指定对标

签的引用

Page 13: 自定义标签库

5、创建自定义标签库 标签的生命周期:

Container

1: setPageContext(javax.servlet.jsp.PageContext): void2: setParent(javax.servlet.jsp.tagext.Tag): void

//3: setAttribute(): void

4: doStartTag(): void

5: doEndTag(): void

6: release(): void

a Tag

Page 14: 自定义标签库

标签库元素属性 : 如下属性表格

属性 描述tlib-version 本标签库实现版本jsp-version 标签库依赖的 JSP版本short-name 被 JSP创作工具使用的一个短的默认名词

uri 指定这个标签库的 uri信息display-name 被工具使用的显示用的名字small-icon 被工具使用的小图标large-icon 被工具使用的大图标description 本标签的描述validator TLD验证信息listener 实践监听器规范

Page 15: 自定义标签库

tag 标签相关属性: tag标签相关属性表

属性 描述name tag标签唯一的名称tag-class tag标签的处理类tei-class tag标签的 TagExtraInfo类

body-content 标签主体的内容display-name 显示的名称small-icon 被工具使用的小图标large-icon 被工具使用的大图标description 本标签的描述variable 脚本变量的信息attribute 标签属性的信息

Page 16: 自定义标签库

自定义标签的处理过程

创建标签处理程序的实例并将当前 JSP 页面的参数传递给该标签实例

JSP 容器遇到了自定义标签

到web.xml 中查找标签库描述文件的位置

到标签库描述文件中查找某个标签的处理程序

<%@ taglib uri='WEB-INF/welcome.tld‘ prefix='w' %><html> <body> <w:HelloWorldTag /> </body></html>

Page 17: 自定义标签库

总结 自定义标签在 JSP 页面中嵌入少量

的 Java 代码 自定义标签遵循标准 HTML 标签格式。 可以通过创建 Java 类来实现自定义

标签 使用 Java 类文件实现自定义标签,需要标签处理程序和标签库描述符文件