厦门科华贴吧:java 中的TLD文件
来源:百度文库 编辑:偶看新闻 时间:2024/05/07 07:31:22
tld是taglib description 的缩写 定制标签拼图中的最后一块是TLD(标签库描述符)文件。创建的每个标签都必须在一个TLD文件中声明,而且这一文件还必须连同标签的Java处理器类一起被部署。正如在前一节中所看到的,servlet容器知道在何处放置了TLD文件,因为已经在web.xml标准servlet配置文件中声明了路径。
可以看到,TLD文件只不过是一个XML文件。根标签是,它包含一个或者多个标签,该元素用来声明定制标签。表4-1、表4-2和表4-3解释了TLD 中的每个标签。注意每个都必须包含一个或者多个声明。
表 4-1 TLD文件中的标签 标 签含 义
taglibTLD文件的根标签
tlibversion此标签库的版本
jspversion此标签库依赖的JSP版本。这里使用1.1
shortname当在JSP中使用标签时,此标签库首选或者建议的前缀。当然可以完全忽略这个建议
tag包含针对此标签库中的一个标签的元数据
表4-2的子标签 标 签含 义
name标签名称
tagclassJava标签处理器类的名称。注意这是处理器类的全限定名称,比如net.thinksquared.tags. MessageWriteTagHandler
bodycontent此标签的主体部分的内容。使用JSP
attribute包含了此标签的一个属性的元数据
表4-3的子标签 标 签含 义
name属性的名称。很明显它在该标签中必须是唯一的
required指示该标签是必需的(true)或者可选的(false)
http://hi.baidu.com/zhong8880/blog/item/891d1c3f7dc0ade554e72391.html
--------------------------------------------------------------------------------------------------
指的是你定义的类型是jsp;
是你定义的标签的属性name是否一定要,true表示该属性不能缺少;
表示你的name属性的值如何处理,false是只能按照text文本数据处理;true表示name的值可以
是表达式;
最后需要将这个tld文件在web.xml中设置一下如下,然后你就可以在jsp中它了
http://jpager.com/taglibs/page
/WEB-INF/jpager.tld
--------------------------------------------------------------------------------------------------
重载BodyTagSupport类的方法:
编写标签对应的实现类时,需要重载BodyTagSupport类几个方法:doStartTag(), setBodyContent(), doInitBody(), doAfterBody(), doEndTag();
他们执行顺序如下:
doStartTag()→doInitBody()→setBodyContent()→doAfterBody()→doEndTag()
doStartTag()方法可返回EVAL_BODY_INCLUDE或SKIP_BODY,
如果返回EVAL_BODY_INCLUDE则继续执行;
如果返回SKIP_BODY则接下来的doInitBody(),setBodyContent(), doAfterBody()三个方法不会被执行,
而直接执行doEndTag()方法。
setBodyContent()方法用于设置标签体内容,如果在此之前要作一些初始化工作,则在doInitBody()方法中完成。
标签体内容执行完后,会调用doAfterBody()方法,此方法可返回EVAL_BODY_TAG, SKIP_BODY,
EVAL_PAGE或SKIP_PAGE。
如果返回EVAL_BODY_TAG则会再次设置标签体内容,直到返回SKIP_BODY;
如果返回EVAL_PAGE则标签体执行完后会继续执行JSP页面中接下来的部分;
如果返回SKIP_PAGE,则JSP页面的后续内容将不再执行。
标签中静态常量:
EVAL_BODY_INCLUDE:告诉服务器正文的内容,并把这些内容送入输出流
SKIP_BODY:告诉服务器不要处理正文内容
EVAL_PAGE:让服务器继续执行页面
SKIP_PAGE:让服务器不要处理剩余的页面
EVAL_BODY_AGAIN:让服务器继续处理正文内容,只有doAfterBody方法可以返回
EVAL_BODY_BUFFERED:BodyTag接口的字段,在doStartTag()返回
EVAL_BODY_INCLUDE、SKIP_BODY一般由doStartTag()返回,而EVAL_PAPGE、SKIP_PAGE由doEndTag()返回。
可以看到,TLD文件只不过是一个XML文件。根标签是
表 4-1 TLD文件中的标签 标 签含 义
taglibTLD文件的根标签
tlibversion此标签库的版本
jspversion此标签库依赖的JSP版本。这里使用1.1
shortname当在JSP中使用标签时,此标签库首选或者建议的前缀。当然可以完全忽略这个建议
tag包含针对此标签库中的一个标签的元数据
表4-2
name标签名称
tagclassJava标签处理器类的名称。注意这是处理器类的全限定名称,比如net.thinksquared.tags. MessageWriteTagHandler
bodycontent此标签的主体部分的内容。使用JSP
attribute包含了此标签的一个属性的元数据
表4-3
name属性的名称。很明显它在该标签中必须是唯一的
required指示该标签是必需的(true)或者可选的(false)
http://hi.baidu.com/zhong8880/blog/item/891d1c3f7dc0ade554e72391.html
--------------------------------------------------------------------------------------------------
是表达式;
最后需要将这个tld文件在web.xml中设置一下如下,然后你就可以在jsp中它了
--------------------------------------------------------------------------------------------------
重载BodyTagSupport类的方法:
编写标签对应的实现类时,需要重载BodyTagSupport类几个方法:doStartTag(), setBodyContent(), doInitBody(), doAfterBody(), doEndTag();
他们执行顺序如下:
doStartTag()→doInitBody()→setBodyContent()→doAfterBody()→doEndTag()
doStartTag()方法可返回EVAL_BODY_INCLUDE或SKIP_BODY,
如果返回EVAL_BODY_INCLUDE则继续执行;
如果返回SKIP_BODY则接下来的doInitBody(),setBodyContent(), doAfterBody()三个方法不会被执行,
而直接执行doEndTag()方法。
setBodyContent()方法用于设置标签体内容,如果在此之前要作一些初始化工作,则在doInitBody()方法中完成。
标签体内容执行完后,会调用doAfterBody()方法,此方法可返回EVAL_BODY_TAG, SKIP_BODY,
EVAL_PAGE或SKIP_PAGE。
如果返回EVAL_BODY_TAG则会再次设置标签体内容,直到返回SKIP_BODY;
如果返回EVAL_PAGE则标签体执行完后会继续执行JSP页面中接下来的部分;
如果返回SKIP_PAGE,则JSP页面的后续内容将不再执行。
标签中静态常量:
EVAL_BODY_INCLUDE:告诉服务器正文的内容,并把这些内容送入输出流
SKIP_BODY:告诉服务器不要处理正文内容
EVAL_PAGE:让服务器继续执行页面
SKIP_PAGE:让服务器不要处理剩余的页面
EVAL_BODY_AGAIN:让服务器继续处理正文内容,只有doAfterBody方法可以返回
EVAL_BODY_BUFFERED:BodyTag接口的字段,在doStartTag()返回
EVAL_BODY_INCLUDE、SKIP_BODY一般由doStartTag()返回,而EVAL_PAPGE、SKIP_PAGE由doEndTag()返回。
java中的.class文件
tld文件是干什么用的?
java 中的class 文件怎么修改
手机java安装程序中的jad文件,具体解释一下?
struts-menu.tld
关于java中的equals()
Java 中的一个问题
JAVA中的容器是什么
java中的DCL是什么意思?
java中的DTD是什么?
关于java中的继承?
什么是Java中的对象?
什么是Java中的对象?
java中的servlet问题
舟--java中的继承
java中的一个问题!!!
java中的接口问题
java中的输入问题
java中的frame问题.
java中的oob是什么意思
java资料中的trail
java中的this关键字
java中的Enumeration是什么意思
手机中的JAVA是什么意思?