怎样自己定制标签(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:必须的,可以用表达式