自定义标签库
DESCRIPTION
自定义标签库. 讲课教师:马佩勋 EMAIL : [email protected]. 主要内容:. 一、自定义标签的介绍 二、标签库中的类层次结构 三、简单标签的开发. 目标. 理解自定义标签 实现简单的自定义标签. 什么是自定义标签?. . 自定义标签. - PowerPoint PPT PresentationTRANSCRIPT
自定义标签库
讲课教师:马佩勋EMAIL : [email protected]
主要内容: 一、自定义标签的介绍 二、标签库中的类层次结构 三、简单标签的开发
目标 理解自定义标签 实现简单的自定义标签
自定义标签是遵循 <Prefix:TagFileName> 格
式的标准 HTML 标签
嵌入 Java 代码
标签处理程序文件
前缀
自定义标签
什么是自定义标签?<%@ taglib uri='WEB-INF/welcome.tld‘ prefix='w' %><html> <body> <w:HelloWorldTag /> </body></html>
一、自定义标签的介绍 1. 什么是自定义标签
1) 用户自定义的 Java 语言元素 , 实质是运行一个或者两个接口的 JavaBean;
2) 可以非常机密地和 JSP 的表示逻辑联系在一起,又具有和普通 JavaBean 相同的业务逻辑处理能力 ;
3) 可操作默认对象,处理表单数据,访问数据库以及其它企业服务 ;
标签库的示例如下: JSP 标准标签库 (JSTL) - 提供两组标签,一组使用 EL
( Expression Language ,表达式语言),而另一组不使用 EL
JRun 标签库 - 不再提倡使用的标签库,但是它构成 JSTL 的基础
Struts TagLib - 提供允许开发人员实现模型 - 视图 - 控制器 (MVC) 设计模式的标签
标签库
按照功能或实现进行分组的自定义标签的集合按照功能或实现进行分组的自定义标签的集合
一、自定义标签的介绍 2 、 JSP 自定义标签的优点
分离了程序业务逻辑和表示逻辑 将 Java 代码从 HTML 中剥离,便于美工维
护页面 提供了可重用的功能组件
JSP 页面JSP 页面应用程序
部署描述符web.xml
应用程序部署描述符
web.xml
3 、标签处理程序的组件及其关系
标签库描述符 .tld
标签库描述符 .tld
标签处理程序 .java
标签处理程序 .java
标签库标签库
实现标签的类和接口的关系 (interface) JspTag ↑ |ˉˉˉˉˉˉˉˉ| (interface) (interface) Tag SimpleTag <——SimpleTagSupport ↑ | (interface) IterationTag <—— TagSupport ↑ ↑ | | (interface) | BodyTag <—— BodyTagSupport
实现标签必须直接
实现某个 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 部署描述文件:指定对标
签的引用
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
标签库元素属性 : 如下属性表格
属性 描述tlib-version 本标签库实现版本jsp-version 标签库依赖的 JSP版本short-name 被 JSP创作工具使用的一个短的默认名词
uri 指定这个标签库的 uri信息display-name 被工具使用的显示用的名字small-icon 被工具使用的小图标large-icon 被工具使用的大图标description 本标签的描述validator TLD验证信息listener 实践监听器规范
tag 标签相关属性: tag标签相关属性表
属性 描述name tag标签唯一的名称tag-class tag标签的处理类tei-class tag标签的 TagExtraInfo类
body-content 标签主体的内容display-name 显示的名称small-icon 被工具使用的小图标large-icon 被工具使用的大图标description 本标签的描述variable 脚本变量的信息attribute 标签属性的信息
自定义标签的处理过程
创建标签处理程序的实例并将当前 JSP 页面的参数传递给该标签实例
JSP 容器遇到了自定义标签
到web.xml 中查找标签库描述文件的位置
到标签库描述文件中查找某个标签的处理程序
<%@ taglib uri='WEB-INF/welcome.tld‘ prefix='w' %><html> <body> <w:HelloWorldTag /> </body></html>
总结 自定义标签在 JSP 页面中嵌入少量
的 Java 代码 自定义标签遵循标准 HTML 标签格式。 可以通过创建 Java 类来实现自定义
标签 使用 Java 类文件实现自定义标签,需要标签处理程序和标签库描述符文件