Professional Java Server Programming J2EE Edition
Chapter 12
Note that as a tag library can include any number of tags, we'll add extra <tag> elements to this tag
library descriptor for the remaining examples in this chapter.
Once everything is in the right place (see Getting it running below), hello.jsp should look like this in
your browser:
You might wish to experiment to see what happens when you fail to close the tags, or try to access tags that
are not found in your imported tag library. The resulting error messages are not specified in the JSP 1.1
specification, but most implementations should be reasonably informative and helpful.
Getting it Running
I'll discuss deployment options for tag libraries in more detail later, but in the meantime, let's look at how we can
get this example running in Tomcat or any other server that supports the JSP 1.1 and Servlet 2.2 specifications.
If you have Tomcat, you can get started very quickly by copying hello.war (see instructions below) to the
webapps directory in the Tomcat installation directory. Once you have done that, start Tomcat and type
http://localhost:8080/tagext/hello.jsp in your favorite browser. The output as above should
come up. Below is included a somewhat more detailed explanation of how this works.
The best option is to package the tag library descriptor, the Java classes that implement the tags in the library,
and the JSPs that use the tags in a single, self-contained, Web ARchive file, or WAR, as we have done here.
This file can then be loaded into a JSP 1.1-compliant JSP engine and constitutes a self-contained application,
with its own context path on the web server. (A context path is the directory under the server root at which
the server publishes the top-level directory of the contents of the WAR. For example, the contents of the root
directory of our WAR are published by the web server at <server root>/tagext, assuming that
tagext is the name we give our application when we load it into the server. The WAR's internal directory
structure will determine the published directory structure under the context root.)
Remember that a WAR is a JAR file, with special directories and a file named web.xml located in its /WEB-
INF directory. The following shows the structure of the WAR file for this simple example; the source can be
found under the folder hello in the code download:
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.