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的标签来完成)

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...