- 论坛徽章:
- 0
|
JSP自定义标签
在JSP页面中常常会用标签做一些处理,这样做的目的就是为了减少代码的维护工作。
JSP自定义标签的编写步骤:
(1)确定要实现的功能,确定标签处理程序所用的参数[一般从页面传递过来],还有结果数据。
(2)根据传递过来的参数,写标签处理程序。
(3)在web.xml程序部署文件中注册自定义标签。
(4)在web-inf.xml目录下定义TLD文件。
(5)在jsp页面中声明并引用标签.
JSP自定义标签的执行过程:
当加载JSP页面的时候,会根据声明的uri的值去web.xml查找与其值对应的taglib节点下的taglib-uri,[如果查不到抛出异常]然后取出taglib-location的值,再读取相应的TLD文件。如taglib-location的值为/WEB-INF/c.tld,会到web-inf下,读取c.tld文件。
接着,会根据JSP页面上的prefix的值去TLD文件中读取对应的tag节点。从而调用自定义标签处理程序。然后带回处理结果到JSP页面上。
现在重点说一下自定义标签编写步骤中方法与注意事项:
(1)确定要实现的功能,确定标签处理程序所用的参数[一般从页面传递过来],还有结果数据。
在这一步中,看似没什么,其实决定了你所写的标签的健壮性,重用性,可扩展性,因为往往一个自定义标签可能用到的地方比较多,又可能某些地方所在所要作的处理有相似之处。这样可以考虑标签的可扩展性了。
主要是确定功能,待处理数据,结果数据。
(2)根据传递过来的参数,写标签处理程序。
一个处理程序就是一个普通的java类,它惟一特别之处是它必须继承TagSupport或者BodyTagSupport类。这两个类提供了一些方法,负责jsp页面和你编写的类之间的交互,例如输入,输出。而这两个类是由jsp容器提供的,无须开发人员自己实现。换句话说,你只需把实现了业务逻辑的类继承TagSupport或者BodyTagSupport,再做一些特别的工作,你的类就是一个Tag。并且它自己负责和jsp 页面的交互,不用你多操心。
“特别的工作”通常有以下几个步骤:
[1]提供属性的set方法,此后这个属性就可以在jsp页面设置。以jstl标签为例,这个value就是jsp数据到tag之间的入口。所以tag里面必须有一个setValue方法,具体的属性可以不叫value。例如setValue(String data){this.data = data;}
这个“value”的名称是在tld里以attribute元素存在的。
取什么名字都可以,只需tag里提供相应的set方法即可。
[2]处理 doStartTag 或 doEndTag 。这两个方法是 TagSupport提供的。 还是以为例,当jsp解析这个标签的时候,在“”时触发 doEndTag 事件。通常在 doStartTag 里进行初始化,流程选择操作,在 doEndTag 里后续页面输出控制。
[3]编写tld文件,就是把编写的tag组件的信息以mxl形式告诉容器,它才好以一定步骤解释tag组件
[4]在jsp页面导入tld。这样,你的jsp页面就可以使用自己的tag组件了。
(3)在web.xml程序部署文件中注册自定义标签。
这一步主要的作用就是让工程知道有这么一个标签。就是让自定义标签与工程关联起来。
一般的代码如下:
〈!-- 这里的taglib-uri必须与JSP页面上的RUI值是一致的 --〉
/jstl/core
〈!-- 这里的taglib-location告诉在web-inf目录下有一个c.tld文件 --〉
/WEB-INF/c.tld
(4)在web-inf.xml目录下定义TLD文件。
这一步所定义的tld文件名与web.xml中注册taglib-location值一致[c.tld]。
标签库元素属性:表格如下
属性表格
属性
描述
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
标签属性的信息
(5)在jsp页面中声明并引用标签.
这一步只有引用声明。形如:
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/78176/showart_1273966.html |
|