目录
3.1 Tag文件的结构
3.1.1 Tag文件的结构
Tag文件是扩展名为.tag的文本文件,其结构和JSP文件类似。其中可以有普通的HTML标记符、某些特殊的指令标记、成员变量声明和方法的定义。Java程序片和Java表达式。
3.1.2 Tag文件的保存
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" %>
3.2 Tag标记
3.2.1 Tag标记和Tag文件
某个Web服务目录下的Tag文件只能由该Web服务目录中的JSP页面调用,JSP页面必须通过Tag标记来调用一个Tag文件。
Tag标记的名字和Tag文件的名字一致,即当我们编写了一个Tag文件并保存到特定目录后,也就给出了一个Tag标记,该标记格式为:
<Tag - - 文件的名字 - - />
或
<Tag - - 文件的名字 - - > 内容 </Tag 文件的名字>
一个Tag文件对应着一个Tag标记,把全体Tag标记称之为一个自定义标记库或简称为标记库。
3.2.2Tag标记的使用
一个JSP页面通过使用Tag标记来调用一个Tag文件。Web服务目录下的一个JSP页面在使用Tag标记来调用一个Tag文件之前,必须首先使用taglib指令标记引入该Web服务目录下的标记库,只有这样JSP页面才可以使用Tag标记调用相应的Tag文件。
taglib指令的格式如下:
<%@ taglib tagdir = "标记库的位置" prefix = “前缀”%>
例如:
<%@ taglib tagdir = "/WEB-INF/tags" prefix = “computer” %>
引入标记库后,JSP页面就可以使用带前缀的Tag标记调用相应的Tag文件,其中的前缀由<taglib>指令中的prefix属性指定。例如JSP使用如下Tag标记调用相应的Tag文件:
<computer:oddNumberSum/>
注:JSP页面使用Tag标记时,冒号:的左右不要有空格。
例:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib tagdir ="/WEB-INF/tags/lib1" prefix="computer"%>
<html>
<body>
<h1>调用Tag文件计算100內的奇数和:</h1>
<computer:addSum /> <%-- 使用Tag标记 --%>
</body>
</html>
3.2.3 Tag标记的运行原理
在 JSP 中,标签(Tag)是一个类似于 HTML 标签的元素,可以用于编写可重用的 Java 代码。标签在 JSP 引擎中运行时,会被解析成 Java 代码,并与页面的其他部分一起编译成一个 Servlet。在客户端访问 JSP 页面时,Servlet 会根据请求生成响应并发送给客户端。 自定义标签的运行原理如下: 1. 标签解析 当 JSP 引擎遇到自定义标签时,会首先解析标签的定义,并根据标签定义生成相应的 Java 代码。标签定义可以包括标签的属性、行为和逻辑,以及标签的处理类和配置文件等。 2. 标签处理 一旦标签被解析,标签处理类就会被实例化,并在页面的运行时环境中执行。标签的属性值会被传递给标签处理类,并在标签处理类中进行相应的处理。此过程中产生的任何输出都会传递给 JSP 引擎,最终被合并到页面的其他部分中。 3. 页面生成 在 JSP 引擎结束处理标签后,它将合并标签处理类产生的任何输出,并将其与页面的其他部分一起编译成一个 Servlet。在客户端访问 JSP 页面时,Servlet 会根据请求生成响应并发送给客户端。 简而言之,JSP 标签的运行原理基于标签的解析、标签处理和页面生成。标签的解析和处理是在服务器端完成的,可以让开发人员编写更加简洁、可重用的代码。这样可以提高开发效率和代码的可读性,同时也可以减少代码的重复编写。
3.3Tag文件中的常用指令
3.3.1. tag指令
<%@ tag %>
此 JSP 指令用于声明自定义标记的页面特定属性。它位于 JSP 页面的顶部,在任何 HTML 或 Java 代码之前,用于定义标记的属性和特征。这些属性可以包括标记名称、标记正文内容、属性名称和类型等内容。
3.3.2. include指令
<%@ include %>
此 JSP 指令用于包含 JSP 页中的其他文件或页面。包含文件的内容直接插入到 JSP 输出中,包含的文件可以是静态 HTML 文件,也可以是动态 JSP 文件。
3.3.3. attribute指令
<%@ attribute %>
此 JSP 指令用于定义可传递给定制标记的属性。它与 tag 指令结合使用以定义标记的属性,并指定属性的名称、类型和默认值。
3.3.4. variable指令
<%@ variable %>
此 JSP 指令用于定义可在多个 JSP 片段之间共享的页面级变量。它用于声明可由 JSP 页的不同部分(包括导入的文件和包含的页)访问和修改的变量。
3.3.5. Taglib 指令
<%@ taglib %>
此 JSP 指令用于定义和导入标记库。它用于将一组自定义标记与特定 URI 相关联,并指定标记库描述符文件 (TLD) 的位置。导入后,可以通过引用自定义标记的标记名称和属性名称在 JSP 页面中使用自定义标记。
总结
Tag文件和Tag标记都是JSP的自定义标签,用于将Java代码和HTML页面结合起来。 它们可以通过特殊的JSP指令进行定义和使用。 Tag文件是一种可重用的代码块,类似于Java类文件,通常存储在以“tag”为后缀名的文件中。 Tag文件可以包含JSP页面所需的Java代码和HTML页面元素,它们可以在JSP页面中使用,以便重复使用和简化代码。 Tag标记是在JSP页面中使用的自定义标签,用于替代Java代码和HTML标记。 它们可以用于执行任何JSP页面中需要的操作,如从数据库中检索数据、应用逻辑操作等。 Tag标记是通过定义和实现自定义标记处理器来创建的。 在使用Tag文件和Tag标记时,可以使用JSP标记库来将它们导入JSP页面。 这样,JSP页面就可以使用这些自定义标记,并且可以指定它们的属性和行为。