Struts自定义标签

一、基本概念

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 1package com.dongjj.tag;
 2 2
 3 3import javax.servlet.jsp.JspException;
 4 4import javax.servlet.jsp.PageContext;
 5 5import javax.servlet.jsp.tagext.Tag;
 6 6
 7 7public 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文件的位置

1.4 写jsp

1<%@taglib uri="http://www.cnblogs.com/xd502djj/tags" prefix="mt"%>
2
3<h1 align="center"><mt:time/></h1>

调用 在页面上显示如下

Now:Tue Mar 24 16:33:50 CST 2009

原文地址:https://www.cnblogs.com/xd502djj/p/1420488.html