<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
 <TITLE>Java(TM) Language Basics, Part1, Lesson 5: Writing Servlets</TITLE>
 <META NAME="AUTHOR" CONTENT="Monica Pawlan">
 <META NAME="KEYWORDS" CONTENT="programming, basics, Java 2">
 <META NAME="OWNER" CONTENT="Editorial/JDC">
 <META NAME="revision" CONTENT="@(#)servlet.src        1.24 03/09/00  JDC">

 <STYLE TYPE="text/css">
   <!--
   CODE {font-family: Courier, Monospace;
         font-size: 12pt}
   PRE {font-family: Courier, Monospace;
        font-size: 11pt}
     -->
 </STYLE>
</HEAD>

<!-- Start Body Insert-->
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" ALINK="#FF0000" VLINK="#660066">
<!-- End Body Insert-->

<!-- Start PageTop Insert -->

<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
 <TR ALIGN="CENTER" VALIGN="TOP">
   <TD WIDTH="157" ALIGN="LEFT">
   <IMG SRC="/images/pixel.gif" HEIGHT="40" WIDTH="40" ALT="">
   <A HREF="http://java.sun.com/index.html"><IMG SRC="/images/javalogo52x88.gif" WIDTH="52" HEIGHT="88" ALT="Java Technology Home Page" BORDER="0"></A>
   <BR>
   <IMG SRC="/images/pixel.gif" WIDTH="157" HEIGHT="1" ALT=""></TD>

   <TD>

   <FORM NAME="seek1" METHOD="GET" ACTION="http://search.java.sun.com/query.html">
   <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="100%">
     <TR>
       <TD ALIGN="RIGHT">
       <IMG SRC="/images/stripelt.gif" WIDTH="6" HEIGHT="14" ALT=""></TD>

       <TD WIDTH="100%">

       <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="100%">
         <TR>
           <TD BGCOLOR="#CC9966" WIDTH="100%">
           <IMG SRC="/images/pixel.gif" HEIGHT="2" WIDTH="1" ALT=""></TD>
         </TR>

         <TR>
           <TD>
           <IMG SRC="/images/pixel.gif" HEIGHT="2" WIDTH="1" ALT=""></TD>
         </TR>

         <TR>
           <TD BGCOLOR="#CC9966">
           <IMG SRC="/images/pixel.gif" HEIGHT="2" WIDTH="1" ALT=""></TD>
         </TR>

         <TR>
           <TD>
           <IMG SRC="/images/pixel.gif" HEIGHT="2" WIDTH="1" ALT=""></TD>
         </TR>

         <TR>
           <TD BGCOLOR="#CC9966">
           <IMG SRC="/images/pixel.gif" HEIGHT="2" WIDTH="1" ALT=""></TD>
         </TR>

         <TR>
           <TD>
           <IMG SRC="/images/pixel.gif" HEIGHT="2" WIDTH="1" ALT=""></TD>
         </TR>

         <TR>
           <TD BGCOLOR="#CC9966">
           <IMG SRC="/images/pixel.gif" HEIGHT="2" WIDTH="1" ALT=""></TD>
         </TR>
       </TABLE>
       </TD>

       <TD ALIGN="LEFT">
       <IMG SRC="/images/stripert.gif" WIDTH="6" HEIGHT="14" ALT=""></TD>

       <TD>

       <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0">
         <TR>
           <TD VALIGN="CENTER">
           <A HREF="http://java.sun.com/a-z/index.html"><IMG SRC="/images/azindex.gif" BORDER="0" WIDTH="72" HEIGHT="11" ALT="A-Z Index"></A></TD>

           <TD VALIGN="CENTER">
           <FONT FACE="Helvetica" SIZE="1">
           <INPUT TYPE="text" SIZE="15" MAXLENGTH="128" NAME=qt></FONT></TD>

           <TD VALIGN="CENTER">
           <INPUT TYPE="image" SRC="/images/search.button.gif" WIDTH="55" HEIGHT="14" ALT="Search" value="search" BORDER="0"></TD>
         </TR>
       </TABLE>
       </TD>
     </TR>
   </TABLE>
   </FORM>
   <P>

   <TABLE BORDER="0" WIDTH="100%" CELLPADDING="0" CELLSPACING="0">
     <TR VALIGN="TOP">
       <TD WIDTH="100%"><IMG SRC="/images/chiclet.row.gif" WIDTH="55"
         HEIGHT="18" ALT=""></TD>

       <TD ROWSPAN="4" ALIGN="RIGHT" WIDTH="152">
       <A HREF="/developer/index.html"><IMG SRC="/images/developer.connection.header.gif" BORDER="0" HEIGHT="42" WIDTH="319" ALT="Java Developer Connection(SM)"></A></TD>
     </TR>

     <TR VALIGN="TOP">
       <TD BGCOLOR="#FFFFFF" HEIGHT="1" WIDTH="100%">
       <IMG SRC="/images/pixel.gif" HEIGHT="1" WIDTH="1" ALT=""></TD>
     </TR>

     <TR VALIGN="TOP">
       <TD BGCOLOR="#CC9966" HEIGHT="1" WIDTH="100%">
       <IMG SRC="/images/pixel.gif" HEIGHT="1" WIDTH="1" ALT=""></TD>
     </TR>

     <TR VALIGN="TOP">
       <TD><A HREF="/developer/onlineTraining/"><IMG SRC="/images/online-training.gif" WIDTH="165" HEIGHT="22" ALT="Online Training" BORDER=0></A></TD>
     </TR>
   </TABLE>

   </TD>
 </TR>
