Tag file

JSP 2.0 引入 Tag file ,tag file 以 tag 或 tagx 为后缀,它们可以包含其他资源文件;一个被其他文件包含的 tag file 应该以 tagf 为后缀。

如同JSP页面被翻译成 Servlet 一样,JSP容器提供多种方式将 tag file 编译成 Java 的标签处理类。例如 Tomcat 将 tag file 翻译成继承与 javax.servlet.jsp.tagext.Simpletag 接口的标签处理类。

一个 Tag file 和 JSP 页面一样,拥有指令、脚本、EL表达式、动作元素、自定义的标签。

Tag file 从两方面简化了自定义标签的开发:

1)tag file 无需提前翻译,直到第一次被调用才会编译
2)不再需要标签库描述文件,使用 tag file 的方式,tag file 的文件名和标签名称(不包含后缀)相同。

tag file必须放在应用路径的 WEB-INF/tags 目录下才能生效。

tag file 中也有一些隐藏对象,通过脚本或者EL表达式可以访问这些隐藏对象。

request     // javax.sevlet.http.HttpServletRequest
response    // javax.servlet.http.HttpServletResponse
out         // javax.servlet.jsp.JspWriter
contig      // javax.servlet.ServletContig
session     // javax.servlet.http.HttpSession
application // javax.servlet.ServletContext
jspContext  // javax.servlet.jsp.JspContext

使用 tag file 的例子

 在应用项目的 WEB-INF 下新建 tags 目录,然后再 tags 目录下新建 tag file

<%-- firstTag.tag --%>
<%@ tag language="java" pageEncoding="UTF-8"%>
<%@ 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));
%>

在 JSP 页面中使用 tag file

<%-- firstTagtest.jsp --%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="easy" %>  <!-- 使用tagdir属性 -->

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Test tag file</title>
</head>
<body>
    Today is <easy:firstTag />  <!-- 标签名和tag file名相同 -->
</body>
</html>

测试

Tag file 中的指令

和 JSP 页面一样,tag file 可以使用指令来指挥 JSP容器如何编译这个 tag file,tag file 的指令语法和 JSP是一样的

<%@ 指令名称 属性=“属性值” 属性=“属性值” %>
tag  <!-- 与JSP中的page指令作用相同 -->
taglib  <!-- 用于引入自定义标签库到 tag file 中 -->
include   <!-- 用于将其他资源导入 tag file 中 -->
attribute  <!--  -->
variable   <!-- -->

tag指令

猜你喜欢

转载自www.cnblogs.com/0820LL/p/9898794.html
tag
今日推荐