标签:ext 表示 tab 自定义 padding bsp 元素 attribute port
tag file从两个方面简化了自定义标签的开发。首 先,tag file无须提前编译,直到第一次被调用才会编 译。除此之外,仅仅使用JSP语法就可以完成标签的扩 展定义,这意味着不懂Java的人也能够进行标签自定义 了。
其次,标签库描述文件也不再需要了。原先需要在 标签库描述文件里定义标签元素的名字,以及它所对应 的action。使用tag file的方式,tag file名和action相同, 因此不再需要标签库描述文件了。
JSP容器提供多种方式将tag file编译成Java的标签 处理类。例如Tomcat将tagfile翻译成继承于 javax.servlet.jsp.tagext.SimpleTag接口的标签处理类。
一个tag file和JSP页面一样,它拥有指令、脚本、 EL表达式、动作元素以及自定义的标签。一个tag file 以tag和tagx为后缀,它们可以包含其他资源文件。一个 被其他文件包含的tag file应该以tagf为后缀。
tag文件必须放在应用路径的WEB-INF/tags目录下 才能生效。和标签处理类一样,tag 文件可以被打到jar 包里。
tag file中也有一些隐藏对象,通过脚本或者EL表 达式可以访问这些隐藏对象。表7.1列出了这些隐藏对 象。这些隐藏对象和JSP隐藏对象类 似。
对象 | 类型 |
request | javax.servlet.http.HttpServletRequest |
response | javax.servlet.http.HttpServletResponse |
out | javax.servlet.jsp.JspWriter |
session | javax.servlet.http.HttpSession |
application | javax.servlet.ServletContext |
config | javax.servlet.ServletConfig |
jspContext | javax.servlet.jsp.JspContext |
1. 下面的这个例子包含一个tag文件和一个使用这个tag文 件的JSP页面。例子的目录结构如图所示。
这个tag file的名称是firstTag.tag,代码如下所 示。
<%@ tag import="java.util.Date" import="java.text.DateFormat"%> <% DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG); Date now = new Date(System.currentTimeMillis()); out.println(dateFormat.format(now)); %>
tag file和JSP页面是很相似 的。在firstTag.tag文件里包含了一个tag指令和一个脚本 片段,其中tag指令里又有两个import属性。接下来,只 需要将这个tag file放到WEB-INF/tags目录下就可以使用 了。注意tag file名和标签的名字是一样的,例如这个 firstTag.tag的tag file对应的标签名即为firstTag。
2. 下面是一个使用firstTag.tag文件的JSP实例: firstTagTest.jsp。
firstTagTest.jsp页面
<%@ taglib prefix="easy" tagdir="/WEB-INF/tags" %> Today is <easy:firstTag/>
效 果:
和JSP页面一样,tag file可以使用指令来指挥JSP容 器如何编译这个tag file。tag file的指令语法和JSP是一 样的:
<%@ directive (attribute="value")* %>
星号(*)表示括号内的可以重复0次或者多次,上 面的指令也可以写成下面这种更直白的样子:
<%@ directive attribute1="value1" attribute2="value2" ... %>
属性必须被单引号或者双引号包裹,<%@之后和 %>之前的空格加不加都不影响正确性,但是为了可读 性,建议加上空格。除了page指令,其他所有的JSP指 令都可以用于tag file。在tag file中,可以使用tag指令代 替page指令。另外,你还可以使用两个新指令: attribute 和variable。下表展示了所有可以在tag file中使 用的指令。
指令 | 描述 |
tag | 作用与JSP页面中的page指令类似 |
include | 用于将其他资源导入tag file中 |
taglib | 用于将自定义标签库导入tag file中 |
attribute | 用于将自定义标签库导入tag file中 |
variable | 用于将自定义标签库导入tag file中 |
标签:ext 表示 tab 自定义 padding bsp 元素 attribute port
原文地址:https://www.cnblogs.com/jiangfeilong/p/10705357.html