Tag文件和Tag标记

 

1 Tag文件的结构 java

—Tag文件 less

—扩展名为.tag的文本文件 jsp

—结构几乎和JSP文件相同 ui

—一个Tag文件中能够有 编码

—普通的HTML标记符 spa

—某些特殊的指令标记(与JSP指令、动做标记对应) .net

—成员变量和方法 对象

—Java程序片 ip

—Java表达式。 内存

AddSum.tag

<p>这是一个Tag文件,负责计算1~100内的奇数之和:

<% int sum=0,i=1;

for(i=1;i<=100;i++)

{ if(i%2==1) sum=sum+I; }

out.println(sum);

%>

EvenSum.tag

<p>这是一个Tag文件,负责计算1~100内的偶数之和:

<% int sum=0,i=1;

for(i=1;i<=100;i++)

{ if(i%2==0) sum=sum+I; }

out.println(sum);

%>

2 Tag文件的存储目录

—肯定的Tag文件存放目录

—引用Tag文件的JSP页面:Web服务目录

—Tag文件存放目录:Web服务目录\WEB-INF\tags

其中WEB-INFtags都是固定的目录名称,而tags下的子目录的名称可由用户给定。

—注意:Tag文件必须使用ANSI编码保存

3 Tag标记

1Tag文件的调用

—某个Web服务目录下的Tag文件只能由该Web服务目录(包括该Web服务目录的子目录)中的JSP页面调用

—JSP页面必须经过Tag标记调用Tag文件

2Tag标记

—伴随着Tag文件产生,编写完Tag文件并保存到特定目录后,就自定义出了一个Tag标记,其格式为:

<Tag文件名字/>

<Tag文件名字>

标记体

</Tag文件名字>

2Tag标记

—自定义标记库:简称标记库,存放在同一目录中的若干个Tag文件所对应的Tag标记的全体

3Tag标记的使用

—第一步:使用taglib指令标记引入该Web服务目录下的标记库

<%@taglib tagdir=“自定义标记库的位置” prefix=“前缀”%>

—一个JSP页面可使用几个taglib指令标记引入若干个标记库

<%@taglib tagdir=“/WEB-INF/tags” prefix="beijing"%>

%@taglib tagdir=“/WEB-INF/tags/geng” prefix=“dalian"%

—第二步:使用带有前缀的Tag标记调用相应的Tag文件,其中的前缀由taglib指令中的prefix属性指定。如:

<beijing:AddSum/>

<dalian:EvenSum/>

—前缀:经过前缀能够有效地区分不一样标记库中具备相同名字的标记文件。

—JSP引擎处理JSP页面中的Tag标记的原理以下:

①首次调用Tag文件:JSP引擎会将Tag文件转译成一个Java文件,并编译这个Java文件生成字节码文件,而后执行这个字节码文件实现Tag文件的动态处理,最后将有关结果发给用户端

②再次调用,若已被编译为字节码文件,JSP引擎直接执行字节码文件实现Tag文件的动态处理

③再次调用,发生改变,则同①

补充:Tag文件在 “<%!” “ /%>”标记符号之间声明的变量,和JSP “<%!” “ /%>”之间声明的变量相似,其有效范围是整个Tag文件

但有一点不一样:每当Tag文件对应的字节码被执行完毕后,这些变量便可释放所占有的内存空间

4Tag标记的标记体

—一个Tag文件对应一个Tag标记,并让JSP页面使用这个Tag标记动态执行该Tag文件。Tag标记的格式: <Tag文件名字/>

<Tag文件名字>

标记体

</Tag文件名字>

—动态地向Tag文件传递信息

—相应地,Tag文件经过调用<jsp:doBody/>处理JSP页面传递过来的“标记体”

—标记体的形式:文本数据

4 Tag文件中的经常使用指令

—JSP文件相似,Tag文件中也有一些经常使用指令,这些指令将影响Tag文件的行为。

—Tag文件中常常使用的指令有:tagtaglibincludeattributevariable

1 tag指令

—Tag文件中的tag指令相似于JSP文件中的page指令。

—Tag指令从整体上影响标记文件的处理和表示

<%@ tag 属性1= “value1” 属性2= “value2” …属性n= “valueN” >

—一个Tag文件中可使用多个tag指令

<%@tag 属性 1= “value 1”>