</TABLE>


<!-- End PageTop Insert -->

<!-- Start NavBar Insert -->
<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="3" BGCOLOR="#FFFFFF" WIDTH="157" ALIGN="LEFT">

<!-- tab categories -->

<TR>
<TD><A HREF="http://java.sun.com/products/"><IMG SRC="/images/side.tab.products.gif" HEIGHT="15" WIDTH="130" BORDER="0" ALT="Downloads, APIs, Documentation"></A></TD>
</TR>

<TR>
<TD><A HREF="/developer/index.html"><IMG SRC="/images/side.tab.developer.gif" HEIGHT="15" WIDTH="130" BORDER="0" ALT="Java Developer Connection"></A></TD>
</TR>

<TR>
<TD><A HREF="/developer/infodocs/index.shtml"><IMG SRC="/images/side.tab.docs.gif" HEIGHT="15" WIDTH="130" BORDER="0" ALT="Tutorials, Tech Articles, Training"></A></TD>
</TR>

<TR>
<TD><A HREF="/developer/support/index.html"><IMG SRC="/images/side.tab.support.gif" HEIGHT="15" WIDTH="130" BORDER="0" ALT="Online Support"></A></TD>
</TR>

<TR>
<TD><A HREF="/developer/community/index.html"><IMG SRC="/images/side.tab.community.gif" HEIGHT="15" WIDTH="130" BORDER="0" ALT="Community Discussion"></A></TD>
</TR>

<TR>
<TD><A HREF="http://java.sun.com/industry/"><IMG SRC="/images/side.tab.news.gif" HEIGHT="15" WIDTH="130" BORDER="0" ALT="News &amp; Events from Everywhere"></A></TD>
</TR>

<TR>
<TD><A HREF="http://java.sun.com/solutions"><IMG SRC="/images/side.tab.solutions.gif" HEIGHT="15" WIDTH="130" BORDER="0" ALT="Products from Everywhere"></A></TD>
</TR>

<TR>
<TD><A HREF="http://java.sun.com/casestudies"><IMG SRC="/images/side.tab.case.gif" HEIGHT="15" WIDTH="130" BORDER="0" ALT="How Java Technology is Used Worldwide"></A></TD>
</TR>
<TR>
<TD>    <DIV ALIGN="RIGHT">
   <A HREF="/servlet/PrintPageServlet"><IMG SRC="/images/printbutton.gif" WIDTH="155" HEIGHT="25" ALT="Print Button" BORDER="0"></A>
   </DIV>
</TD>
</TR>

<TR><TD>&nbsp;</TD></TR>


<!-- End NavBar Insert -->


<!-- START SUB-NAV -->

<TR>
 <TD><!-- INSERT SUB-NAV INFO -->
 </TD>
</TR>


<!-- END SUB-NAV -->

</TABLE>

<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0">
<TR>
<TD>
<FONT FACE="Verdana, Arial, Helvetica, sans-serif">

<!-- Template Version 2.0 -->

<!-- ================== -->
<!-- Start Main Content -->
<!-- ================== -->


