用发和标准标签库一样.唯一不同的是,自定义标签需要自己实现哈哈!
自定义标签库分为传统标签,简单标签,和标签文件.三者区别在于一个比一个简单.实现细节大致相同.实现原理也大致相同.下面简单说说实现过程.
Tag接口:普通标签体接口.继承与JspTag.
- 把pageContext传给自己实现的标签类.
- 设置标签的属性.(标签体被镶套,则调用setParent方法设置父标签)
- 执行doStartTag方法.然后根据这个方法的返回值判断程序的走向
-
- EVAL_BODY_INCLUDE :把标签体输出到流中.
- SKIP_BODY:忽略标签体
- 执行doEndTag方法.返回两种值 EVAL_PAGE 和 SKIP_PAGE 表示执行剩下的jsp代码还是忽略剩下的jsp代码.
- 容器缓存标签实例.遇到同样的标签,则重复使用缓存的标签体.释放标签体.调用release()方法.
IterationTag接口:用于循环实现的接口,这个接口继承于Tag接口.新增了一个方法doAfterBody()和一个返回值的常量EVAL_BODY_AGAIN.
- 把pageContext传给自己实现的标签类.
- 设置标签的属性.(标签体被镶套,则调用setParent方法设置父标签)
- 执行doStartTag方法.然后根据这个方法的返回值判断程序的走向.
-
- EVAL_BODY_INCLUDE :执行标签体
- SKIP_BODY:忽略标签体
- 如果上一部返回EVAL_BODY_INCLUDE,那么执行这一步.调用的方法是doAfterBody().返回:(注意,不管返回是什么,这个标签已经执行了一次.类似于do..while循环)
-
- EVAL_BODY_AGAIN:表示重复执行标签体.
- SKIP_BODY:不执行标签体.进入下一步.
- 容器缓存标签实例.遇到同样的标签,则重复使用缓存的标签体释放标签体.调用release()方法.
BodyTag接口:继承于IterationTag接口,新增两个方法
- setBodyContent():设置bodyContent属性.对于空标签,该方法不会被调用.如果doStartTag()方法返回为SKIP_BODY或者EVAL_BODY_INCLUDE也不会被调用
- doInitBody():在setBodyContent()方法调用后,标签体第一次被执行之前,该方法调用.
- EVAL_BODY_BUFFERED返回值.只有实现了BodyTag接口,并且在doStartTag()方法中才能返回该值.
执行流程:
- 把pageContext传给自己实现的标签类.
- 设置标签的属性.(标签体被镶套,则调用setParent方法设置父标签)
- 执行doStartTag方法.然后根据这个方法的返回值判断程序的走向.
-
- EVAL_BODY_INCLUDE :执行标签体.
- SKIP_BODY:忽略标签体
- EVAL_BODY_BUFFERED:标签体不为空,进入下一步.
- 调用setBodyContent(),如果第一次执行再调用doInitBody().
- 调用doAfterBody().
-
- EVAL_BODY_AGAIN:表示重复执行标签体
- SKIP_BODY:不执行标签体.进入下一步.
- 容器缓存标签实例.遇到同样的标签,则重复使用缓存的标签体.
- 释放标签体.调用release()方法.
api已经有抽象类大致实现了以上步骤,只需重写几个自己需要的方法即可.TagSupport实现了IterationTag接口,BodyTagSupport实现了BodyTag接口.
简单标签则SimpleTagSupport实现继承于JspTag的SimpleTag接口.只需重写doTag方法就可完成简单的功能.
想要使用自己写好的标签还需要定义tld标签描述文件,然后在jsp页面引用.
标签以jar包形式出现,则标签必须放到META-INF目录或其子目录下.如果标签直接部署在web程序中,则标签描述文件必须在WEB-INF目录或其子目录下.
标签文件以 .tag 文件形式出现.以<% %>形式来完成功能,并且不用部署,写好后直接在jsp页面引用即可.
分享到:
相关推荐
在JavaServer Pages (JSP) 开发中,自定义标签库是提高代码可重用性和模块化的重要手段。本文将详细讲解如何利用JSP自定义标签库实现数据列表的显示,以及涉及到的相关技术。 首先,`UserListTag.java` 是自定义...
### 自定义标签库制作详解 #### 一、引言 自定义标签库是Java Server Pages (JSP) 技术中的一个重要组成部分,它允许开发者创建可重用的、功能丰富的HTML标签,这些标签可以像标准HTML标签一样在JSP页面中使用。...
在Java服务器页面(JSP)开发中,自定义标签库是一种强大的工具,它允许开发者创建可重用的组件,提高代码的可读性和维护性。本教程将深入讲解JSP自定义标签库的学习,包括其原理、配置以及如何创建和使用自定义标签...
【jsp自定义标签库注意事项】 在Java服务器页面(JSP)开发中,自定义标签库是一种强大的工具,它能够帮助开发者创建可重用的代码片段,提高代码的可读性和可维护性。以下是对JSP自定义标签库的详细解释和使用注意...
在JavaWeb开发中,自定义标签库和JSTL(JavaServer Pages Standard Tag Library)是两个重要的组件,它们极大地提高了代码的可读性和可维护性。本教程将深入探讨这两个主题,帮助开发者更好地理解和应用它们。 一、...
### jsp自定义标签库知识点详解 #### 一、什么是jsp自定义标签? 1. **概念**:JSP 自定义标签是一种将复杂的功能封装成一个简单的标签的方式,它允许开发者创建可重用的代码组件,这些组件可以在 JSP 页面中像...
**JSP自定义标签库详解** 在JavaServer Pages (JSP) 技术中,自定义标签库(Custom Tag Libraries)是一种强大的特性,允许开发者创建可重用的、封装复杂功能的标签,使得JSP页面更加简洁易读。这篇内容将深入探讨...
自己写的自定义标签库,实现JSTL常用的功能。
### Taglib自定义标签库详解 #### 一、Taglib简介与作用 Taglib,即Tag Library(标签库),是JavaServer Pages (JSP) 技术中的一个重要组成部分,允许开发者创建可重用的定制标签,这些标签可以封装复杂的业务...
第15章 自定义标签库,js的p基础知识
### JSP通过自定义标签库实现数据列表显示的方法 #### 一、引言 在Web开发中,JSP(JavaServer Pages)作为一种广泛使用的服务器端技术,为动态网页的创建提供了强大的支持。为了提高开发效率和代码的复用性,...
【自定义TLD标签库源码加视频】这个主题涵盖了Java服务器端开发中的一个重要概念——自定义标签库(Tag Library)及其源代码分析。在Java Web应用开发中,TLD(Tag Library Descriptor)文件用于定义自定义JSP标签,...
在JSP页面中,通过`指令`引入自定义标签库,并使用`属性...</tag-name>`的格式调用自定义标签。 **二、自定义标签函数** 自定义标签函数是在JSP 2.0中引入的一种新的特性,它允许开发者像使用EL(Expression ...
本文实例讲述了ThinkPHP分组下自定义标签库的实现方法。分享给大家供大家参考。具体如下: 自定义标签库应该位于ThinkPHP\\Extend\\Driver\\TagLib目录下 1 新建标签类库文件名为TagLibBlog.class.php。 2 编辑刚才...
二、创建自定义标签库 1. 创建 Tag 类:首先,我们需要创建一个 Java 类,该类继承自 `org.apache.struts.taglib.Tag` 或其子类,例如 `org.apache.struts.taglib.bean.WriteTag`。在这个类中,我们将定义标签的...
本文将深入讲解JSP自定义标签的相关概念、格式、处理过程以及创建和使用自定义标签库的基本步骤。 1. 基本概念: - **标签**:JSP标签是XML元素,用于简化JSP页面,使其更易读且支持多语言版本。标签名和属性区分...