jsp中自定义Taglib详解(2)

A.Tag.SKIP_BODY:表示跳过了开始和结束标签之间的代码
B.Tag.EVAL_BODY_INCLUDE:表示标签之间的内容被正常执行
C.Tag.EVAL_BODY_BUFFERED :对包含的内容进行解析

3.doEndTag:但JSP容器遇到自定义标签的结束标志,就会调用doEndTag()方法。doEndTag()方法也返回一个整数值,用来决定程序后续流程。

A.Tag.SKIP_PAGE:表示立刻停止执行网页,网页上未处理的静态内容和JSP程序均被忽略任何已有的输出内容立刻返回到客户的浏览器上。
B.Tag.EVAL_PAGE:表示按照正常的流程继续执行JSP网页

4.doAfterTag:遇到标签体执行

A.Tag.EVAL_BODY_AGAIN;// 如果集合中还有对像,则循环执行标签体,对标签体循环处理,(存在于javax.servlet.jsp.tagext.IterationTag接口中)
B.Tag.SKIP_BODY

六、创建含有字段的标签:

1.创建标签处理器类FieldTag

package com.able.tag; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.TagSupport; public class FieldTag extends TagSupport { private static final long serialVersionUID = 1540529069962423355L; private String field; private Integer count; @Override public int doEndTag() throws JspException { try { JspWriter out = pageContext.getOut(); out.print(field); out.print(count); } catch (IOException e) { e.printStackTrace(); } return super.doEndTag(); } public String getField() { return field; } public void setField(String field) { this.field = field; } public Integer getCount() { return count; } public void setCount(Integer count) { this.count = count; } }

2.在tag.tld文件中天剑tag标签

<tag> <!-- 定义标签名 --> <name>field</name> <!-- 定义标签处理类 --> <tag-class>com.able.tag.FieldTag</tag-class> <!-- 定义标签体为空 --> <body-content>empty</body-content> <attribute> <name>field</name> <required>true</required> <!-- 是否必須赋值 --> <rtexprvalue>true</rtexprvalue><!-- 表示是否接受jsp语法或者el语言或其他动态语言,默认false --> </attribute> <attribute> <name>count</name> <rtexprvalue>true</rtexprvalue> </attribute> </tag>

3.jsp中定义标签:

<tm:field field="11" count="22"/>

七、如何创建标签处理类

1、引入必需的资源

import javax.servlet.jsp.*; import javax.servlet.http.*; import java.util.*; import java.io.*;
2、继承TagSupport类并覆盖doStartTag()/doEndTag()方法

3、从ServletContext对象中获取java.util.Properties对象

4、从Properties对象中获取key对应的属性值

5、对获取的属性进行相应的处理并输出结果

创建标签库描述文件(Tag Library Descriptor)

1、标签库描述文件,简称TLD,采用XML文件格式,定义了用户的标签库。TLD文件中的元素可以分成3类:

A.标签库元素
B.标签元素
C.标签属性元素

2、标签库元素用来设定标签库的相关信息,它的常用属性有:

A.shortname:指定Tag Library默认的前缀名(prefix);

B.uri:设定Tag Library的惟一访问表示符。

3、标签元素用来定义一个标签,它的常见属性有:

A.name:设定Tag的名字;

B.tagclass:设定Tag的处理类;

C.bodycontent:设定标签的主体(body)内容。

1)empty:表示标签中没有body;
2)JSP:表示标签的body中可以加入JSP程序代码;
3)tagdependent:表示标签中的内容由标签自己去处理。

4、标签属性元素用来定义标签的属性,它的常见属性有:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzjpwf.html