一、基本概念
1、标签(Tag)
标签是一种XML元素,通过标签可以使JSP网页变得简洁并且易于维护,还可以方便地实现同一个JSP文件支持多种语言版本。由于标签是XML元素,所以它的名称和属性都是大小写敏感的。
2、标签库(Tag library)
由一系列功能相似、逻辑上互相联系的标签构成的集合称为标签库。
3、标签库描述文件(Tag Library Descriptor)
标签库描述文件是一个XML文件,这个文件提供了标签库中类和JSP中对标签引用的映射关系。它是一个配置文件,和web.xml是类似的。
4、标签处理类(Tag Handle Class)
标签处理类是一个Java类,这个类继承了TagSupport或者扩展了SimpleTag接
口,通过这个类可以实现自定义JSP标签的具体功能。
二 标签开发
1.简单的标签开发
1.1 写处理类
1
1
package
com.dongjj.tag;
2 2
3 3 import javax.servlet.jsp.JspException;
4 4 import javax.servlet.jsp.PageContext;
5 5 import javax.servlet.jsp.tagext.Tag;
6 6
7 7 public class TimeTag implements Tag {
8 8 protected PageContext pageContext;
9 9 private Tag parent;
1010
1111 // ----标签开始时调用此方法-------
1212 public int doStartTag() throws JspException {
1313 try {
1414 pageContext.getOut().println("Now:" + new java.util.Date());
1515 } catch (Exception e) {
1616 throw new JspException(e.getMessage());
1717 }
1818 return SKIP_BODY;
1919 }
2020
2121 // ----标签结束时调用此方法-------
2222 public int doEndTag() throws JspException {
2323 return EVAL_PAGE;
2424 }
2525
2626 // 实现
2727 public void release() {
2828 }
2929
3030 // 实现
3131 public void setPageContext(PageContext pageContext) {
3232 this.pageContext = pageContext;
3333 }
3434
3535 // 实现
3636 public Tag getParent() {
3737 return parent;
3838 }
3939
4040 // 实现
4141 public void setParent(Tag parent) {
4242 this.parent = parent;
4343 }
4444
4545}
2 2
3 3 import javax.servlet.jsp.JspException;
4 4 import javax.servlet.jsp.PageContext;
5 5 import javax.servlet.jsp.tagext.Tag;
6 6
7 7 public class TimeTag implements Tag {
8 8 protected PageContext pageContext;
9 9 private Tag parent;
1010
1111 // ----标签开始时调用此方法-------
1212 public int doStartTag() throws JspException {
1313 try {
1414 pageContext.getOut().println("Now:" + new java.util.Date());
1515 } catch (Exception e) {
1616 throw new JspException(e.getMessage());
1717 }
1818 return SKIP_BODY;
1919 }
2020
2121 // ----标签结束时调用此方法-------
2222 public int doEndTag() throws JspException {
2323 return EVAL_PAGE;
2424 }
2525
2626 // 实现
2727 public void release() {
2828 }
2929
3030 // 实现
3131 public void setPageContext(PageContext pageContext) {
3232 this.pageContext = pageContext;
3333 }
3434
3535 // 实现
3636 public Tag getParent() {
3737 return parent;
3838 }
3939
4040 // 实现
4141 public void setParent(Tag parent) {
4242 this.parent = parent;
4343 }
4444
4545}
1.2 编写tld文件 放在WEB-INF目录下
Code
1.3 在在Web应用的web.xml文件中声明标签库引用 web.xml version="2.4"的不用引入也可,能在路径下搜索
1
<
taglib
>
2 < taglib-uri > http://www.cnblogs.com/xd502djj/tags </ taglib-uri >
3 < taglib-location > /WEB-INF/mytags.tld </ taglib-location >
4 </ taglib >
5 < taglib-uri > 对应tld文件中的 < uri > , < taglib-location > 指出tld文件的位置
2 < taglib-uri > http://www.cnblogs.com/xd502djj/tags </ taglib-uri >
3 < taglib-location > /WEB-INF/mytags.tld </ taglib-location >
4 </ taglib >
5 < taglib-uri > 对应tld文件中的 < uri > , < taglib-location > 指出tld文件的位置
1.4 写jsp
1
<%
@taglib uri="http://www.cnblogs.com/xd502djj/tags" prefix="mt"
%>
2
3 < h1 align ="center" >< mt:time /></ h1 >
2
3 < h1 align ="center" >< mt:time /></ h1 >
调用 在页面上显示如下
Now:Tue Mar 24 16:33:50 CST 2009
本文转自茄子_2008博客园博客,原文链接:http://www.cnblogs.com/xd502djj/archive/2009/03/24/1420488.html,如需转载请自行联系原作者。