- 标记文件:一种轻型的标记处理器,本质是JSP,使用标记文件创建定制标记,页面开发人员不用编写复杂的java标记处理器类
- 创建标记文件:
- 把一个被包含文件(eg:Header.jsp)重命名为 .tag后缀
- 将标记文件放在WEB-INF目录下的"tag"目录中
- 使用标记文件:
- 先在JSP中调用taglib指令:
- <%@ taglib prefix="myTags" tagdir="/WEB-INF/tags" %>
- prefix:前缀
- tagdir:标记文件的位置
- 在JSP中使用标记:
- <myTags:Header />
- 先在JSP中调用taglib指令:
<前缀名:标记文件名>
- 标记文件的指令:
- attribute指令:
- attribute指令只能由标记文件使用
- 标记文件发送的不是请求参数,而是标记属性
- 所有标记的属性都只有标记作用域
- 在标记文件中声明属性:
- <%@ attribute name="subTitle" required="true" rtexprvalue="true" %>
- attribute指令:
name:属性名:
required:属性是否可选,true:不可选、false:可选
rtexprvalue:是否可以为EL表达式,
true:可以是String直接量,也可以是表达式
false:只能为String直接量
- 在标记文件中使用属性:
- <em><strong>${subTitle}</strong></em><br>
- 在JSP中调用有属性的标记:
- <myTags:Header subTitle="We take the Stirng ......" />
- tag指令:相当于JSP页面的page指令,用于设置标记的body-content
- 语法:
<%@ tag body-content="xxxxx" %>
body-content:标记体的内容
emty:标记体为空
tagdependent:把标记体看作纯文本
scriptlet:默认值
- 标记文件标记的体中不能使用脚本代码
- 标记文件的body-content默认值为"scriptlet",只有当body-content是另外两个值时才需要使用tag指令
- 容器会在4个位置中查找标记文件:
- 直接在WEB-INF/tags目录中查找
- 在WEB-INF/tags的子目录中查找
- 在WEB-INF/lib下一个JAR文件的META-INF/tags的子目录中查找
- 在WEB-INF/lib下一个JAR文件中的META-INF目录中查找
- 如果标记文件部署在一个JAR中,就必须有一个TLD
- 标记文件可以访问request、response、JspContent隐式对象,但不能访问ServletContext