自訂標籤庫描述符exampleTags.tld
<?xml version="1.0" encoding="UTF-8"?><taglib version="2.1" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"> <tlib-version>1.0</tlib-version> <short-name>example</short-name> <description>自訂標籤庫描述</description> <uri>/WEB-INF/tlds/exampleTags</uri> <tag> <name>iterate</name> <tag-class>tags.FreeTag</tag-class> </tag> <tag> <name>time</name> <tag-class>tags.DateTag</tag-class> </tag></taglib>
FreeTag.class
package tags;import java.io.IOException;import java.util.logging.Level;import java.util.logging.Logger;import javax.servlet.jsp.JspException;import javax.servlet.jsp.tagext.TagSupport;/** * * @author jy */public class FreeTag extends TagSupport { private int arrayCount = 0; private String[] strings = null; @Overridepublic int doStartTag() throws JspException{strings = (String[]) pageContext.getAttribute("strings"); return EVAL_BODY_INCLUDE;} @Override public int doAfterBody() throws JspException{ try { pageContext.getOut().print(" "+strings[arrayCount] + "<br>"); } catch (IOException ex) { Logger.getLogger(FreeTag.class.getName()).log(Level.SEVERE, null, ex); } arrayCount++; if(arrayCount >= strings.length){ return SKIP_BODY; } return EVAL_BODY_AGAIN; }}
DateTag.class
package tags;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.logging.Level;import java.util.logging.Logger;import javax.servlet.jsp.tagext.TagSupport;/** * * @author jy */public class DateTag extends TagSupport { @Override public int doEndTag(){ SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss"); String time = format.format(new java.util.Date()); try { pageContext.getOut().print(time); } catch (IOException ex) { Logger.getLogger(DateTag.class.getName()).log(Level.SEVERE, null, ex); } return EVAL_PAGE; }}
測試檔案test.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%><%@taglib prefix="example" uri="/WEB-INF/tlds/exampleTags.tld" %><!DOCTYPE html><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <h1>Hello World!</h1> <% String[] strings = new String[]{"a","b","c"}; pageContext.setAttribute("strings", strings); %> <example:iterate> now time:<example:time/> </example:iterate> </body></html>