<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<!--
  - The Apache Software License, Version 1.1
  -
  - Copyright (c) 1999 The Apache Software Foundation.  All rights 
  - reserved.
  -
  - Redistribution and use in source and binary forms, with or without
  - modification, are permitted provided that the following conditions
  - are met:
  -
  - 1. Redistributions of source code must retain the above copyright
  -    notice, this list of conditions and the following disclaimer. 
  -
  - 2. Redistributions in binary form must reproduce the above copyright
  -    notice, this list of conditions and the following disclaimer in
  -    the documentation and/or other materials provided with the
  -    distribution.
  -
  - 3. The end-user documentation included with the redistribution, if
  -    any, must include the following acknowlegement:  
  -       "This product includes software developed by the 
  -        Apache Software Foundation (http://www.apache.org/)."
  -    Alternately, this acknowlegement may appear in the software itself,
  -    if and wherever such third-party acknowlegements normally appear.
  -
  - 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
  -    Foundation" must not be used to endorse or promote products derived
  -    from this software without prior written permission. For written 
  -    permission, please contact apache@apache.org.
  -
  - 5. Products derived from this software may not be called "Apache"
  -    nor may "Apache" appear in their names without prior written
  -    permission of the Apache Group.
  -
  - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  - WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  - DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  - ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  - USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  - OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  - SUCH DAMAGE.
  - ====================================================================
  -
  - This software consists of voluntary contributions made by many
  - individuals on behalf of the Apache Software Foundation.  For more
  - information on the Apache Software Foundation, please see
  - <http://www.apache.org/>.
  -
  -->
</head>
<body bgcolor="white">

Classes and interfaces for the definition of JavaServer Pages Tag Libraries.

<p>
The JavaServer Pages(tm) (JSP) 2.0 specification provides a portable
mechanism for the description of tag libraries.
<p>
A JSP tag library contains
<ul>
<li>A Tag Library Descriptor</li>
<li>A number of Tag Files or Tag handler classes defining 
    request-time behavior</li>
<li>Additional classes and resources used at runtime</li>
<li>Possibly some additional classes to provide extra translation 
    information</li>
</ul>
<p>
The JSP 2.0 specification and the reference implementation both contain
simple and moderately complex examples of actions defined using this
mechanism.  These are available at JSP's web site, at
<a href="http://java.sun.com/products/jsp">http://java.sun.com/products/jsp</a>.
Some readers may want to consult those to get a quick feel for how
the mechanisms work together.

</body>
</html>
