使用 tag 文件定义自定义标签
来源:互联网 发布:csgo国服 mac 编辑:程序博客网 时间:2024/05/16 12:51
1. 使用 tag 文件定义自定义标签.
1). 可以使用 tag 文件的方式来定义自定义标签. 先前使用过标签处理器类(SimpleTagSupport)来定义自定义标签.
2). 不能直接访问这个 Tag 文件
3). tag 文件是扩展名必须为 tag
4). tag 文件的结构几乎和 JSP 文件相同:
一个 Tag 文件中可以有普通的 HTML 标记符、某些特殊的指令标记、 成员变量和方法的声明、Java 程序片段和 Java 表达式
实际上 tag 文件就是一个 SimpleTagSupport. 所以可以访问 SimpleTagSupport 的所有方法. 但通常情况下, 不需要访问.
5). tag文件只能放在如下位置:
①*. WEB-INF/tags
②*. WEB-INF/tags 的子目录
③. WEB-INF/lib 中 jar 包的 META-INF/tags
④. WEB-INF/lib 中 jar 包的 META-INF/tags 下的子目录
⑤. jar 包中的 tag 文件需要 tld
6). 使用 <taglib> 指令标记引入自定义标签库.
<taglib>指令的格式如下: <%@ taglib tagdir="自定义标记库的位置" prefix="前缀">
7). 若 JSP 页面调用一个 tag 文件时需要动态地向该 tag 文件传递信息, 则需要使用带有标记体的标签, tag 文件通过使用 <jsp:doBody />
标签处理 JSP 页面传递过来的标签体
8). tag 文件的 tag 指令:
I. tag 文件中的 tag 指令类似于 JSP 文件中的 page 指令. tag 文件通过使用 tag 指令可以指定某些属性的值, 以便从总体上影响 tag 文件的
处理和表示. tag指令的语法为: <%@ tag 属性1="属性值" 属性2="属性值" … 属性n="属性值"%>
一个 tag 文件中可以使用多个 tag 指令, 因此经常使用多个 tag 指令为属性指定需要的值:
<%@ tag 属性1="属性值"%>
<%@ tag 属性2="属性值"%>
II. tag 指令可以操作的属性有: body-content、language、import、pageEncoding。
> body-content属性值有: empty、tagdependent、scriptless. 默认值是 scriptless。
> 属性的值是 empty: 标签体为空
> 属性的值是 tagdependent 或 scriptless: 有标签体
> 属性值是 scriptless, 则标签体中不能有 Java 代码. 属性值是 tagdependent, 则标签体内容按纯文本处理.
IV. language 属性的值指定 tag 文件使用的脚本语言, 目前只能取值java, 其默认值就是java.
V. import 属性的作用是为 tag 文件引入需要的包或类. import 属性可以取多个值.
默认引入的类: "java.lang.*"、 "javax.servlet.*"、javax.servlet.jsp.*"、"javax.servlet.http.*"。
VI. pageEncoding 属性: 指定 tag 文件的字符编码, 其默认值是 ISO-8859-1
9). include 指令: tag 文件中也有和 JSP 文件类似的 include 指令, 使用方法和作用与 JSP 文件中的 include 指令类似
10). attribute指令: tag 文件中通过使用 attribute 指令, 让使用它的 JSP 页面向该 tag 文件传递需要的属性.
attribute指令的格式为: <%@ attribute name="属性名" required="true"|"false" type="对象的类型"%>
例如: <%@ attribute name="length" required="true" %>
11)^^. variable 指令: tag 文件通过使用 variable 指令可以将 tag 文件中的对象返回给调用该 tag 文件的 JSP页面.
I. variable 指令的格式: <%@ variable name-given="对象名字" variable-class="对象的类型" scope="有效范围" %>
> variable-class: 对象的类型必须带有包名
> scope: AT_BEGIN; NESTED; AT_END.
NESTED: 只可以在标签体内使用的对象. AT_END: 在 tag 标记结束后才可以使用对象。
> 例: <%@ variable name-given="time" variable-class="java.util.Date" scope="AT_END" %>
12). taglib 指令: 一个 tag 文件可以使用 tag 标记来调用其它标签
1). 可以使用 tag 文件的方式来定义自定义标签. 先前使用过标签处理器类(SimpleTagSupport)来定义自定义标签.
2). 不能直接访问这个 Tag 文件
3). tag 文件是扩展名必须为 tag
4). tag 文件的结构几乎和 JSP 文件相同:
一个 Tag 文件中可以有普通的 HTML 标记符、某些特殊的指令标记、 成员变量和方法的声明、Java 程序片段和 Java 表达式
实际上 tag 文件就是一个 SimpleTagSupport. 所以可以访问 SimpleTagSupport 的所有方法. 但通常情况下, 不需要访问.
5). tag文件只能放在如下位置:
①*. WEB-INF/tags
②*. WEB-INF/tags 的子目录
③. WEB-INF/lib 中 jar 包的 META-INF/tags
④. WEB-INF/lib 中 jar 包的 META-INF/tags 下的子目录
⑤. jar 包中的 tag 文件需要 tld
6). 使用 <taglib> 指令标记引入自定义标签库.
<taglib>指令的格式如下: <%@ taglib tagdir="自定义标记库的位置" prefix="前缀">
7). 若 JSP 页面调用一个 tag 文件时需要动态地向该 tag 文件传递信息, 则需要使用带有标记体的标签, tag 文件通过使用 <jsp:doBody />
标签处理 JSP 页面传递过来的标签体
8). tag 文件的 tag 指令:
I. tag 文件中的 tag 指令类似于 JSP 文件中的 page 指令. tag 文件通过使用 tag 指令可以指定某些属性的值, 以便从总体上影响 tag 文件的
处理和表示. tag指令的语法为: <%@ tag 属性1="属性值" 属性2="属性值" … 属性n="属性值"%>
一个 tag 文件中可以使用多个 tag 指令, 因此经常使用多个 tag 指令为属性指定需要的值:
<%@ tag 属性1="属性值"%>
<%@ tag 属性2="属性值"%>
II. tag 指令可以操作的属性有: body-content、language、import、pageEncoding。
III. body-content 属性可以确定 JSP 页面使用 Tag 标记定义的自定义标签是否可以有标记体, 如果允许有标记体, 该属性会给出标记体内容的类型。
body-content的值有下面4种:
<xsd:enumerationvalue="tagdependent"/>
tagdependent:标签体内容直接被写入BodyContent,由自定义标签类来进行处理,而不被JSP容器解释,
如下:
<test:myList>
select name,age from users
</test:myList>
JSP:接受所有JSP语法,如定制的或内部的tag、scripts、静态HTML、脚本元素、JSP指令和动作。如:
<my:test>
</my:test>
具体可参考后面附源码。
empty:空标记,即起始标记和结束标记之间没有内容。
下面几种写法都是有效的,
<test:mytag />
<test:mytag uname="Tom" />
<test:mytag></test:mytag>
scriptless:接受文本、EL和JSP动作。如上述②使用<body-content>scriptless</body-content>则报错,具体可参考后面附源码。
> body-content属性值有: empty、tagdependent、scriptless. 默认值是 scriptless。
> 属性的值是 empty: 标签体为空
> 属性的值是 tagdependent 或 scriptless: 有标签体
> 属性值是 scriptless, 则标签体中不能有 Java 代码. 属性值是 tagdependent, 则标签体内容按纯文本处理.
IV. language 属性的值指定 tag 文件使用的脚本语言, 目前只能取值java, 其默认值就是java.
V. import 属性的作用是为 tag 文件引入需要的包或类. import 属性可以取多个值.
默认引入的类: "java.lang.*"、 "javax.servlet.*"、javax.servlet.jsp.*"、"javax.servlet.http.*"。
VI. pageEncoding 属性: 指定 tag 文件的字符编码, 其默认值是 ISO-8859-1
9). include 指令: tag 文件中也有和 JSP 文件类似的 include 指令, 使用方法和作用与 JSP 文件中的 include 指令类似
10). attribute指令: tag 文件中通过使用 attribute 指令, 让使用它的 JSP 页面向该 tag 文件传递需要的属性.
attribute指令的格式为: <%@ attribute name="属性名" required="true"|"false" type="对象的类型"%>
例如: <%@ attribute name="length" required="true" %>
11)^^. variable 指令: tag 文件通过使用 variable 指令可以将 tag 文件中的对象返回给调用该 tag 文件的 JSP页面.
I. variable 指令的格式: <%@ variable name-given="对象名字" variable-class="对象的类型" scope="有效范围" %>
> variable-class: 对象的类型必须带有包名
> scope: AT_BEGIN; NESTED; AT_END.
NESTED: 只可以在标签体内使用的对象. AT_END: 在 tag 标记结束后才可以使用对象。
> 例: <%@ variable name-given="time" variable-class="java.util.Date" scope="AT_END" %>
12). taglib 指令: 一个 tag 文件可以使用 tag 标记来调用其它标签
0 0
- 使用 tag 文件定义自定义标签
- 使用 tag 文件定义自定义标签
- tag文件-自定义标签
- Spring自定义tag标签及使用
- 自己通过编写tag文件来自定义标签
- 自定义标签tag
- JSP自定义标签(Tag)
- 自定义标签(tag)
- struts2 自定义tag标签
- jsp自定义tag标签
- Jsp 自定义tag标签
- 自定义标签Tag
- 开发自定义tag标签
- Jsp自定义tag标签
- 自定义Shiro标签Tag
- Java自定义标签Tag
- 自定义Tag标签
- 自定义标签tag文件中,rtexprvalue属性的作用
- 朴素贝叶斯——理论篇
- struts2的执行原理(执行流程,过滤器和拦截器)
- linux驱动程序开发 1
- android json解析及简单例子
- Linux网络编程--tcp服务器
- 使用 tag 文件定义自定义标签
- nyoj 1238 最少换乘 【最短路径-Dijksra】
- ImageView设置selector不起作用原因
- 用swap方法强行释放STL容器占用的内存
- 项目需求:将购物车中的商品添加到订单表和订单商品表
- 七个好习惯
- Linux网络编程——tcp、udp迭代服务器
- 《软件工程》笔记
- C++语言中内存分布及程序运行中(BSS段、数据段、代码段、堆栈)