JSP自定义标签的开发与应用
在JSTL提供了四个标签库(核心标签库、国际化标签库、数据库标签库和XML标签库),涉及到了几十个标签。虽然这些标签可以完成比较复杂的工作,但它们仍然无法满足程序中的特殊需求。因此,就需要用户根据自己的需要来定制JSP标签,这种由用户自己实现的JSP标签被称为自定义标签。
.1 自定义标签基础
自定义标签和JSTL中的标签从技术上看没有任何区别,可以将这些标签统称为JSP标签。JSP标签在JSP页面中通过XML语法格式被调用,当JSP引擎将JSP页面翻译成Servlet时,就将这些调用转换成执行相应的Java代码。也就是说,JSP标签实际上就是调用了某些Java代码,只是在JSP页面中以另外一种形式(XML语法格式)表现出来。
1.1 编写输出随机数的标签
开始自定义标签的学习之前,在这一节先来实现一个简单的自定义标签,以使读者做一下热身,同时读者通过本节的例子可以对自定义标签的实现方法和过程有一个感性的认识。
【实例1-1】 实现输出随机数的标签
1. 实例说明
在本例实现的自定义标签(random标签)的功能是输出一个指定范围的随机整数。random标签有如下几个特征:
没有标签体。
有两个属性:min和max。其中min属性表示生成随机数的最小值,max属性表示生成随机数的最大值。min属性的默认值是0,max属性的默认值是Integer.MAX_VALUE。
生成随机数的范围是min <= random < max。
random标签的标准调用形式如下:
<ct:random min="1" max="100" />
其中“ct”是调用标签时的前缀,通过taglib指定的prefix属性指定。上面的代码的功能是输出一个在1(包括)和100(不包括)之间的随机数。
2. 编写标签类
标签类是自定义标签的核心部分。实现标签类的方法有很多,但最简单的方法是编写一个从
javax.servlet.jsp.tagext.TagSupport类继承的Java类,并在该类中覆盖TagSupport类的doStartTag方法。为了读取标签中的属性值,还需要在标签类中为每一个标签属性提供一个相应数据类型的标签类属性以及该属性的setter方法(不需要getter方法)。生成随机数的代码需要放在标签类的doStartTag方法中。该标签类的实现代码如下:
package chapter1;
import java.io.IOException;
import java.util.Random;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
public class RandomTag extends TagSupport
{
// 封装random标签的两个属性的JavaBean属性
private int min = 0;
private int max = Integer.MAX_VALUE;
// min属性的setter方法
public void setMin(int min)
{
this.min = min;
}
// max属性的setter方法
public void setMax(int max)
{
this.max = max;
}
// 覆盖TagSupport类的doStartTag方法
// 当遇到标签(也就是<ct:random>)的开始标记时调用该方法
@Override
public int doStartTag() throws JspException
{
try
{
Random random = new Random();
// 生成一个在min和max之间的随机数
int result = min + random.nextInt(max - min);
// 将生成的随机数输出到客户端
pageContext.getOut().write(String.valueOf(result));
}
catch (IOException e)
{
}
// TagSupport类的doStartTag方法默认返回SKIP_BODY,表示忽略自定义标签体
return super.doStartTag();
}
}
在RandomTag类的doStartTag方法中使用了一个pageContext变量来获得JspWriter对象(JSP的out
内置对象)。pageContext变量是在TagSupport类中定义的一个类变量,该变量通过TagSupport类中的
setPageContext方法进行赋值。实际上,setPageContext方法是在Tag接口中定义的,而TagSupport实现了
Tag接口的setPageContext方法。Servlet容器在调用doStartTag方法之前,会先调用Tag接口的setPageContext方法来初始化pageContext变量。Tag接口将在1.1.3节介绍,在这里只要知道所有的标签类都必须实现Tag接口。为了简化标签类的实现,JSP API提供了一个TagSupport类,有了TagSupport类,用户在编写标签类时就不需要实现Tag接口的所有方法了。
3. 编写标签库描述符文件(TLD文件)
在JSTL中有若干TLD文件(详见图9.1),其中tld是Tag Library Descriptor(标签库描述符)的缩写。
要想使一个自定义标签正常工作,必须在TLD文件中对该标签进行配置。在TLD文件中主要配置如下两部分内容: 标签库的配置信息、标签库中具体标签的配置信息
标签库的配置信息主要包括如下的内容:
标签库的版本:使用<tlib-version>标签设置。
正常使用标签库中的标签所需要的最低JSP版本:使用<jsp-version>标签设置。
标签库的默认前缀:使用<short-name>标签设置。
标签库的URI:使用<uri>标签设置。
标签库的描述信息:使用<description>标签设置。
标签的配置信息主要包括如下的内容:
标签名:使用<name>标签设置。
标签对应的Java类:使用<tag-class>标签设置。
标签体的类型:使用<body-content>标签设置。
标签的描述信息:使用<description>标签设置。
标签属性的信息:每一个标签属性对应一个<attribute>标签。在<attribute>标签中可以指定标签名(使用<name>标签设置)、该属性是否必须指定(使用<required>标签设置)、该属性是否支持动态属性值(使用<rtexprvalue>标签指定)等配置信息。
在WEB-INF目录中建立一个jsp-taglib.tld文件,并在该文件中输入如下的内容:
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0">
<!-- 标签库的配置信息 -->
<description>自定义标签库</description>
<tlib-version>1.1</tlib-version>
<short-name>ct</short-name>
<uri>http://nokiaguy.blogjava.net</uri><taglib>
<!-- random标签的配置信息 -->
<tag>
<description>产生一个指定范围的随机数</description>
<name>random</name>
<tag-class>chapter1.RandomTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>min</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>max</name>
分享到:
相关推荐
Java自定义标签是JavaServer Pages (JSP)技术的一个强大特性,它允许开发者扩展JSP的标准标签库,创建自己的定制化标签,以提高代码的可读性和可维护性。自定义标签可以封装复杂的业务逻辑或者视图呈现,使得页面...
首先,Java自定义标签是一个Java类,它可以实现`javax.servlet.jsp.tagext.Tag`接口或者其子接口。这个接口定义了标签的生命周期方法,如`doStartTag()`和`doEndTag()`,这些方法在标签的生命周期中被容器调用来执行...
Java自定义标签是JavaServer Pages (JSP)技术的一个强大特性,它允许开发者扩展JSP的标准库,创建自己的标签库,以实现特定的功能或者简化代码。这种机制使得开发者能够将业务逻辑封装在标签中,提高代码的可读性...
### Java自定义标签详解 在Java Web开发领域中,自定义标签是一种强大的工具,它可以显著提升页面开发效率,简化代码复杂度。通过自定义标签,开发者可以将常用的、复杂的操作封装起来,使得JSP页面更加简洁易读。...
总之,Java自定义标签是Java Web项目中的重要工具,它们通过提供可复用的代码片段,促进了代码的模块化和项目管理的优化。理解并熟练使用自定义标签,对于提升Java Web开发的专业技能大有裨益。
在Java Web开发中,自定义标签(Custom Tags)和自定义函数(Custom Functions)是提高代码复用性和可维护性的重要手段。它们是JSP(JavaServer Pages)标准标签库(JSTL)的一种扩展,允许开发者创建符合特定业务...
在IT行业中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而Java自定义标签则是JSP中增强可重用性和模块化的一种方法。本文将深入探讨如何使用Java自定义标签来实现分页功能,当前位置的显示以及数据的...
Java自定义标签是JavaServer Pages (JSP)技术的一个强大特性,它允许开发者创建可重用的、定制化的标签库,以提高代码的可读性和可维护性。本教程将逐步指导你如何编写自己的Java自定义标签。 首先,我们需要了解...
Java自定义标签是基于Java类的,这些类实现了`javax.servlet.jsp.tagext.Tag`或`javax.servlet.jsp.tagext.SimpleTag`接口。`Tag`接口是经典且必须实现的接口,它定义了标签生命周期中的一系列方法,如`doStartTag...
Java自定义标签是一种扩展JSP页面功能的方式,它允许开发者创建可重用的组件,使得在JSP页面中处理业务逻辑或展现复杂视图变得更加简便。在这个“java自定义标签分页”主题中,我们将深入探讨如何利用自定义标签来...
本篇文章将深入探讨Java自定义标签的简单实例,帮助你理解如何在实际开发中应用这一技术。 首先,我们需要了解自定义标签的基本结构和组成。一个自定义标签通常由三部分组成:标签库描述文件(TLD)、标签处理类...
Java自定义标签是JavaServer Pages (JSP)技术的一个强大特性,它允许开发者创建可重用的组件,增强页面的可读性和维护性。在Java Web开发中,自定义标签通常用于封装复杂的业务逻辑或者视图展示,比如这里的"分页...
本教程将深入探讨Java自定义标签的实现与使用,通过详细的注释和使用文档,帮助你理解和掌握这一技术。 首先,我们需要了解自定义标签的基本结构。自定义标签由三部分组成:标签处理类(Tag Handler Class)、TLD...
Java自定义标签开发是Java服务器页面(JSP)技术中的一种高级特性,它允许开发者创建自己的标签库,以提供更加可重用、可维护和可扩展的代码。本资源包包含的内容涵盖了Java自定义标签的各个方面,从基础概念到实际...
Java自定义标签是JSP开发中的一个重要特性,它允许开发者扩展JSP页面的功能,通过创建自己的标签库来封装复杂逻辑或常见操作。本教程将详细讲解如何创建和使用自定义标签。 首先,JSP中的标签库是实现自定义功能的...
在本案例中,"jsp java自定义标签 实现分页 当前位置标签"的标题揭示了我们要探讨的核心内容:如何利用JSP和Java来创建一个自定义标签,这个标签不仅能够处理分页功能,还能显示当前位置信息。下面将详细解释这一...
总结来说,Java自定义标签的实现涉及创建TLD文件、编写标签处理器类以及在JSP页面中使用。这种机制使得开发者能够构建自己的函数库,提供定制化的功能,从而提高代码复用性和应用程序的可维护性。在本例中,我们学习...
以下是对"java自定义标签的使用"的详细解析: 1. **标签处理程序**: 标签处理程序是实现自定义标签功能的核心,它是一个Java对象,负责执行与自定义标签相关的操作。在创建自定义标签前,你需要编写一个标签处理...
Java自定义标签的开发与应用主要涉及到JSP(JavaServer Pages)技术的扩展能力,允许开发者根据特定需求创建自己的标签库。在JSTL(JavaServer Pages Standard Tag Library)提供的核心、国际化、数据库和XML标签库...
总的来说,Java自定义标签极大地增强了JSP页面的可扩展性和复用性,使得开发者可以创建复杂的功能,同时保持页面设计的简洁和分离。通过熟练掌握自定义标签的开发,可以构建更高效、更易于维护的Web应用程序。