<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0">
<TR>
<TD VALIGN="TOP">
<FONT FACE="Verdana, Arial, Helvetica, sans-serif">

 <A NAME="top"></A>
 <DIV ALIGN="RIGHT">
 <FONT SIZE="-1"><A HREF="/developer/onlineTraining/index.html">Training Index</A></FONT>
 <H2>Java<FONT SIZE="-2"><SUP>TM</SUP></FONT> Programming Language Basics, Part 1<BR>
 <FONT SIZE="3">Lesson 5: Writing Servlets</FONT></H2>

 <FONT SIZE="-1">[<A HREF="front.html">&lt;&lt;BACK</A>] [<A HREF="index.html#contents">CONTENTS</A>] [<A HREF="data.html">NEXT&gt;&gt;</A>]</FONT></DIV>

<P>

A servlet is an extension to a server that enhances
the server's functionality. The most common use for
a servlet is to extend a web server by providing dynamic
web content. Web servers display documents written in
HyperText Markup Language (HTML) and respond to user
requests using the HyperText Transfer Protocol (HTTP).
HTTP is the protocol for moving hypertext files across
the internet. HTML documents contain text that has been
marked up for interpretation by an HTML browser such as
Netscape.

<P>
Servlets are easy to write. All you need is the
Java&#174; 2 Platform software, and JavaServer<FONT SIZE="-2"><SUP>TM</SUP></FONT>
Web Development Kit (JWSDK).
You can download a free copy of the
<A HREF="http://java.sun.com/products/servlet/index.html">JWSDK</A>.

<P>
This lesson shows you how to create a very simple form that invokes
a basic servlet to process end user data entered on the form.

<UL>
<LI><FONT FACE="Verdana, Arial, Helvetica, sans-serif">
<A HREF="#about">About the Example</A></FONT>
<LI><FONT FACE="Verdana, Arial, Helvetica, sans-serif">
<A HREF="#html">HTML Form</A></FONT>
<LI><FONT FACE="Verdana, Arial, Helvetica, sans-serif">
<A HREF="#serv">Servlet Backend</A></FONT>
<LI><FONT FACE="Verdana, Arial, Helvetica, sans-serif">
<A HREF="#more">More Information</A></FONT>
</UL>

<HR>

<A NAME="about"></A>
<H3>About the Example</H3>

A browser accepts end user input through an HTML form. The
simple form used in this lesson has one text input field
for the end user to enter text and a Submit button.
When the end user clicks the Submit button, the simple servlet is
invoked to process the end user input.

<P>
In this example, the simple servlet returns an HTML page that displays
the text entered by the end user.

<P>
<IMG SRC="./Art/overview.gif" WIDTH="366" HEIGHT="127" ALT="">


<A NAME="html"></A>
<H3>HTML Form</H3>

The HTML form is embedded in this
<A HREF="./Code/simpleHTML.html">HTML file</A>.
The diagram shows how the HTML page looks when it is
opened in a browser.

<P>
<IMG SRC="./Art/form.gif" WIDTH="291" HEIGHT="203" ALT="" ALIGN="LEFT">
The HTML file and form are similar to the simple
application and applet examples in
<A HREF="front.html">Lesson 4</A> so you can
compare the code and learn how servlets, applets, and
applications handle end user inputs.

<P>
When the user clicks the <CODE>Click Me</CODE> button, the
servlet gets the entered text, and returns an HTML page with
the text.

<P>
The HTML page returned to the browser by the
<A HREF="./Code/ExampServlet.java">ExampServlet.java</A>
servlet is shown below.  The servlet code to retrieve the
user's input and generate the HTML page follows with a discussion.

<P>
<TABLE BORDER="2" CELLPADDING="0"><TR><TD>
<IMG SRC="./Art/serv.gif" WIDTH="221" HEIGHT="86" ALT="">
</TD></TR></TABLE>

<BLOCKQUOTE>
<HR>
<STRONG>Note:</STRONG>
To run the example, you have to put the servlet and
<CODE>HTML</CODE> files in the correct directories for
the Web server you are using. For example, with Java WebServer 1.1.1,
you place the servlet in the <CODE>~/JavaWebServer1.1.1/servlets</CODE>
and the <CODE>HTML</CODE> file in the
<CODE>~/JavaWebServer1.1.1/public_html</CODE> directory.

<HR>
</BLOCKQUOTE>

<A NAME="serv"></A>
<H3>Servlet Backend</H3>

<A HREF="./Code/ExampServlet.java">ExampServlet.java</A> builds an HTML page
to return to the end user. This means the servlet code does not use any
Project Swing or
Abstract Window Toolkit (AWT) components or have event handling code.
For this simple servlet, you only need to import these packages:

