JSP自定义标签-简介

1 什么是JSP自定义标签

JSP自定义标签是用户定义的标签。它们消除了开发者在JSP页面直接编写脚本的麻烦,并将业务逻辑与JSP页面分开。

通过使用定制标记,可以多次使用相同的业务逻辑。

2 JSP自定义标签的优点

  1. 消除了对JSP脚本的需求。JSP自定义标签消除了对JSP脚本的需求,因为JSP脚本在JSP中被认为是不好的编程方法。
  2. 将业务逻辑与JSP页面分开。JSP自定义标签将业务逻辑与JSP页面分开,以便于维护。
  3. 可重用性高。JSP自定义标签使得开发者可以一次又一次地重复使用相同的业务逻辑。

3 JSP自定义标签的语法

有两种使用JSP自定义标签的方法。分别是:

<prefix:tagname attr1=value1....attrn=valuen />

或者

<prefix:tagname attr1=value1....attrn=valuen >  
body code  
</prefix:tagname>

4 JSP自定义标签的API

javax.servlet.jsp.tagext,包含JSP自定义标签需要的API类和接口。JspTag是“自定义标签”层次结构中的根接口。

4.1 JspTag接口

JspTag是JSP自定义标签中所有接口和类的根接口。这是一个标记接口。

4.2 Tag接口

Tag接口是JspTag接口的子接口。它提供了在标签的开头和结尾执行操作的方法。

1)Tag接口的属性

属性 说明
public static int EVAL_BODY_INCLUDE 把Body读入存在的输出流中,doStartTag()函数可用
public static int EVAL_PAGE 继续处理页面,doEndTag()函数可用
public static int SKIP_BODY 忽略对Body的处理,doStartTag()和doAfterBody()函数可用
public static int SKIP_PAGE 忽略对余下页面的处理,doEndTag()函数可用

2)Tag接口的方法

方法 说明
public void setPageContext(PageContext pc) 设置传入的PageContext对象。
public void setParent(Tag t) 设置当前标签的父标签对象
public Tag getParent() 获取当前标签的父标签对象
public int doStartTag()throws JspException 遇到标签开始时会执行此方法,其返回值有EVAL_BODY_INCLUDE和SKIP_BODY。EVAL_BODY_INCLUDE表示将显示标签间的文字,SKIP_BODY则不显示标签间的文字;
public int doEndTag()throws JspException 在遇到标签结束时执行此方法,其返回值是EVAL_PAGE和SKIP_PAGE。EVAL_PAGE表示处理完标签后继续执行以下的JSP网页,SKIP_PAGE则不处理接下来的JSP网页;
public void release() 释放获得的所有资源

4.3 IterationTag接口

IterationTag接口是Tag接口的子接口。它提供了doAfterBody()方法。

1)IterationTag接口的属性

属性 说明
public static int EVAL_BODY_AGAIN 重新执行Body的内容

2)IterationTag接口的方法

方法 说明
public int doAfterBody()throws JspException 在显示完标签间的文字后被执行,其返回值有EVAL_BODY_AGAIN和SKIP_BODY,EVAL_BODY_AGAIN会再显示一次标签间的文字,SKIP_BODY则继续执行标签处理的下一步

4.4 TagSupport类

TagSupport类实现IterationTag接口。它充当自定义标签处理类的基类。它还提供了一些其他方法。

热门文章

优秀文章