关于带标签体的标签开发

开发body tag步骤:
1、开发tag类
(1)开发body tag类较为便捷的方法是集成BodyTagSupport类,该类集成了TagSupport类与BodyTag接口,位于javax.servlet.jsp.tagext包下。
  具体细节:
①编写构造器(constructor):直接通过super();调用父类构造器;
②重写setAttribute()、setBodyContent()、doStartTag()、doInitBody()、doAfterBody()、doEndTag()方法。带标签体标签的类的方法后台运行顺序也是如此,上面的setBodyContent与doInitBody方法并非必须重写。注意:Attribute与接下来标签描述文件(tld)文件中的<attribute>指向同一个属性;doStartTag,doAfterBody,doEndTag方法需要返回一个int形参数,这些int型参数是预设的,并有各自的涵义:
EVAL_PAGE:继续计算JSP其它部分,一般用在doEndTag中指示是否继续计算JSP其它部分内容;
SKIP_PAGE:停止计算JSP其它内容;
EVAL_BODY_INCLUDE:计算标签体,一般用在doStartTag方法中
EVAL_BODY_BUFFERED:计算标签体,用在doAfterBody方法中
EVAL_BODY_AGAIN:循环计算标签体,用在doAfterBody方法中
SKIP_BODY:不计算标签体;
③编译类文件,并将编译后的class文件连同其包结构一同放在WEB-INF下的classes文件夹下
2、编写自定义标签文件
模板:
<?xml version="1.0" encoding="utf8"?>
<taglib>
<jsp-version>1.1</jsp-version>
<tlib-version>1.2</tlib-version>            <!--这个tlib挺绕口的,记住除了tld文件中的这里用tlib,其它定义军用taglib全程-->
<uri>/myTag</uri>
<tag>
<name>bodyTag</name>
<tag-class>包结构.类文件名</tag-class>
<body-content>jsp</body-content>
<attribute>
<name>标签类中的属性,即setAttribute中的Attribute</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
注意这里的uri是一个重要的属性!uri是统一资源标识符,这里的uri并不代表路径,而仅是资源定位的标识,在web.xml中对应的标签声明也将定义uri,并于此处的uri相同,而jsp文件应用自定义标签也需要提前声明uri,jsp根据其中的uri找到web.xml文件中对应的tld文件,通过tld文件的uri进行验证,若相同,则取tld文件中的类路径并运行标签类。
3、web.xml中声明标签
<web-app>
<taglib>
<tablib-uri>/myTag</taglib-uri>
<taglib-location>tld文件的相对路径</taglib-location>
</taglib>
4、jsp文件中使用标签
<%@ taglib uri="/myTag" prefix="test"%>
...


<test:bodyTag 属性名="...">标签体</test:bodyTag>
...
需要注意的也就这么多了,再细的细节需要自己去误了!

你可能感兴趣的:(关于带标签体的标签开发)