开发JSP自定义标记
您已经学习了如何用JavaBean处理JSP页面的业务逻辑。除此以外,您还可以用自定义标记处理JSP应用程序中反复出现的业务逻辑要求。
tag是程序中使用的执行重复性任务的可重用单元。例如,
1. JSP自定义标记
自定义标记为Web程序提供了一种在JSP应用程序中重用和封装反复出现的复杂代码的机制,从而实现了Java代码的易用性和可重用性。自定义标记可用于执行各种功能,例如:
- 访问JSP页面的request、response、in和out等所有隐式变量。
- 修改通过调用JSP页面生成的响应。
- 将JavaBean组件初始化和实例化。
您可以在JSP中开发以下各种类型的自定义标记:
- 空标记:指没有任何属性或主体的自定义标记。以下代码段显示了空自定义标记:
td:welcome - 带属性的标记:值可以定义属性来对标记行为进行自定义的自定义标记。可以通过字符变量或带有request对象的运行时表达式来设置属性值。以下代码段显示了带属性的自定义标记color:
<td:welcome color =''bule"></td:welcome> - 带主体的标记:指带有嵌套自定义标记、脚本元素、动作、HTML文本及JSP指令的自定义标记。以下代码段显示了一个带有JSP脚本元素作为主体的自定义标记。
td:welcome
<%=today_date%>
</td:welcome> - 嵌套标记:指一个自定义标记包含一个或多个自定义标记的自定义标记集。包含其他标记的标记称为父标记。被父标记包含的标记称为子标记。以下代码段显示了嵌套标记:
<td1:ifTag condition “<%=eval>”>
td2:valueTrue
The expression evaluates to true
td2:valueTrue
td1:ifTag
2. 创建自定义标记
要创建自定义标记,需要执行以下步骤:
- 开发标记处理程序。
- 开发TLD文件。
- 将标记库纳入JSP页面。
- 部署应用程序。
开发标记处理程序
所有自定义标记都有对应的标记处理程序,即实现自定义标记的功能的Java类。
javax.servlet.jsp.tagext包提供了可用于开发标记处理程序的类和接口。
javax.servlet.jsp.tagext包的基类,如TagSupport和BodyTagSupport,实现Tag接口来提供接口方法的实现。您可以在标记处理程序类中的扩展这些辅助类并重写实现标记功能所要求的方法。
要开发空标记处理程序,您可以在标记处理程序中扩展javax.servlet.jsp.tagext包的TagSupport类。
以下代码段显示了扩展TagSupport类以实现自定义标记的标记处理程序WelcomeTag。
import javax.servlet.http