JSP中的自定义标签

2025年1月11日 | 阅读 3 分钟

自定义标签是用户定义的标签。它们消除了 scriptlet 标签的可能性,并将业务逻辑与 JSP 页面分离。

通过使用自定义标签,可以使用相同的业务逻辑多次。

自定义标签的优点

自定义标签的主要优点如下

  1. 消除了对 scriptlet 标签的需求 自定义标签消除了对 scriptlet 标签的需求,这在 JSP 中被认为是不好的编程方法。
  2. 将业务逻辑与 JSP 分离 自定义标签将业务逻辑与 JSP 页面分离,以便于维护。
  3. 可重用性 自定义标签使得可以重复使用相同的业务逻辑。

使用自定义标签的语法

有两种使用自定义标签的方法。它们如下所示


JSP 自定义标签 API

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

Custom tags api

JspTag 接口

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


Tag 接口

Tag 接口是 JspTag 接口的子接口。它提供在标签开始和结束时执行操作的方法。

Tag 接口的字段

在 Tag 接口中定义了四个字段。它们是

字段名描述
public static int EVAL_BODY_INCLUDE它评估主体内容。
public static int EVAL_PAGE它在自定义标签之后评估 JSP 页面内容。
public static int SKIP_BODY它跳过标签的主体内容。
public static int SKIP_PAGE它跳过自定义标签之后的 JSP 页面内容。

Tag 接口的方法

Tag 接口的方法如下所示

方法名称描述
public void setPageContext(PageContext pc)它设置给定的 PageContext 对象。
public void setParent(Tag t)它设置标签处理程序的父级。
public Tag getParent()它返回父标签处理程序对象。
public int doStartTag()throws JspException它由 JSP 页面实现对象调用。 JSP 程序员应重写此方法,并定义要在标签开始时执行的业务逻辑。
public int doEndTag()throws JspException它由 JSP 页面实现对象调用。 JSP 程序员应重写此方法,并定义要在标签结束时执行的业务逻辑。
public void release()它由 JSP 页面实现对象调用以释放状态。

IterationTag 接口

IterationTag 接口是 Tag 接口的子接口。它提供了一个额外的方法来重新评估主体。

IterationTag 接口的字段

在 IterationTag 接口中仅定义了一个字段。

  • public static int EVAL_BODY_AGAIN 它重新评估主体内容。

Tag 接口的方法

在 IterationTag 接口中仅定义了一个方法。

  • public int doAfterBody()throws JspException 它在主体评估之后由 JSP 页面实现对象调用。如果此方法返回 EVAL_BODY_INCLUDE,则将重新评估主体内容,如果它返回 SKIP_BODY,则不再评估主体内容。

TagSupport 类

TagSupport 类实现了 IterationTag 接口。它充当新标签处理程序的基类。它还提供了一些额外的方法。