标签文件(tag file)

1.  标签文件介绍
标 签文件是JSP2.0新增的功能,标签文件的本质在转译成一个Servlet之后,是一个实现了SimpleTag接口的类,目标是让开发人员可以直接使 JSP语法来制作标签。标签文件是以.tag或者.tagx作为扩展名,如果标签文件中包含了的其他完整或部分片段的标签文件,那么应该以.tagf为 扩展名的。标签文件必须存放在WEB-INF目录下,最好是在WEB-INF目录下再新建一个tags目录,然后将所有的标签文件都存放在这里。标签文件 可以使用所有的JSP元素,但是不能使用page指令,因为标签文件不一个页面,标签文件多个一个tag指令

2.  标签文件的隐藏属性
标 签文件可以使用隐藏属性:requestresponsejsContextsessionapplicationoutconfig,其中 jspContext隐含对象的类型为javax.servlet.jsp.JspContext,它用来管理所有范围的变量,就相当于JSP页面的 pageContext隐藏对象一样


3.  标签文件的指令
标签文件中可以使用的主要指令:taglibincludeattributevariable

1<%@ tag display-name="" body-content="" dynamic-attributes="" small-icon="" large-icon="" description="" example=""language="" import="" pageEncoding="" isELIgnored="">tag 指令如同JSP网页的page指令,用来设定标签文件。display-name表示图形化开发工具显示<display-name>所指定 的名称;body-content表示可能的值有三种,分别是emptyscriptlesstagdependentemptyempty为标 签中没有主体内容,scriptlet为标签中的主体内容ELJSP动作元素,但不可以为JSP脚本元素,tagdependent表示标签中的主体内 容交由tag自己去处理,默认值为scriptlessdynamic-attributes表示设定标签文件动态属性的名称,dynamic- attributes设定时,将会产生一个Map类型的集合对象,用来存放属性的名称和值;small_icon表示在图形化开发工具显 <small-icon>所指定的TLD相对路径的小图标,大小为16X16large-icon表示在图形化开发工具显 <large-icon>所指定的TLD相对路径的大图标,大小为32X32description表示用来说明此标签文件的相关信 息;example表示用来增加更多的标签使用说明,包括标签应用时的范例;languageimportpageEncoding、 isELIgnored这些属性与page指令相对应的属性相同。

2<%@ attribute name="" required="" fragment="" rtexprvalue="" type="" description=""%>这 个指令用来设定自定义标签的属性。其中name表示属性的名字;required表示是否为必要,默认为falsertexprvalue表示属性值是 否可以为run-time表达式。如为true,表示属性可用动态的方式来指定,如:<mytag:read num="${param.num}"/>,如为false,则一定要用静态的方式来指定属性值;type表示这个属性的类型,默认值为 java.lang.Stringdescription用来说明此属性的相关信息

3<%@ variable name-given="" name-from-attribute="" alias="" variable-class="" declare="" scope="" desription="">这 个指令用来设定标签文件的变量。其中name-given表示直接指定变量的名称;name-from-attribute表示以自定义标签的某个属性值 为变量名称;alias表示声明一个局部范围属性,用来接收变量的值;variable-class表示变量的类名称,默认值为 java.lang.Stringdeclare表示此变量是否声明默认值为truescope表示此变量的范围,范围是:AT_BEGIN、 AT_ENDNESTED,默认值为NESTEDdescription用来说明此变量的相关信息


4.  标签文件的使用
在引用标签文件的JSP页面必须使用taglib指令<%@ taglib tagdir="/WEB-INF/tags" prefix="r" %>,其中tagdir属性指定标签文件的地址。使用的自定义标签文件应该遵循<prefix:TagFileName/>模式。如果标签具有主体,则应该跟随具有</prefix:TagFileName>格式的结束标签。也就是说如果在WEB-INF/tags目录下有一个row.tag的标签文件,那么就可以这样来指定<%@ tagdir="/WEB-INF/tags" prefix="r" %>, 调用为<r:row/>

5.  标签文件的示例


<%@ tag body-content="empty"%>
<%@ attribute name="items" rtexprvalue="true" required="true"%>
<%@ attribute name="even" fragment="true" required="true"%>
<%@ attribute name="odd" fragment="true" required="true"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/coreprefix="c"%>

<c:forEach items="${items}" varStatus="status">
 <c:choose>
  <c:when test="${status.count == 0}">   
   <jsp:invoke fragment="even" />
  </c:when>
  <c:otherwise>
   <jsp:invoke fragment="odd" />
  </c:otherwise>
 </c:choose>
</c:forEach>


<%@ page contentType="text/html;charset=GBK"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/coreprefix="c"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>测试标签文件</title>
</head>

<body bgcolor="white">
<table>
 <h:row items="1,2,3,4,5,6,7,8,9,10">
  <jsp:attribute name="even">
   <c:set var="counter" value="${counter 1}" />
   <tr bgcolor="pink">
    <td>${counter}: 偶数行</td>
   </tr> 
  </jsp:attribute>
  <jsp:attribute name="odd">
   <c:set var="counter" value="${counter 1}" />
   <tr bgcolor="orange">
    <td>${counter}: 奇数行</td>
   </tr> 
  </jsp:attribute>
 </h:row>
</table>
</body>
</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值