使用JSP自定义标签
时间:2006-12-31 来源:liulibo
<%@page contentType="text/html; charset=utf-8" %>
<%@taglib uri="" prefix="自定义前缀" %>
1>uri绝对路径
uri="/WEB-INF/tlds/mumu.tld"
2>uri相对路径
1:tld文件中指定
uri="/mumu"
2:web.xml文件中指定
uri="/link"
<taglib>
<taglib-uri>/link</taglib-uri>相对路径
<taglib-location>/WEB-INF/tlds/mumu.tld</taglib-location>绝对路径
</taglib>
************************************************************************************
2.tld文件摸版(.tld)
<?xml version="1.0" encoding="ISO-8859-1" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>文件描述</description>
<tlib-version>1.0</tlib-version>
<short-name>文件名</short-name>
<uri>相对路径</uri>
<tag>
<name>自定义标签</name>
<tag-class>类路径</tag-class>
<body-content>jsp/empty/scriptless</body-content>
<attribute>
<name>属性名</name>
<required>属性是否必须</required>
<rtexprvalue>是否允许使用表达式</rtexprvalue>
<type>属性类型</type>
</attribute>
</tag>
</taglib>
************************************************************************************
3.使用自定义标签摸版(.jsp)
<%@ taglib uri="标记库路径" prefix="自定义前缀" %>
<%@ page contentType="text/html; charset=utf-8" %>
************************************************************************************
1.Tag接口
setPageContext(PageContext)
setParent(Tag)
getParent()
doStartTag ()
EVAL_BODY_BUFFERED 用到BodyContent(1)
EVAL_BODY_INCLUDE 包含BODY内容(1)
SKIP_BODY 不包含BODY (2)
doEndTag()
EVAL_PAGE 执行PAGE以下代码
SKIP_PAGE 不执行以下代码
release()
*************************************
2.IterationTag 接口
doAfterBody()
EVAL_BODY_AGAIN 重新执行BODY内容(3)
SKIP_BODY 不再执行BODY内容(4)
*************************************
3.BodyTag 接口
doInitBody()
SetBodyContext(BodyContent)
*************************************
4.SimpleTag 接口
setJspContext(JspContext)
setParent(JspTag)
getParent()
setJspBody(JspFragment)
doTag()
************************************************************************************
4.BodyTag生命周期
SetContext(PageContext)
|
SetParent(Tag)
|
doStartTag()
|
/ \
(2) (1)
/ \
doEndTag() SetBodyContext(BodyContent)
^ |
| doInitBody()
(4) |
| |
| |
doAfterBody()<=(3)=>Body标签内代码