A tag library descriptor, as we have seen, is an XML document containing information
about one or more tag extensions.
More complex tags will require an additional class extending the abstract class
javax.servlet.jsp.tagext.TagExtraInfo to provide information about scripting variables that are
made available to JSPs through the use of tags.
TagExtraInfo subclasses may also perform custom validation of tag attributes. Of course, the classes
implementing a tag may require any number of helper classes, which will need to be packaged with the tag
for it to be a complete deployable unit.
Before tags can be used in a JSP, the taglib directive must be used to import a tag library and associate the
tags it contains with a prefix.
Let's look at each of these requirements in turn.
Tag Handlers
When the JSP engine encounters a tag extension in a JSP at translation time, it parses the tag library
descriptor to find the required tag handler class, and generates code to obtain, and interact with, the tag
handler. The Tag or BodyTag interfaces, one of which must be implemented by any tag handler, define
callbacks that the servlet resulting from the JSP engine's code generation will make to the tag handler instance
at runtime.
For performance reasons, JSP engines will not necessarily instantiate a new tag handler instance every
time a tag is encountered in a JSP. Instead, they may maintain a pool of tag instances, reusing them
where possible. When a tag is encountered in a JSP, the JSP engine will try to find a Tag instance that is
not being used, initialize it, use it and release it (but not destroy it), making it available for further use.
The programmer has no control over any pooling that may occur. The repeated use model is similar to a
servlet lifecycle, but note one very important difference: tag handler implementations don't need to concern
themselves with thread safety. The JSP engine will not use an instance of a tag handler to handle a tag
unless it is free. This is good news: as with JSP authoring in general, developers need to worry about
threading issues less often than when developing servlets.
New on the Java Boutique:
New Review:
Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling
API boasts simplicity, ease-of-integration, a well-rounded feature
set, and it's free!
New Applet:
Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA
sequences into three useful formats.
Elsewhere on internet.com:
WebDeveloper Java
Lots of Java information on webdeveloper.com
WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.
ScriptSearch Java
Hundreds of free Java code files to download.
jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.