怎样自己定制标签(Custom Tag) (整理的学习笔记)
怎样自己定制标签(Custom Tag)
(整理的学习笔记)
步骤1、创建一个Tag handler class(标记处理器类)
package javax.servlet.jsp.tagext
开发空Body的标签处理器类----->1)implements Tag 2)extends TagSupport
doStartTag()
返回值:Tag.SKIP_BODY
doEndTag()
返回值:
开发带Body的标签处理器类----->1)implements BodyTag 2)extends BodyTagSupport
doStartTag()
返回值:
BodyTag.SKIP_BODY:执行后直接调用doEndTag()方法
BodyTag.EVAL_BODY_INCLUDE:执行后直接调用doAfterBody()方法
BodyTag.EVAL_BODY_BUFFERED:
doEndTag()
返回值:
doAfterBody()
返回值:
BodyTag.SKIP_BODY:执行后调用doEngTag()方法
BodyTag.EVAL_BODY_AGAIN:执行后调用doAfterBody()方法
步骤2、创建一个tld文件(tag library descriptor)
通常放在WEB-INF目录下 (/WEB-INF/*.tld)
abc.tld
br>PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
1.0
1.2
tagSample
/tagSample
A blank tag library template.
welcome
tagapp.HelloTag
empty
my first tag
name
true
true
java.lang.String
...
uri的值可以是:
A、/WEB-INF/mytag.tld -----> uri="/WEB-INF/mytag.tld"
B、tld文件中 /tagSample ------> uri="/tagSample"
C、利用web.xml文件映射tld文件与taglib-uri的值 -----> uri="/abc"
/abc
/WEB-INF/mytag.tld
doStartTag()
return value: SKIP_BODY 空BODY标记
EVAL_BODY_INCLUDE 带BODY标记,执行流程进入doAfterBody
EVAL_BODY_BUFFERED 带BODY标记,执行流程进入setBodyContent
doEndTag()
return value: SKIP_PAGE 忽略标记后剩余的JSP内容
doAfterBody()
return value: SKIP_BODY 结束doAfterBody()方法,流程进入doEndTag()
EVAL_BODY_AGAIN 继续执行doAfterBody()方法
SimpleTagSupport
较好的练习题:
一、
1)
属性有:
driver:必须的,可以用表达式
url;必须的,可以用表达式
user:必须的,可以用表达式
password:必须的,可以用表达式
2)
属性有:
dataSource:必须的,可以用表达式
sql:必须的,可以用表达式
3)
属性有:
dataSource:必须的,可以用表达式
sql:必须的,可以用表达式
2、开发类似于的标签,可以遍历一个集合对象(可选,如不能完成,可直接利用jstl的标签来完成)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。