请找到以下答案,该答案使用自定义标签打印奇数值。
1) 创建Tag handler类
创建Tag Handler,我们继承了TagSupport类并重写了它的方法doStartTag()。要为jsp写数据,我们需要使用JspWriter类。
PageContext 类提供 getOut() 方法,该方法返回 JspWriter 类的实例。TagSupport 类默认提供 pageContext 的实例。
package com.test;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.TagSupport;
public class CountTagHandler extends TagSupport{
/**
*
*/
private static final long serialVersionUID = 1L;
public int doStartTag() throws JspException {
JspWriter out=pageContext.getOut();
try{
Integer attribute = (Integer)pageContext.getAttribute("numberOfVisits", PageContext.APPLICATION_SCOPE);
//Print the value only if it is even
if(attribute != null && attribute % 2 == 0) {
out.print(attribute);
}
}catch(Exception e){System.out.println(e);}
return SKIP_BODY;
}
}
2) 创建TLD 文件
Tag Library Descriptor (TLD) 文件包含tag 和Tag Hander 类的信息。它必须包含在 WEB-INF 目录中。
文件:mytags.tld
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>simple</short-name>
<uri>http://tomcat.apache.org/example-taglib</uri>
<tag>
<name>count</name>
<tag-class>com.test.CountTagHandler</tag-class>
</tag>
</taglib>
3) 创建JSP 文件
让我们在我们的jsp 文件中使用标签。在这里,我们直接指定 tld 文件的路径。但建议使用 uri 名称而不是 tld 文件的完整路径。稍后我们将了解 uri。
它使用 taglib 指令来使用 tld 文件中定义的标签。从 jsp 或项目中的其他任何地方,设置"numberOfVisits"。例如:
jsp 文件 1:
<%! static int count = 0; %>
<%
application.setAttribute("numberOfVisits", count++);
%>
<a href="second.jsp">Custom link</a>
这是第二个 jsp 文件:
<h3>Using tag</h3>
<%@ taglib uri="WEB-INF/mytags.tld" prefix="m" %>
Application count: <m:count/>
