<?xml version="1.0"?>
<!DOCTYPE document [
  <!ENTITY project SYSTEM "project.xml">
]>
<document url="introduction.html">

  &project;

  <properties>
    <author email="craigmcc@apache.org">Craig R. McClanahan</author>
    <title>Introduction</title>
  </properties>

<body>


<section name="Overview">

<p>Congratulations!  You've decided to (or been told to) learn how to
build web applications using servlets and JSP pages, and picked the
Tomcat server to use for your learning and development.  But now what
do you do?</p>

<p>This manual is a primer covering the basic steps of using Tomcat to
set up a development environment, organize your source code, and then
build and test your application.  It does not discuss architectures or
recommended coding practices for web application development,
or provide in depth instructions on operating the development
tools that are discussed.  References to sources of additional information
are included in the following subsections.</p>

<p>The discussion in this manual is aimed at developers who will be using
a text editor along with command line tools to develop and debug their
applications.  As such, the recommendations are fairly generic -- but you
should easily be able to apply them in either a Windows-based or Unix-based
development environment.  If you are utilizing an Interactive Development
Environment (IDE) tool, you will need to adapt the advice given here to
the details of your particular environment.</p>

</section>


<section name="Links">

<p>The following links provide access to selected sources of online
information, documentation, and software that is useful in developing
web applications with Tomcat.</p>
<ul>
<li><a href="http://java.sun.com/products/jsp/download.html">http://java.sun.com/products/jsp/download.html</a> -
    <i>JavaServer Pages (JSP) Specfication, Version 1.2</i>.  Describes
    the programming environment provided by standard implementations
    of the JavaServer Pages (JSP) technology.  In conjunction with
    the Servlet API Specification (see below), this document describes
    what a portable API page is allowed to contain.  Specific
    information on scripting (Chapter 6), tag extensions (Chapter 7),
    and packaging JSP pages (Appendix A) is useful.  The Javadoc
    API Documentation is included in the specification, and with the
    Tomcat download.<br/><br/></li>
<li><a href="http://java.sun.com/products/servlet/download.html">http://java.sun.com/products/servlet/download.html</a> -
    <i>Servlet API Specification, Version 2.3</i>.  Describes the
    programming environment that must be provided by all servlet
    containers conforming to this specification.  In particular, you
    will need this document to understand the web application
    directory structure and deployment file (Chapter 9), methods of
    mapping request URIs to servlets (Chapter 11), container managed
    security (Chapter 12), and the syntax of the <code>web.xml</code>
    Web Application Deployment Descriptor (Chapter 13).  The Javadoc
    API Documentation is included in the specification, and with the
    Tomcat download.<br/><br/></li>
<li><a href="http://java.sun.com/j2ee/blueprints/">http://java.sun.com/j2ee/blueprints/</a> -
    <i>Sun BluePrints (tm) Design Guidelines for J2EE</i>.  Comprehensive
    advice and examples on application design for the Java2 Enterprise
    Edition (J2EE) platform, which includes servlets and JSP pages.  The
    chapters on servlet and JSP design are useful even when your application
    does not require other J2EE platform components.
    <br/><br/></li>
<li><b>TODO</b> -- Add more entries here!</li>
</ul>

</section>


</body>
</document>
