文章目录
前言
Tag文件与Tag标记
Tag文件
Tag文件的结构
Tag文件的保存
Tag标记
Tag标记的使用
Tag文件中的常用指令
tag指令
variable指令
taglib指令
总结
前言
本章内容为Tag文件的结构、Tag标记和Tag文件中的常用指令。难点是Tag文件中的常用指令中的attribute指令和variable指令
Tag文件与Tag标记
Tag文件可以被JSP页面动态加载调用,实现代码的复用
Tag文件
Tag文件的结构
- 普通的HTML标记符
- 某些特殊的指令标记
- 成员变量声明和方法的定义
- Java程序片 Java表达式
例:oddNumberSum.tag<%@ tag pageEncoding="utf-8" %> <p style="font-family:宋体;font-size:36"> 1~100内的奇数之和: <% int sum=0,i=1; for(i=1;i<=100;i++){ if(i%2==1) sum=sum+i; } out.println(sum); %> </p>
tip:Tag文件扩展名为.tag的文本文件
Tag文件保存
tag文件必须在该 Web 服务目录下,建立如下的目录结构:
Web 服务目录\WEB- INE\tags
例如:
ch3\WEB- INF\tags
其中的 WEB-INF(字母大写)和 tags 都是固定的目录名称,而 tags 下的子目录的名称可由用户给定。
Tag 文件的编码
保存 Tag 文件时按照 Tag 文件指定的编码保存,
<%@ tag pageEncoding = "utf - 8”%>
指定的编码是 UTF-8,因此需要按照 UTF-8 编码保存 Tag 文件。
Tag标记
Tag标记与Tag文件
某个 Web 服务目录下的 Tag文件只能由该 Web服务目录中的 JSP页面调用,JSP页面必须通过Tag标记来调用一个Tag文件
Tag标记的名字和Tag文件的名字一致
<Tag文件的名字 />
或
<Tag文件的名字> 其他内容(称为标体内容)</Tag文件的名字>
Tag 标记的使用
一个JSP 页面通过使用 Tag 标记来调用一个 Tag 文件。Web 服务目录下的一个JSP页面在使用 Tag 标记来调用一个Tag文件之前,必须首先使用 taglib标记引人该 Web服务目录下的标记库,只有这样,JSP 页面才可以使用 Tag标记调用相应的 Tag 文件。
taglib指令格式如下:
<%@ taglib tagdir="标记库的位置" prefix="前缀"%>
例如:
<%@ taglib tagdir = "/WEB-INF/tags" prefix = "computer"%>
tip:JSP页面使用 Tag 标记时,冒号:的左右不要有空格
<%@ page contentType = "text/html" %>
<%@ page pageEncoding = "utf-8" %>
<%@ taglib tagdir = "/WEB-INF/tags" prefix = "computer"%>
<HTML><body bgcolor = cyan>
<h1>调用Tag文件计算100内奇数和:</h1>
<computer:oddNumberSum /> <%-- 使用Tag标记 --%>
</body></HTML>
Tag 文件中的常用指令
Tag 文件中经常使用的指令有 tag、taglib、includeattribute,variable。
tag 指令
类似于page指令
<%@ tag属性1=”属性值“>
(1)language指令:指定Tag文件的脚本语言,只能取Java
(2)include指令:JSP文件类似
(3)attribute指令:让使用它的JSP页面向该Tag文件传递需要的数据。
<%@ tag 属性 1="属性值”属性 2=属性值”... 属性 n="属性值”*>
<%@ attribute name="对象名字" [required="true"|"false"][ type="对象的数据"]%>
type必须使用包名,例如:java.lang.Double。默认类型为java.lang.String。
attribute name 是要传递的对象的名字。
required为true时,调用tag文件必须向name中对象传递一个引用。
myTag文件中有一个result对象,等待JSP页面传递一个Double型引用:
<%@ attribute name="result" required="true" type="java.lang.Double"%>
调用并传递一个参数给变量result:
<computer:myTag result="new Double(3.1415926)"/>
variable 指令
Tag文件通过使用 artribute 指令,可以使得调用该 Tag 文件的 JSP 页面动态地向其传过数据。
将Tag文件中的对象返回给调用Tag文件的JSP页面
<%@ variable name-given="对象名" variable-class=”对象类型" scope="有效范围"%>
name-given:Tag文件中要返回给JSP的对象。
variable-class:对象的类型,必须带有包名,默认java.lang.String
scope:取值AT_BEGIN、NESTED和AT_END,分别代表可以在标记体中和标记后使用该对象、只能在标记体中使用、只能在标记结束后使用。
对象的返回
Tag 文件为了给JSP 页面返回一个对象,就必须将返回的对象的名字以及该对象的引用存储到 Tomcat 服务器提供的内置对象 jspContext 中。Tag 文件只有将对象的名字及其引用存储到jspContext 中,JSP 页面才可以使用该对象。
比如,Tag 文件的 variable 指令:
<%@variable name-given="time"
variable - class = "java. time.LocalDate" scope = "AT_END" %>
为JSP 页面返回名字是 time的 LocalDate 对象。那么 Tag 文件中必须让 jspContext 调用
方法存储名字是 time 的对象以及该对象的引用
jspContext.setAttribute("time",LocalDate.now());
taglib指令
引入标记库
<%@ taglib tagdir="/WEB-INF/tags" prefix="computer"%>
总结
以上就是本章内容,主要介绍Tag文件的结构、Tag标记和Tag文件中的常用指令。与JSP文件有一些区别。