jsp 定制标签(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
<?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">
<!-- template test -->
<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的标签来完成)



相关阅读:
关于用ADO STREAM做的无组件上传程序简单介绍
Vista中IE提示证书错误解决方法
asp.net 结合YUI 3.0小示例
邮件发送类,支持HTML格式,支持优先级设置
ASP编程入门进阶(十一):Chat聊天程序
数据库分页存储过程代码
MYSQL中如何存取二进制文件
在B/S开发中经常用到的JavaScript技术
在SQL Server计算列和平均值
利用XMLHTTP实现的二级连动Select
提升JSP应用程序的七大绝招
VBS教程:方法-Keys 方法
asp在IE浏览器中下载服务端上的各类文件的实现方法
让任务管理器中的CPU跳舞的js代码
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 学校高中物理教学工作汇报小结 奇怪的男孩作文800字 桐乡三中2004学年工作总结 休息时,看见以前 在地理教学中运用农远资源的体会 教师教学实习工作总结 金陵怀古·辇路江枫暗 时光啊!你太匆匆。 青年有多大天就有多大 2006年国土资源局年终工作总结及2007年工作计划 2010年暑期三下乡社会实践活动调查报告 好看的爱情短小说大全:人生怎能永如初见 情向阳光,心自暖 我爱美丽的桂林作文350字 大阅兵 我想走进,你的美丽! “智慧生活、美丽家园”科普征文:未来雨神 2016中国共青团入团申请书 巴西龟作文150字 你是我欲罢不能的温柔 安全生产专项整治工作总结 2015年山东德州中考作文题目 血透室护士工作小结 那些曾经温暖过我的爱 苦果作文500字 2015电厂安全自我检查报告 河之韵 儿科护 士的工作 农村信用社2014年度工作报告_工作报告 傅小七 乡干部个人工作计划 写在年三十 小学四年级作文400字:QQ宠物 我想作文550字 小学五年级抒情作文350字 以茶省心 学校食品安全整治方案 补偿贸易协议(四) 骨科护士长述职报告 失态的季节,失态的我。 落叶冷漠了流水,把伤痕当酒窝作文400字 吴秀波的故事 男神是怎样炼成的 单位招商引资工作总结 善良的心读后感 那座城,那个人...... 爷爷走了550字 傻子哥哥的爱 田间生活 移情,别恋 贝壳项链作文1200字

Copyright © 2016 phpStudy |