jsp 定制标签(Custom Tag)_JSP教程-查字典教程网
jsp 定制标签(Custom Tag)
jsp 定制标签(Custom Tag)
发布时间:2016-12-29 来源:查字典编辑
摘要:怎样自己定制标签(CustomTag)(整理的学习笔记)步骤1、创建一个Taghandlerclass(标记处理器类)packagejava...

怎样自己定制标签(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

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE taglib

PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"

"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

<>

<taglib>

<tlib-version>1.0</tlib-version>

<jsp-version>1.2</jsp-version>

<short-name>tagSample</short-name>

<uri>/tagSample</uri>

<description>A blank tag library template.</description>

<tag>

<name>welcome</name>

<tag-class>tagapp.HelloTag</tag-class>

<body-content>empty</body-content>

<display-name>my first tag</display-name>

<small-icon> </small-icon>

<large-icon> </large-icon>

<description> </description>

<attribute>

<name>name</name>

<required>true</required>

<rtexprvalue>true</rtexprvalue>

<type>java.lang.String</type>

</attribute>

</tag>

</taglib>

步骤3.创建一个JSP文件

<%@taglib uri="[tld_url]" prefix=""%>

<%@taglib uri="/WEB-INF/abc.tld" prefix="mike"%>

...

<mike:welcome name=""/>

uri的值可以是:

A、/WEB-INF/mytag.tld -----> uri="/WEB-INF/mytag.tld"

B、tld文件中 <uri>/tagSample</uri> ------> uri="/tagSample"

C、利用web.xml文件映射tld文件与taglib-uri的值 -----> uri="/abc"

<taglib>

<taglib-uri>/abc</taglib-uri>

<taglib-location>/WEB-INF/mytag.tld</taglib-location>

</taglib>

带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)<sql:setDataSource>

属性有:

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

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

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

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

2)<sql:query>

属性有:

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

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

3)<sql:update>

属性有:

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

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

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

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新JSP教程学习
    热门JSP教程学习
    编程开发子分类