`
puppy117
  • 浏览: 52249 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

自定义标签库

阅读更多
实现自定义标签按如下步骤进行:
(1)开发自定义标签处理类;
(2)建立一个*.t1d 文件,每个*.t1d 文件对应一个标签库,每个标签库对应多个标签;
(3)在web.xm1文件中增加自定义标签的定义;
(4)在JSP 文件中使用自定义标签。
一、开发自定义标签处理类
自定义标签类都必须继承一个父类: java.Servlet.jsp.tagext.TagSupport 。除此之外,自定义标签类还有如下要求。
·如果标签类包含属性,每个属性都有对应的getter 和setter 方法。
·重写doStartTag()或doEndTag()方法,这两个方法生成页面内容。
·如果需要在销毁标签之前完成资源回收,则重写re1ease()方法。
下面提供了一个最简单的标签代码:
import java.io.IOException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.TagSupport;

//标签处理类,继承TagSupport 父类
public class HelloWorldTag extends TagSupport {
	// 重写doEndTag方法,该方法在标签结束生成页面内容
	public int doEndTag() throws JspTagException {
		try {
			// 获取页面输出流,并输出字符串
			pageContext.getOut().write("Hello World");
		}
		// 捕捉异常
		catch (IOException ex) {
			// 抛出新异常
			throw new JspTagException("错误");
		}
		//返回值
		return EVAL_PAGE;
	}
}


这是个非常简单的标签,它只在页面中生成一个"Hello World" 的字符串。该标签没有属性,因此无须提供setter 和getter 方法;此外,该标签无须初始化资源,因此无须重写init 方法;在标签结束时无须回收资源,因此无须重写destroy 方法。

二、建立TLD 文件
<?xml version="I.O" encoding="ISO-8859-1"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems,Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_l_2.dtd">
<taglib>
	<!--定义标签库版本-->
	<tlib-version>1.0</tlib-version>
	<!--定义JSP 版本-->
	<jsp-version>1.2</jsp-version>
	<!--配置第一个标签-->
	<tag>
		<!--配置标签名-->
		<name>helloworld</name>
		<!--确定标签的处理类-->
		<tag-class>mytag.HelloWorldTag</tag-class>
		<!--确定标签的标签体,标签体为空-->
		<body-content>empty</body-content>
	</tag>
</taglib>

这个标签库配置文件非常简单,没有标签体及标签属性等。只是一个空标签。

三、在web.xml 文件中增加标签库定义
在web.xml 文件中定义标签库时使用taglib 元素,该元素包含两个子元素: taglib-uri
和taglib-location,前者确定标签库的URI; 后者确定标签库定义文件的位置。下面是web.xml 文件中关于test.tld 标签库的定义片段:
<!--定义标签库-->
<taglib>
	<!--确定标签库的URI-->
	<taglib-uri>/tags/tldtest.tld</taglib-uri>
	<!--确定标签库定义文件的位置-->
	<taglib-location>/WEB-INF/tldtest.tld</taglib-location>
</taglib>
如果需要使用多个标签库,只需要增加多个taglib 元素即可,因为每个taglib 元素可对应一个标签库。

四、使用标签库
(1)导入标签库:使用taglib 编译指令导入标签。
(2)使用标签:在JSP 页面中使用自定义标签。
taglib 的语法格式如下:
<%@ taglib uri= "tagliburi" prefix="tagPrefix" %>
其中uri 属性确定标签库定义文件的URI,这个URI 就是在web.xml 文件中为标签库定义的URI。而prefix 属性确定的是标签前缀,即在JSP 页面中使用标签时,该标签库负责处理的标签前缀。
使用标签的语法格式如下:
<tagPrefix : tagName tagAttribute=ntagValue n ...>
<tagBody/>
</tagPrefix>
如果该标签没有标签体,则可以使用如下语法格式:
<tagPrefix : tagName tagAttribute=ntagValue n .../>

五、带属性的标签
带属性的标签必须为每个属性提供对应的setter 和getter 方法。其TLD配置如下:
<?xml version="I.O" encoding="ISO-8859-1"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems,Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_l_2.dtd">
<taglib>
	<!--定义标签库版本-->
	<tlib-version>1.0</tlib-version>
	<!--定义JSP 版本-->
	<jsp-version>1.2</jsp-version>
	<!--配置第一个标签-->
	<tag>
		<!--配置标签名-->
		<name>query</name>
		<!--确定标签的处理类-->
		<tag-class>mytag.QueryTag</tag-class>
		<!--确定标签的标签体,标签体为空-->
		<body-content>empty</body-content>
		<!--配置标签属性: driver-->
		<attribute>
		<name>driver</name>
		<required>true</required>
		<rtexprvalue>true</rtexprvalue>
		</attribute>
		<!--配置标签属性: url -->
		<attribute>
		<name>url</name>
		<required>true</required>
		<rtexprvalue>true</rtexprvalue>
		</attribute>
	</tag>
</taglib>


页面中引用如下:
<%@ taglib uri="/tags/tldtest.tld" prefix="mytag" %>
<mytag:query driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/j2ee"/>


六、带标签体的标签

带标签体的标签,就是允许在标签内嵌套标签,通常可用于完成一些逻辑运算例如判断和循环等。
带标签体的标签需要继承BodyTagSupport,该类包含一个bodyContent 属性,该属性代表标签体。
BodyTagSupport 还包含两个方法。
• doAfterBodyO: 每次处理完标签体后调用该方法。
• void doInitBodyO: 开始调用标签体时调用该方法。

在处理标签类的各个方法中,不同的返回值对应不同的含义,常用的返回值有如下
几个。
• SKIP_BODY: 不处理标签体,直接调用doEndTag()方法。
• SKIP_PAGE: 忽略标签后面的JSP 页面。
• EVAL_PAGE: 处理标签结束,直接处理页面内容。
• EVAL_BODY_BUFFERED: 处理标签体。
• EVAL_BODY_INCLUDE: 处理标签体,但忽略setBodyContent()和doInitBody()方法。
• EVAL_BODY_AGAIN: 对标签体循环处理。
分享到:
评论

相关推荐

    jsp自定义标签库实现数据列表显示

    在JavaServer Pages (JSP) 开发中,自定义标签库是提高代码可重用性和模块化的重要手段。本文将详细讲解如何利用JSP自定义标签库实现数据列表的显示,以及涉及到的相关技术。 首先,`UserListTag.java` 是自定义...

    原创-自定义标签库制作

    ### 自定义标签库制作详解 #### 一、引言 自定义标签库是Java Server Pages (JSP) 技术中的一个重要组成部分,它允许开发者创建可重用的、功能丰富的HTML标签,这些标签可以像标准HTML标签一样在JSP页面中使用。...

    jsp自定义标签库学习

    在Java服务器页面(JSP)开发中,自定义标签库是一种强大的工具,它允许开发者创建可重用的组件,提高代码的可读性和维护性。本教程将深入讲解JSP自定义标签库的学习,包括其原理、配置以及如何创建和使用自定义标签...

    jsp自定义标签库注意事项

    【jsp自定义标签库注意事项】 在Java服务器页面(JSP)开发中,自定义标签库是一种强大的工具,它能够帮助开发者创建可重用的代码片段,提高代码的可读性和可维护性。以下是对JSP自定义标签库的详细解释和使用注意...

    JavaWeb-12:自定义标签库开发&JSTL标签库

    在JavaWeb开发中,自定义标签库和JSTL(JavaServer Pages Standard Tag Library)是两个重要的组件,它们极大地提高了代码的可读性和可维护性。本教程将深入探讨这两个主题,帮助开发者更好地理解和应用它们。 一、...

    jsp自定义标签库问答集锦.

    ### jsp自定义标签库知识点详解 #### 一、什么是jsp自定义标签? 1. **概念**:JSP 自定义标签是一种将复杂的功能封装成一个简单的标签的方式,它允许开发者创建可重用的代码组件,这些组件可以在 JSP 页面中像...

    jsp自定义标签库

    **JSP自定义标签库详解** 在JavaServer Pages (JSP) 技术中,自定义标签库(Custom Tag Libraries)是一种强大的特性,允许开发者创建可重用的、封装复杂功能的标签,使得JSP页面更加简洁易读。这篇内容将深入探讨...

    自定义标签库(自己写)

    自己写的自定义标签库,实现JSTL常用的功能。

    Taglib自定义标签库

    ### Taglib自定义标签库详解 #### 一、Taglib简介与作用 Taglib,即Tag Library(标签库),是JavaServer Pages (JSP) 技术中的一个重要组成部分,允许开发者创建可重用的定制标签,这些标签可以封装复杂的业务...

    第15章 自定义标签库

    第15章 自定义标签库,js的p基础知识

    jsp通过自定义标签库实现数据列表显示的方法.docx

    ### JSP通过自定义标签库实现数据列表显示的方法 #### 一、引言 在Web开发中,JSP(JavaServer Pages)作为一种广泛使用的服务器端技术,为动态网页的创建提供了强大的支持。为了提高开发效率和代码的复用性,...

    自定义tld标签库源码加视频

    【自定义TLD标签库源码加视频】这个主题涵盖了Java服务器端开发中的一个重要概念——自定义标签库(Tag Library)及其源代码分析。在Java Web应用开发中,TLD(Tag Library Descriptor)文件用于定义自定义JSP标签,...

    jsp2.0 自定义标签和自定标签函数

    在JSP页面中,通过`指令`引入自定义标签库,并使用`属性...&lt;/tag-name&gt;`的格式调用自定义标签。 **二、自定义标签函数** 自定义标签函数是在JSP 2.0中引入的一种新的特性,它允许开发者像使用EL(Expression ...

    ThinkPHP分组下自定义标签库实例

    本文实例讲述了ThinkPHP分组下自定义标签库的实现方法。分享给大家供大家参考。具体如下: 自定义标签库应该位于ThinkPHP\\Extend\\Driver\\TagLib目录下 1 新建标签类库文件名为TagLibBlog.class.php。 2 编辑刚才...

    struts实现自定义标签

    二、创建自定义标签库 1. 创建 Tag 类:首先,我们需要创建一个 Java 类,该类继承自 `org.apache.struts.taglib.Tag` 或其子类,例如 `org.apache.struts.taglib.bean.WriteTag`。在这个类中,我们将定义标签的...

    由浅到深详细讲解JSP自定义标签

    本文将深入讲解JSP自定义标签的相关概念、格式、处理过程以及创建和使用自定义标签库的基本步骤。 1. 基本概念: - **标签**:JSP标签是XML元素,用于简化JSP页面,使其更易读且支持多语言版本。标签名和属性区分...

Global site tag (gtag.js) - Google Analytics