自定义标签库描述符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;
@Override
public 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;
}
}
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;
}
}
<%@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>