## 创建和使用一个Tag Library的基本步骤

1、创建标签的处理类(Tag Handler Class)

2、创建标签库描述文件(Tag Library Descrptor File)

3、在web.xml文件中配置元素

4、在JSP文件中引人标签库

## 标签库程序组成

标签的具体实现文件（*.java）

标签的描述文件（*.tld）

如果需要可以在web.xml中进行配置

在jsp中通过标签进行自定义标签的调用

*.tld文件是标签的描述文件，此文件对标签库的运行起决定性作用。*.tld文件也是一个XML文件，如果是使用XML，则需要DTD、SCHEMA支持。

## 几种典型的标签

不带属性和主体的简单标签：<mytaglibs:SomeTag/>

有属性没有主体的标签： <mytaglibs:SomeTag user="hellking"/>

带有主体和属性的标签： <mytaglibs:SomeTag user="hellking"/>主体部分可以是jsp内容或标签</mytaglibs:SomeTag>

## 传统的标签的生命周期

1.setPageContext：当容器创建一个新的标签后，通过setPageContext来设置标签页面的上下文；

2.setParent：使用setParent方法设置一个标签的上一级标签，如果没有上一级，设为NULL；

3.setAttribute：设置标签的属性，这个属性在标签描述文件中定义，如果没有定义属性，则不用调用此方法；

4.doStartTag()：调用doStartTag()方法，当返回EVAL_BODY_INCLUDE时，就计算body，返回SKIP_BODY反之；

5.doEndTag()：调用doEndTag()方法，当返回EVAL_PAGE时，容器将在标签结束时继续计算JSP的其他部分，SKIP_PAGE反之；

6.release()：调用release()方法释放标签程序占用的任何资源。

实例：web.xml 配置

1 <?xml version="1.0" encoding="UTF-8"?>

2 <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"

3 "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

4 <taglib>

5 <tlib-version>1.0</tlib-version>

6 <jsp-version>2.0</jsp-version>

7 <short-name>hello</short-name>

8 <tag>

9 <name>shan</name>

10 <tag-class>org.zzn.demo01.Hello</tag-class>

11 <body-content>empty</body-content>

12 </tag>

13 </taglib>

建立 Java 文件代码：

1 package org.zzn.demo01;

2 import java.io.IOException;

3 import javax.servlet.jsp.JspException;

4 import javax.servlet.jsp.JspWriter;

5 import javax.servlet.jsp.tagext.TagSupport;

6

7 public class Hello extends TagSupport {

8 @Override

9 public int doStartTag() throws JspException {

10 //向jsp页面中打印“IBM”字符串

11 String str = "IBM";

12 JspWriter out = pageContext.getOut();

13 try {

14 out.println(str);

15 } catch (IOException e) {

16 // TODO Auto-generated catch block

17 e.printStackTrace();

18 }

19 return TagSupport.SKIP_BODY;

20 }

21 }

建立 jsp 文件代码：

1 <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>

2 <%@ taglib uri="/WEB-INF/hello.tld" prefix="zzn"%>

3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

4 <html>

5 <head>

6 <title>My JSP 'Hello.jsp' starting page</title>

7 </head>

8 <body>

9 <h2><zzn:shan/></h2>

10 </body>

11 </html>