第三章Tag文件与Tag标记
第三章Tag文件与Tag标记
3.1Tag文件
3.1.1Tag文件的结构
Tag文件是扩展名为.tag的文本文件,其结构和JSP文件类似。其中可以有普通的HTML标记符、某些特殊的指令标记、成员变量声明和方法的定义。Java程序片和Java表达式。
3.1.2Tag文件的保存
1.Tag文件所在目录
在 JSP 中,标签文件通常存储在 WEB-INF/tags 目录下,该目录是受保护的,无法从客户端(即浏览器)访问。标签文件应该放在具有描述性子目录名称的目录下,例如:WEB-INF/tags/forms 或 WEB-INF/tags/utilities。这样会使您的标签更易于组织和查找。
2.Tag文件的编码
在 JSP 标签文件中使用的编码方式与常规的 JSP 页面相同。您可以指定 JSP 标签文件的编码方式,例如 UTF-8,通过在 JSP 标签文件的开始标记 <%@ tag %> 中添加 charset 属性。例如:
<%@ tag language=”java” pageEncoding=”UTF-8” %>
注意:在 JSP 标签文件的开始标记中使用 pageEncoding 属性指定编码方式只是一种指定编码的方式。确保在编辑标签文件时使用相同的编码方式。
3.2Tag标记
3.2.1
在 JSP 中,标签(Tag)和标签文件(Tag file)是不同的概念。 标签是用于在 JSP 页面中引用自定义的 Java 代码的一种机制。JSP 标签包含正文和属性,可用于在 JSP 中重复使用Java 代码块。标签通常用于实现页面布局、处理表单、执行业务逻辑等操作。标签的使用方式类似于 HTML 标签,但标签的实现通常是基于 Java 类、接口和配置文件。 而标签文件(Tag file)是一种用于创建 JSP 标签的机制。标签文件包含 JSP 代码和 Java 代码,可以用于定义与标签相关的行为和逻辑。标签文件本质上是一个 JSP 网页,但是它不是在浏览器中运行,而是在 JSP 引擎中执行。使用标签文件可以使 JSP 页面更易于组织和维护。 为了使用标签文件,我们需要: 1. 创建一个标签文件,这可以是一个 JSP 文件,其中包含标签的实现代码,或者是一个 JSPF(JSP Fragment)文件,其中只包含标签的实现代码。 2. 在标签文件中定义所需的属性和标签正文。 3. 在 JSP 页面中使用类似于 HTML 标签的方式来调用标签。 4. 在 JSP 页面的声明部分中导入标签库并指定标签文件的路径。 例如,以下代码演示了在 JSP 页面中如何使用自定义的标签:
1 |
|
其中,标签库前缀(prefix)是 myTag,标签文件的路径(uri)是 /WEB-INF/tags/myTag.tag,name 属性的值是 John。在这个例子中,我们将所有的自定义标签存储在标签文件 myTag.tag 中,该文件位于 WEB-INF/tags 目录下。
3.2.2
在 JSP 中,可以使用自定义的标签(Tag)来组织和重用页面。自定义标签可以看做是用于替代 Java 代码的高层次的组合元素。标签可以执行各种任务,例如: - 根据参数传递数据 - 控制页面流程 - 实现业务逻辑 - 处理表单数据 - 生成 HTML 或其他格式的文本 在 JSP 中使用标签包括两个部分: 1. 定义标签的实现 在 JSP 中定义标签的实现通常使用 Java 类和配置文件。Java 类实现标签的具体逻辑和行为,配置文件定义标签的属性、方法和行为。标签的实现通常存储在 WEB-INF/classes 或 WEB-INF/lib 目录中。 以下是一个自定义标签的实现示例:
1 |
|
在这个例子中,我们使用 TagSupport 类作为基类,并实现了 doStartTag() 方法来生成 HTML 消息。在标签实现类中,我们还定义了标签的属性 name。 2. 使用自定义标签 在 JSP 页面中使用自定义标签需要以下步骤: - 在 JSP 页面的顶部导入标签库,例如:<%@taglib prefix=”mytag” uri=”/WEB-INF/tags/mytag.tld”%>。 - 在需要使用标签的位置插入标签代码,例如:<mytag:hello name=”John” />。 在这个例子中,我们将自定义标签库的前缀设置为 mytag,标签库的 URI 是 /WEB-INF/tags/mytag.tld。我们还使用自定义标签生成了一个简单的 HTML 消息,其属性 name 的值是 John。 以上是自定义标签在 JSP 中的基本用法。使用标签可以大大简化 JSP 页面的开发和维护,提高代码的重用性和可读性。
3.2.3
在 JSP 中,标签(Tag)是一个类似于 HTML 标签的元素,可以用于编写可重用的 Java 代码。标签在 JSP 引擎中运行时,会被解析成 Java 代码,并与页面的其他部分一起编译成一个 Servlet。在客户端访问 JSP 页面时,Servlet 会根据请求生成响应并发送给客户端。 自定义标签的运行原理如下: 1. 标签解析 当 JSP 引擎遇到自定义标签时,会首先解析标签的定义,并根据标签定义生成相应的 Java 代码。标签定义可以包括标签的属性、行为和逻辑,以及标签的处理类和配置文件等。 2. 标签处理 一旦标签被解析,标签处理类就会被实例化,并在页面的运行时环境中执行。标签的属性值会被传递给标签处理类,并在标签处理类中进行相应的处理。此过程中产生的任何输出都会传递给 JSP 引擎,最终被合并到页面的其他部分中。 3. 页面生成 在 JSP 引擎结束处理标签后,它将合并标签处理类产生的任何输出,并将其与页面的其他部分一起编译成一个 Servlet。在客户端访问 JSP 页面时,Servlet 会根据请求生成响应并发送给客户端。 简而言之,JSP 标签的运行原理基于标签的解析、标签处理和页面生成。标签的解析和处理是在服务器端完成的,可以让开发人员编写更加简洁、可重用的代码。这样可以提高开发效率和代码的可读性,同时也可以减少代码的重复编写。
3.3Tag文件中的常用指令
3.3.1Tag指令
tag指令
<%@ tag %> 此 JSP 指令用于声明自定义标记的页面特定属性。它位于 JSP 页面的顶部,在任何 HTML 或 Java 代码之前,用于定义标记的属性和特征。这些属性可以包括标记名称、标记正文内容、属性名称和类型等内容。
3.3.2 include指令
在Tag文件中也有和JSP文件类似的include指令标记,其使用方法和作用与JSP文件中的include指令类似。
3.3.3 arrtibute指令
在Tag文件中通过使用attribute指令让使用它的JSP页面向该Tag文件传递需要的数据。attribute指令的格式如下:
<%@ attribute name =”对象名字”required=”true”|”false” type=”对象的类型”%>
例如:
1 |
|
就相当于Tag文件中有了一个名字是result的对象,但Tag文件不需要创建该对象的result,而是等待JSP页面将一个Double型的对象的引用传递给result。
JSP页面使用Tag标记向所调用的Tag文件中name指定的对象传递一个引用,方式如下
<前缀:Tag文件名字 对象名字=”对象的引用”/>
比如,JSP页面使用Tag标记(假设尿急浅醉为computer)调用myTag.tag:
1 |
|
3.3.4 variable指令
Tag文件通过使用variable指令可以将Tag文件中的对象返回给调用该Tag文件的JSP页面
variable指令格式如下:
<%@ variable name-given=”对象名”variable-class=”对象类型”scope=”有效范围”%>
Tag文件为了给JSP页面返回一个对象,就必须将返回的对象的名字以及该对象的引用储存到Tomcat服务器提供的内置对象jspContext中,比如:
1 |
|