定制标记是用户定义的JSP语言元素。将包含定制标记的JSP页面转换为servlet时,该标记将转换为对称为标记处理程序的对象的操作。然后,当执行JSP页面的servlet时,Web容器将调用这些操作。
JSP标记扩展允许您创建可以直接插入JavaServer Page中的新标记。JSP 2.0规范引入了用于编写这些定制标记的简单标记处理程序。
要编写自定义标签,只需扩展SimpleTagSupport类并覆盖doTag()方法,即可在其中放置代码以生成标签内容。
考虑您要定义一个名为<ex:Hello>的自定义标签,并且您想以以下方式使用它而不使用主体-
<ex:Hello />
要创建自定义JSP标记,必须首先创建一个充当标记处理程序的Java类。现在让我们如下创建HelloTag类:
package com.nhooo; import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.*; import java.io.*; public class HelloTag extends SimpleTagSupport { public void doTag() throws JspException, IOException { JspWriter out = getJspContext().getOut(); out.println("您好自定义标签!"); } }
上面的代码具有简单的编码,其中doTag()方法使用getJspContext()方法获取当前的JspContext对象,并使用它发送“ Hello Custom Tag!”。到当前的JspWriter对象
让我们编译上面的类并将其复制到环境变量CLASSPATH中可用的目录中。最后,创建以下标记库文件:<Tomcat安装目录> webapps \ ROOT \ WEB-INF \ custom.tld。
<taglib> <tlib-version>1.0</tlib-version> <jsp-version>2.0</jsp-version> <short-name>Example TLD</short-name> <tag> <name>Hello</name> <tag-class>com.nhooo.HelloTag</tag-class> <body-content>empty</body-content> </tag> </taglib>
现在,让我们在JSP程序中使用上面定义的定制标记Hello,如下所示:
<%@ taglib prefix = "ex" uri = "WEB-INF/custom.tld"%> <html> <head> <title>A sample custom tag</title> </head> <body> <ex:Hello/> </body> </html>
调用上述JSP,这将产生以下结果-
您好自定义标签!