<%@ tag 属性 2= “value 2” >

<%@ tag 属性 n= “value n” >

—Tag指令能够操做的属性有:body-contentlanguageimportpageEncoding

body-content 属性

—指定JSP页面使用Tag标记时可使用的标记体格式

empty——没有标记体

tagdependent——有或无标记体,纯文本处理

scriptless——有或无标记体,标记体中不能有Java程序片

Tag文件经过<jsp: dobody>获取JSP页面传递的“标记体”

language 属性

指定Tag文件使用的脚本语言,目前只能使用Java,其默认值就是java

import 属性

—Tag文件引入Java核心包中的类

pageEncoding属性

—指定Tag文件的字符编码,其默认值是ISO-8859-1Tag文件必须使用ANSI编码保存

2include指令

—使用方法和做用与JSP文件中相似。

3 attribute指令

—Tag文件传值。

—Tag文件充当着可复用代码的角色,若是一个Tag文件能容许使用它的JSP页面向该Tag文件传递字符串数据,就使得Tag文件的功能更为强大。

—Tag文件中经过使用attribute指令,能够动态地向该Tag文件传递须要的字符串数据。attribute指令的格式以下:

<%@ attribute name=“对象名字”

required=“true”|“false“ type=“对象的类型”%>

<%@ attribute name=“对象名字”

required=“true”|“false“ type=“对象的类型”%>

•nameJSP页面在调用Tag文件时,可向name属性指定的对象传递一个引用

•type:对象的类型,必须带有包名。若是未指定,则对象的类型为java.lang.String类型

•requried:可选,默认为false。指定为true时,必须传递引用,false时可传可不传

•JSP页面使用Tag标记向所调用的Tag文件中name属性指定的对象传递一个引用。方式以下

<前缀:Tag文件名字对象名字=“对象的引用”/>

<前缀:Tag文件名字 对象名字=“对象的引用”>

标记体

</前缀:Tag文件名字>

3 attribute指令

举例一

•MyTag.tag

<%@ attribute name=“length” required=“true ” %>

•JSP页面:

<computerMyTag length=“1000”/>

举例二

•YourTag.tag

<%@ attribute name=“result ” required=“true ” type=“java.lang.Double” %>

•JSP页面:

<computerYourTag result=“<%= new Double(66.99)%>”/>

Tag文件中,不能够在定义和attribute指令中的name属性指定的对象具备相同名字的变量,不然将隐藏attribute指令中的对象,使其失效。

4 variable指令

Tag文件经过使用variable指令能够将Tag文件中的对象返回给调用该Tag文件的JSP页面。

1variable指令的格式

” variab<%@ variable name-given=“对象名字le-class=“对象的类型” scope=“有效范围”%>

: <%@ variable name-given="time" variable-class="java.util.Date" scope="AT_END" %>

variable指令给出的对象的名字是time、类型为java.util.Date、有效范围是AT_END

2)对象的返回

jspContext调用setAttribute(“对象的名字”,对象的引用)方法存储对象的名字以及该对象的引用。好比:jspContext.setAttribute("time",new Date());将名字是timeDate对象存储到jspContext中。

如下的variable指令:<%@ variable name-given=time variable-class=java.util.Date scope=AT_END %>JSP页面返回名字是timeDate对象。

5 taglib指令

一个Tag文件可使用Tag标记来调用其它的Tag文件。

Tag文件必须使用<taglib>指令引入该Web服务目录下的标记库,才可使用Tag标记来调用相应的Tag文件。<taglib>指令的格式以下:

<%@ taglib tagdir="自定义标记库的位置" prefix="前缀">

一个Tag文件也可使用几个<taglib>指令标记引入若干个标记库,例如:

<%@ taglib tagdir="/WEB-INF/tags" prefix="beijing"%>

<%@ taglib tagdir="/WEB-INF/tags/tagsTwo" prefix="dalian"%>

5  Tag标记的嵌套

当咱们使用Tag标记时,能够带有标记体,标记体还能够是一个Tag标记,这就实现了Tag标记的嵌套。

• Tag标记中的标记体由Tag文件的<jsp:doBody/>标记负责处理,而在Tag文件中,<jsp:doBody />标记被替换成对“标记体”进行处理后所获得的结果。

相关文章
相关标签/搜索