初涉“标签库(Tag Library)”,以一个简单的hello标签开演示开发自定义标签的基本步骤:
一、新建一个包test,包中新建一个标签类HelloTag.java,代码如下:
package test; 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; public class HelloTag implements Tag ... { private PageContext pageContext; private Tag parent; public int doEndTag() throws JspException ...{ JspWriter out = pageContext.getOut(); try...{ out.println("欢迎来到琉璃仙境."); }catch(IOException e)...{ System.err.println(e.toString()); } return EVAL_PAGE; } public int doStartTag() throws JspException ...{ return SKIP_BODY; } public Tag getParent() ...{ return parent; } public void release() ...{ } public void setPageContext(PageContext arg0) ...{ this.pageContext = arg0; } public void setParent(Tag arg0) ...{ this.parent = arg0; }}
二、在WEB-INF中建立tlds文件夹,在tlds文件夹中加入标签描述文件MyTaglib.tld,内容如下:
<? xml version="1.0" encoding="UTF-8" ?> < taglib xmlns ="http://java.sun.com/xml/ns/j2ee" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation ="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version ="2.0" > < description > Custom Tag Library </ description > < tlib-version > 1.0 </ tlib-version > < short-name > my </ short-name > <!-- uri>/mytag</uri --> < tag > < name > hello </ name > < tag-class > test.HelloTag </ tag-class > < body-content > empty </ body-content > </ tag > </ taglib >
三、修改WEB-INF目录下的web.xml文件,内容如下:
<? xml version="1.0" encoding="UTF-8" ?> < web-app version ="2.4" xmlns ="http://java.sun.com/xml/ns/j2ee" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation ="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" > < jsp-config > < taglib > < taglib-uri > /mytag </ taglib-uri > < taglib-location > /WEB-INF/tlds/MyTaglib.tld </ taglib-location > </ taglib > </ jsp-config > </ web-app >
四、编写hello.jsp调用已定义的hello标签,内容如下:
< %@ page contentType ="text/html;charset=gb2312" % > < %@ taglib uri ="/mytag" prefix ="my" % > < html > < head >< title >< my:hello /></ title ></ head > < body >< my:hello /></ body > </ html >
注:自定义标签有三种引用方式,第一种方式,就如上所述在web.xml文件中设置<tablib>元素。第二种方式,直接将页面的tablib指令的uri属性指定为TLD文件的位置。第三种方式,在TLD文件中设置<uri>元素。