<UL>
<LI><FONT FACE="Verdana, Arial, Helvetica, sans-serif">
<CODE>java.io</CODE> for system input and output. The
<CODE>HttpServlet</CODE> class uses the <CODE>IOException</CODE>
class in this package to signal that an input or output
exception of some kind has occurred. </FONT>
<P>
<LI><FONT FACE="Verdana, Arial, Helvetica, sans-serif">
<CODE>javax.servlet</CODE>, which contains generic
(protocol-independent) servlet classes. The
<CODE>HttpServlet</CODE> class uses the <CODE>ServletException</CODE>
class in this package to indicate a servlet problem.</FONT>
<P>
<LI><FONT FACE="Verdana, Arial, Helvetica, sans-serif">
<CODE>javax.servlet.http</CODE>, which contains HTTP
servlet classes. The <CODE>HttpServlet</CODE> class is in this
package. </FONT>
</UL>

</FONT>

<PRE>
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class ExampServlet extends HttpServlet {
 public void doPost(HttpServletRequest request,
        HttpServletResponse response)
       throws ServletException, IOException
 {
   response.setContentType(&quot;text/html&quot;);
   PrintWriter out = response.getWriter();

   out.println(&quot;&#60;title&#62;Example&#60;/title&#62;&quot; +
      &quot;&#60;body bgcolor=FFFFFF&#62;&quot;);

   out.println(&quot;&#60;h2&#62;Button Clicked&#60;/h2&#62;&quot;);

   String DATA = request.getParameter(&quot;DATA&quot;);

   if(DATA != null){
     out.println(DATA);
   } else {
     out.println(&quot;No text entered.&quot;);
   }

   out.println(&quot;&#60;P&#62;Return to
       &#60;A HREF=&quot;../simpleHTML.html&quot;&#62;Form&#60;/A&#62;&quot;);
   out.close();
 }
}
</PRE>

<FONT FACE="Verdana, Arial, Helvetica, sans-serif">

<H3>Class and Method Declarations</H3>

All servlet classes extend the <CODE>HttpServlet</CODE> abstract class.
<CODE>HttpServlet</CODE> simplifies writing HTTP servlets by providing a
framework for handling the HTTP protocol. Because <CODE>HttpServlet</CODE>
is <CODE>abstract</CODE>, your servlet class must extend it and override at
least one of its methods. An <CODE>abstract</CODE> class is a class
that contains unimplemented methods and cannot be instantiated itself.

</FONT>

<PRE>
public class ExampServlet extends HttpServlet {
 public void doPost(HttpServletRequest request,
        HttpServletResponse response)
        throws ServletException, IOException
 {
</PRE>

<FONT FACE="Verdana, Arial, Helvetica, sans-serif">

The <CODE>ExampServlet</CODE> class is declared <CODE>public</CODE>
so the web server that runs the servlet, which is not
local to the servlet, can access it.

<P>
The <CODE>ExampServlet</CODE> class defines a <CODE>doPost</CODE>
method with the same name, return type, and parameter list as the
<CODE>doPost</CODE> method in the <CODE>HttpServlet</CODE> class.
By doing this, the <CODE>ExampServlet</CODE> class overrides and
implements the <CODE>doPost</CODE> method in the
<CODE>HttpServlet</CODE> class.

<P>
The <CODE>doPost</CODE> method performs the <CODE>HTTP POST</CODE>
operation, which is the type of operation specified in
the HTML form used for this example. The other possibility is the
<CODE>HTTP GET</CODE> operation, in which case you would implement
the <CODE>doGet</CODE> method instead.

<P>
In short, <CODE>POST</CODE> requests are for sending any amount of
data directly over the connection without changing the URL, and
<CODE>GET</CODE> requests are for getting limited amounts of
information appended to the URL.  <CODE>POST</CODE> requests
cannot be bookmarked or emailed and do not change the Uniform
Resource Locators (URL) of the response.  <CODE>GET</CODE>
requests can be bookmarked and emailed and add information to the URL
of the response.

<P>
The parameter list for the <CODE>doPost</CODE> method takes a
<CODE>request</CODE> and a <CODE>response</CODE> object. The browser
sends a request to the servlet and the servlet sends a response back
to the browser.

<P>
The <CODE>doPost</CODE> method implementation accesses information
in the <CODE>request</CODE> object to find out who made the
request, what form the request data is in, and which HTTP headers
were sent, and uses the <CODE>response</CODE> object to create
an HTML page in response to the browser's request.

The <CODE>doPost</CODE> method throws an <CODE>IOException</CODE>
if there is an input or output problem when it handles the request,
and a <CODE>ServletException</CODE> if the request could not be
handled. These exceptions are handled in the <CODE>HttpServlet</CODE>
class.

<H3>Method Implementation</H3>

The first part of the <CODE>doPost</CODE> method uses
the <CODE>response</CODE> object to create an HTML page.
It first sets the response content type to be
<CODE>text/html</CODE>,
then gets a <CODE>PrintWriter</CODE> object for formatted text output.

</FONT>

<PRE>
response.setContentType(&quot;text/html&quot;);
   PrintWriter out = response.getWriter();

   out.println(&quot;&#60;title&#62;Example&#60;/title&#62;&quot; +
      &quot;&#60;body bgcolor=#FFFFFF&#62;&quot;);

   out.println(&quot;&#60;h2&#62;Button Clicked&#60;/h2&#62;&quot;);
</PRE>

<FONT FACE="Verdana, Arial, Helvetica, sans-serif">

The next line uses the <CODE>request</CODE> object to
get the data from the text field on the form and store it
in the <CODE>DATA</CODE> variable. The <CODE>getparameter</CODE>
method gets the named parameter, returns <CODE>null</CODE> if the
parameter was not set, and an empty string if the parameter
was sent without a value.

</FONT>

<PRE>
   String DATA = request.getParameter(&quot;DATA&quot;);
</PRE>

<FONT FACE="Verdana, Arial, Helvetica, sans-serif">

The next part of the <CODE>doPost</CODE> method gets the data out of the
<CODE>DATA</CODE>
parameter and passes it to the <CODE>response</CODE> object to add to the
HTML response page.

</FONT>

<PRE>
   if(DATA != null){
     out.println(DATA);
   } else {
     out.println(&quot;No text entered.&quot;);
   }
</PRE>

<FONT FACE="Verdana, Arial, Helvetica, sans-serif">

The last part of the <CODE>doPost</CODE> method creates a link to take the
end user from the HTML response page back to the original form, and
closes the response.

</FONT>

<PRE>
   out.println(&quot;&#60;P&#62;Return to
       &#60;A HREF=&quot;../simpleHTML.html&quot;&#62;Form&#60;/A&#62;&quot;);
   out.close();
 }
</PRE>

<FONT FACE="Verdana, Arial, Helvetica, sans-serif">

<BLOCKQUOTE>
<HR>
<STRONG>Note:</STRONG>
To learn how to use the other methods available in the
<CODE>HttpServlet</CODE>, <CODE>HttpServletRequest</CODE>,
and <CODE>HttpServletResponse</CODE> classes, see
<A HREF="http://java.sun.com/docs/books/tutorial/index.html">The
Java Tutorial</A> trail on
<A HREF="http://java.sun.com/docs/books/tutorial/servlets/index.html">Servlets</A>.
<HR>
</BLOCKQUOTE>

<A NAME="more"></A>
<H3>More Information</H3>

You can find more information on servlets in the
<A HREF="http://java.sun.com/docs/books/tutorial/servlets/index.html">Servlets</A>
trail in
<A HREF="http://java.sun.com/docs/books/tutorial">The Java Tutorial</A>.

<P ALIGN="RIGHT">
<FONT SIZE="-1">[<A HREF="#top">TOP</A>]</FONT>

</FONT>
</TD>
</TR>
</TABLE>




<!-- ================ -->
<!-- End Main Content -->
<!-- ================ -->

</FONT>
</TD>
</TR>
</TABLE>

<!-- Copyright Insert -->

<BR CLEAR="ALL">

<FORM ACTION="/cgi-bin/search.cgi" METHOD="POST">
<TABLE WIDTH="100%" CELLPADDING="0" BORDER="0" CELLSPACING="5">
 <TR>
   <TD VALIGN="BOTTOM">


</TD>
</TR>
<A HREF="/servlet/PrintPageServlet"><IMG SRC="/images/printbutton.gif" WIDTH="155" HEIGHT="25" ALT="Print Button" BORDER="0"></A>

   <CENTER>
   <FONT SIZE="-1" COLOR="#999999" FACE="Verdana, Arial, Helvetica, sans-serif">
   [ This page was updated: <!-- new date --> 31-Mar-2000 ]
</font></CENTER>
   </TD>
 </TR>

 <TR>
   <TD BGCOLOR="#CCCCCC">
   <IMG SRC="/images/pixel.gif" HEIGHT="1" WIDTH="1" ALT=""></TD>
 </TR>

 <TR>
   <TD>
   <CENTER>
   <FONT SIZE="-2" FACE="Verdana, Arial, Helvetica, sans-serif">
   <A HREF="http://java.sun.com/products/">Products &amp; APIs</A> |
   <A HREF="/developer/index.html">Developer Connection</A> |
   <A HREF="/developer/infodocs/index.shtml">Docs &amp; Training</A> |
   <A HREF="/developer/support/index.html">Online Support</A><BR>
   <A HREF="/developer/community/index.html">Community Discussion</A> |
   <A HREF="http://java.sun.com/industry/">Industry News</A> |
   <A HREF="http://java.sun.com/solutions">Solutions Marketplace</A> |
   <A HREF="http://java.sun.com/casestudies">Case Studies</A>
   </FONT>
   </CENTER>
   </TD>
 </TR>

 <TR>
   <TD BGCOLOR="#CCCCCC">
   <IMG SRC="/images/pixel.gif" HEIGHT="1" WIDTH="1" ALT=""></TD>
 </TR>

 <TR>
   <TD ALIGN="CENTER">
   <FONT SIZE="-2" FACE="Verdana, Arial, Helvetica, sans-serif">
   <A HREF="http://java.sun.com/docs/glossary.html">Glossary</A> -
   <A HREF="http://java.sun.com/applets/">Applets</A> -
   <A HREF="http://java.sun.com/docs/books/tutorial/">Tutorial</A> -
   <A HREF="http://java.sun.com/jobs/">Employment</A> -
   <A HREF="http://java.sun.com/nav/business/">Business &amp; Licensing</A> -
   <A HREF="http://java.sun.com/javastore/">Java Store</A> -
   <A HREF="http://java.sun.com/casestudies/">Java in the Real World</A>
   </FONT>
   </TD>
 </TR>

 <TR>
   <TD>
   <CENTER>
   <FONT SIZE="-2" FACE="Verdana, Arial, Helvetica, sans-serif">
   <a href="/siteinfo/faq.html">FAQ</a> |
   <a href="/feedback/index.html">Feedback</a> |
   <a href="http://www.dynamicdiagrams.net/mapa/cgi-bin/help.tcl?db=javasoft&dest=http://java.sun.com/">Map</a> |
   <A HREF="http://java.sun.com/a-z/index.html">A-Z Index</A>
   </FONT>
   </CENTER>

   </TD>
 </TR>

 <TR>
   <TD>

   <TABLE WIDTH="100%" CELLPADDING="0" BORDER="0" CELLSPACING="0">
     <TR>
       <TD WIDTH="50%">
       <FONT SIZE="-2" FACE="Verdana, Arial, Helvetica, sans-serif">
       For more information on Java technology<BR>
       and other software from Sun Microsystems, call:<BR>
       </FONT>
       <FONT SIZE="-1" FACE="Verdana, Arial, Helvetica, sans-serif">
       (800) 786-7638<BR></FONT>
       <FONT SIZE="-2" FACE="Verdana, Arial, Helvetica, sans-serif">
       Outside the U.S. and Canada, dial your country's
       <A HREF="http://www.att.com/business_traveler/attdirecttollfree/">AT&amp;T&nbsp;Direct&nbsp;Access&nbsp;Number</A> first.<BR>
       </FONT>
       </TD>

       <TD ALIGN="RIGHT" WIDTH="50%">
       <A HREF="http://www.sun.com"><IMG SRC="/images/lgsun.gif" width="64" height="30" border="0" ALT="Sun Microsystems, Inc."></A><BR>
       <FONT SIZE="-2" FACE="Verdana, Arial, Helvetica, sans-serif">
       Copyright &copy; 1995-2000
       <A HREF="http://www.sun.com">Sun Microsystems, Inc.</A><BR>
       All Rights Reserved.
       <A HREF="http://www.sun.com/share/text/termsofuse.html">Terms of Use</A>.
       <A HREF="http://www.sun.com/privacy/">Privacy&nbsp;Policy</A>.
       </FONT>
       </TD>
     </TR>
   </TABLE>

   </TD>
 </TR>
</TABLE>
</FORM>

<!-- End Copyright Insert -->


</BODY>
</HTML>