A custom tag: empty
<!-- this must be added to the web application's web.xml --> <taglib> <taglib-uri>/java2s</taglib-uri> <taglib-location>/WEB-INF/java2s.tld</taglib-location> </taglib> // create File:java2s.tld in the /WEB-INF/ <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> <!-- a tab library descriptor --> <taglib xmlns="http://java.sun.com/JSP/TagLibraryDescriptor"> <tlib-version>1.0</tlib-version> <jsp-version>1.2</jsp-version> <short-name>Java2s Simple Tags</short-name> <!-- a tag that outputs information when different methods are called --> <tag> <name>tagLifecycle</name> <tag-class>com.java2s.TagLifecycle</tag-class> <body-content>empty</body-content> <attribute> <name>attr1</name> </attribute> <attribute> <name>attr2</name> </attribute> </tag> </taglib> //compile the following code into WEB-INF\classes\com\java2s package com.java2s; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.tagext.Tag; import javax.servlet.jsp.tagext.TagSupport; /* This tag handler outputs information about when different methods are called. */ public class Lifecycle extends TagSupport { // Constructor public Lifecycle() { System.out.println("constructor called"); } // Methods inherited from TagSupport public void setPageContext(PageContext p) { super.setPageContext(p); System.out.println("setPageContext() called"); } public void setParent(Tag t) { super.setParent(t); System.out.println("setParent() called"); } public void release() { System.out.println("release() called"); } // Code to implement the "attr1" attribute private String attr1; public String getAttr1() { return attr1; } public void setAttr1(String s) { System.out.println("setAttr1() called with value " + s); attr1 = s; } // Code to implement the "attr2" attribute private String attr2; public String getAttr2() { return attr2; } public void setAttr2(String s) { System.out.println("setAttr2() called with value " + s); attr2 = s; } public int doStartTag() throws JspException { System.out.println("doStartTag() called"); return SKIP_BODY; } public int doEndTag() throws JspException { System.out.println("doEndTag() called"); return super.doEndTag(); } } // start comcat and load the following jsp page in browser <%@ taglib uri="/java2s" prefix="java2s" %> <html> <head> <title>A custom tag: empty</title> </head> <body> <java2s:tagLifecycle attr1="Rob" attr2="G" /> <java2s:tagLifecycle attr1="Joe" attr2="S" /> Check your Tomcat console window for the output </body> </html>