微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jsp 定制标签(Custom Tag)

怎样自己定制标签(Custom Tag) (整理的学习笔记)

怎样自己定制标签(Custom Tag)

(整理的学习笔记)

步骤1、创建一个Tag handler class(标记处理器类)

package javax.servlet.jsp.tagext

开发空Body的标签处理器类----->1)implements Tag 2)extends TagSupport

空Body的标签处理器类需要覆盖方法

doStartTag()

返回值:Tag.SKIP_BODY

doEndTag()

返回值:

1)Tag.EVAL_PAGE:让标签下面的内容继续执行

2)Tag.SKIP_PAGE:让标签下面的内容不执行

开发带Body的标签处理器类----->1)implements BodyTag 2)extends BodyTagSupport

带Body的标签处理器类需要覆盖方法

doStartTag()

返回值:

BodyTag.SKIP_BODY:执行后直接调用doEndTag()方法

BodyTag.EVAL_BODY_INCLUDE:执行后直接调用doAfterBody()方法

BodyTag.EVAL_BODY_BUFFERED:

doEndTag()

返回值:

BodyTag.EVAL_PAGE:标签下面的内容继续执行

BodyTag.SKIP_PAGE:标签下面的内容不执行

doAfterBody()

返回值:

BodyTag.SKIP_BODY:执行后调用doEngTag()方法

BodyTag.EVAL_BODY_AGAIN:执行后调用doAfterBody()方法

步骤2、创建一个tld文件(tag library descriptor)

一个XML格式的文件,用于对标记进行描述

通常放在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

步骤3.创建一个JSP文件

...

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

带Body的标签处理器类的方法的注释:

doStartTag()

return value: SKIP_BODY 空BODY标记

EVAL_BODY_INCLUDE 带BODY标记,执行流程进入doAfterBody

EVAL_BODY_BUFFERED 带BODY标记,执行流程进入setBodyContent

doEndTag()

return value: SKIP_PAGE 忽略标记后剩余的JSP内容

EVAL_PAGE 继续执行标记后剩余的JSP内容

doAfterBody()

return value: SKIP_BODY 结束doAfterBody()方法,流程进入doEndTag()

EVAL_BODY_AGAIN 继续执行doAfterBody()方法

SimpleTagSupport

较好的练习题:

一、

1、模仿jstl标签库开发下列标签

1)

属性有:

driver:必须的,可以用表达式

url;必须的,可以用表达式

user:必须的,可以用表达式

password:必须的,可以用表达式

2)

属性有:

dataSource:必须的,可以用表达式

sql:必须的,可以用表达式

3)

属性有:

dataSource:必须的,可以用表达式

sql:必须的,可以用表达式

2、开发类似于的标签,可以遍历一个集合对象(可选,如不能完成,可直接利用jstl的标签来完成)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