一、需要一个.java(标签处理类),一个.tld(标签库描述)。
1、标签处理类:
(1)需要继承TagSupport或者BodyTagSupport,两者区别在于是否允许带有标签体。
(2)标签调用时,首选会执行类内的setter方法,它可以获取标签的属性值。然后标签会调用doStartTag和doEndTag方法。根据返回值的不同,执行不同的动作。以下是常用的几个返回值:
SKIP_BODY: 不处理标签体,直接调用 doEndTagO方法。
SKIP_PAGE: 忽略标签后面的 JSP 页面。
EVAL_PAGE: 处理标签结束,直接处理页面内容。
EVAL_BODY_BUFFERED: 处理标签体。
EVAL_BODY_INCLUDE: 处理标签体,但忽略 setBodyContentO和 doInitBodyO方法。
EVAL_BODY_AGAIN:
对标签体循环处理。
2、标签库描述:
(1)标签库描述是以.tld后缀结尾的文件,其声明如下:<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP
Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">。
(2)执行顺序如下:
a.通过标签的前缀找到该标签所对应的uri,该uri并不表示资源的具体位置,而是通过它可以建立与TLD文件中所定义标签的映射。在WEB-INF/下的TLD文件中找到<tag>标签中的<name>对应的<tag-class>,也就是需要创建的类的对象的名字。利用反射机制创建TagDemo的示例。
b.调用TagDemo的setXXX()方法,根据JSP页面中属性对应的值对TagDemo对象的属性值进行设置,这样就可以在自己定义的这些类中使用这些属性值了
c.调用TagDemo的doStartTag和doEndTag方法,执行用户定义的相关操作。
(3)描述结构:
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.1</jsp-version>
<short-name>xxx</short-name>
<tag>
<name>xxx</name>
<tag-class>xxx</tag-class>
<body-content>xxx</body-content>
<attribute>
<name>xxx</name>
</attribute>
</tag>
</taglib>
二、自定义标签的使用
1、首先要做的是引入.tld。
<%@ taglib prefix="aaa" uri="xxx.tld"%>
prefix="aaa"引用的名称在页面可以使用,就像java中生成的一个对象名,以后调用的时候直接使用<aaa:bbb/>就可以了;uri="xxx.tld"表示标签库的路径,相当于import一个具体的类。
2、JSP页面调用自定义标签:<aaa:bbb/>如此即可,详见下方实例。
附:自定义标签实例
功能:使用标签可以让字符串S打印n次,S和n为自定义。
1、标签处理类:TagDemo.java
属性name是字符串S,times是次数n。
2、标签库描述:powercms.tld
tag-class:处理类
body-content:正文内容类型
attribute:定义标签属性
Required:该属性是否必须
Rtexprvalue:是否可以用JSP的程序段的结果输出
Type:参数类型
3、调用:sd_test.jsp、sd_test2.jsp
(1)sd_test.jsp:设定重复的内容和重复次数
效果:
(2)sd_test2.jsp:调用自定义标签jDemo,将内容重复打印所设定的次数。
效果:
- 大小: 84.1 KB
- 大小: 44 KB
- 大小: 114.9 KB
- 大小: 8.1 KB
- 大小: 126.7 KB
- 大小: 12.2 KB
分享到:
相关推荐
自己做的一个小例子,实现JSTL自定义标签。功能:输入x和y,点击按钮后循环输出y次x。
jstl 自定义标签 int转换为时间格式
这次整理自定义标签主要是项目的需要,要将一些写死的url信息配置于配置文件中,这样发版的时候改动起来相当方便
JSTL 以及自定义标签开发相关 JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out、set、remove、catch 2.流程控制标签:if、choose、when、otherwise 3.循环标签:forEach、forTokens 4.URL...
jstl自定义标签和函数思维导图
NULL 博文链接:https://zhouxianglh.iteye.com/blog/858182
这个压缩包里有我在学习JSTL自定义标签时写的一些自定义标签实例,如果你也在学JavaWeb技术,那么我相信这些源码会对你有帮助的
JSTL 开发自定义标签使用的jar jstl.jar standard.jar
jsp、jstl自定义标签实现的分页,实现的还是比较好的,没有在request、session等范围保存过数据,在pageContext范围内保存过集合的数据, 实现的方法还是比较简单的,适用性还是比较广的,我是实在是没分了,平时也...
NULL 博文链接:https://wushenbao.iteye.com/blog/810955
EL、JSTL、自定义标签、过滤器的ppt
jh-plugins是一项基于JSTL的自定义标签(插件)库,致力于打造一处实现、任何项目通用的开源项目。 jh-plugins已实现标签库:分页 jh-plugins特点:高效、轻巧、简单、适用(可融合与任何B/S架构的java项目) jh-...
java中用到的jstl标签 ,大家都知道 jstl自定义标签的很多使用性 所以都喜欢用 但是有些找不到jar包的麻烦
本资源代码中包含jstl的标签库定义以及自定义EL标签使用的详细说明,参见压缩文件中说明即可,欢迎各位技术员下载参考及使用
JavaWeb-12:自定义标签库开发&JSTL标签库
JSTL标签库的使用是为类弥补html表的不足,规范自定义标签的使用而诞生的。在告别modle1模式开发应用程序后,人们开始注重软件的分层设计,不希望在jsp页面中出现java逻辑代码,同时也由于自定义标签的开发难度较大...
自己写的自定义标签库,实现JSTL常用的功能。
jstl 文档标准标签库JSTL – JSP Standard Tag Library,是JSP的标准标签库 自定义标签库 自定义函数
从JSP 1.1规范开始JSP就支持使用自定义标签,使用自定义标签大大降低了JSP页面的复杂度,同时增强了代码的重用性,因此自定义标签在WEB应用中被广泛使用。许多WEB应用厂商都开发出了自己的一套标签库提供给用户使用...
jstl标签包,用于jsp自定义标签,内包含jstl.jar standard.jar两个包