1143 lines
27 KiB
Plaintext
1143 lines
27 KiB
Plaintext
Java CGI HOWTO
|
|
by David H. Silber javacgi-document@orbits.com
|
|
v0.5, 1 December 1998
|
|
|
|
This HOWTO document explains how to set up your server to allow CGI
|
|
programs written in Java and how to use Java to write CGI programs.
|
|
Although HOWTO documents are targetted towards use with the Linux
|
|
operating system, this particular one is not dependant on the particu-
|
|
lar version of unix used.
|
|
______________________________________________________________________
|
|
|
|
Table of Contents
|
|
|
|
|
|
|
|
1. Introduction
|
|
|
|
1.1 Prior Knowledge
|
|
1.2 This Document
|
|
1.3 The Package
|
|
1.4 The Mailing List
|
|
|
|
2. Setting Up Your Server to Run Java CGI Programs (With Explanations)
|
|
|
|
2.1 System Requirements
|
|
2.2 Java CGI Add-On Software
|
|
2.3 Unpacking the Source
|
|
2.4 Decide On Your Local Path Policies
|
|
2.5 Testing your installation.
|
|
|
|
3. Setting Up Your Server to Run Java CGI Programs (The Short Form)
|
|
|
|
4. Executing a Java CGI Program
|
|
|
|
4.1 Obstacles to Running Java Programs Under the CGI Model
|
|
4.1.1 You can't run Java programs like ordinary executables.
|
|
4.1.2 Java does not have general access to the environment.
|
|
4.2 Overcoming Problems in Running Java CGI Programs
|
|
4.2.1 The java.cgi script.
|
|
4.2.2 Invoking java.cgi from an HTML form.
|
|
|
|
5. Using the Java CGI Classes.
|
|
|
|
5.1 CGI
|
|
5.1.1 Class Syntax
|
|
5.1.2 Class Description
|
|
5.1.3 Member Summary
|
|
5.1.4 See Also
|
|
5.1.5 CGI()
|
|
5.1.6 getNames()
|
|
5.1.7 getValue()
|
|
5.2 CGI_Test
|
|
5.2.1 Member Summary
|
|
5.2.2 See Also
|
|
5.2.3 main()
|
|
5.3 Email
|
|
5.3.1 Class Syntax
|
|
5.3.2 Class Description
|
|
5.3.3 Member Summary
|
|
5.3.4 See Also
|
|
5.3.5 Email()
|
|
5.3.6 send()
|
|
5.3.7 sendTo()
|
|
5.3.8 subject()
|
|
5.4 Email_Test
|
|
5.4.1 Member Summary
|
|
5.4.2 See Also
|
|
5.4.3 main()
|
|
5.5 HTML
|
|
5.5.1 Class Syntax
|
|
5.5.2 Class Description
|
|
5.5.3 Member Summary
|
|
5.5.4 See Also
|
|
5.5.5 HTML()
|
|
5.5.6 author()
|
|
5.5.7 definitionList()
|
|
5.5.8 definitionListTerm()
|
|
5.5.9 endList()
|
|
5.5.10 listItem()
|
|
5.5.11 send()
|
|
5.5.12 title()
|
|
5.6 HTML_Test
|
|
5.6.1 Member Summary
|
|
5.6.2 See Also
|
|
5.6.3 main()
|
|
5.7 Text
|
|
5.7.1 Class Syntax
|
|
5.7.2 Class Description
|
|
5.7.3 Member Summary
|
|
5.7.4 See Also
|
|
5.7.5 add()
|
|
5.7.6 addLineBreak()
|
|
5.7.7 addParagraph()
|
|
|
|
6. Future Plans
|
|
|
|
7. Changes
|
|
|
|
7.1 Changes from 0.4 to 0.5
|
|
7.2 Changes from 0.3 to 0.4
|
|
7.3 Changes from 0.2 to 0.3
|
|
7.4 Changes from 0.1 to 0.2
|
|
|
|
|
|
______________________________________________________________________
|
|
|
|
1. Introduction
|
|
|
|
Because of the way that Java is designed the programmer does not have
|
|
easy access to the system's environment variables. Because of the way
|
|
that the Java Development Kit (JDK) is set up, it is necessary to use
|
|
multiple tokens to invoke a program, which does not mesh very well
|
|
with the standard HTML forms/CGI manner of operations. There are ways
|
|
around these limitations, and I have implemented one of them. Read
|
|
further for details.
|
|
|
|
Since I wrote the previous paragraph in 1996, there have been many
|
|
changes in the Java technology. It is likely that a better solution
|
|
to running server-side Java programs is now available -- perhaps you
|
|
should take a look at servlets.
|
|
|
|
|
|
|
|
1.1. Prior Knowledge
|
|
|
|
I am assuming that you have a general knowledge of HTML and CGI
|
|
concepts and at least a minimal knowledge of your HTTP server. You
|
|
should also know how to program in Java, or a lot of this will not
|
|
make sense.
|
|
|
|
|
|
|
|
1.2. This Document
|
|
|
|
The latest version of this document can be read at
|
|
http://www.orbits.com/software/Java_CGI.html.
|
|
|
|
|
|
|
|
1.3. The Package
|
|
|
|
The latest version of the package described here can be accessed via
|
|
anonymous FTP at ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz.
|
|
The package distribution includes SGML source for this document.
|
|
The package is distributed under the terms of the GNU Library General
|
|
Public License. This document can be distributed under the terms of
|
|
the Linux HOWTO copyright notice.
|
|
|
|
If you use this software, please make some reference to
|
|
http://www.orbits.com/software/Java_CGI.html, so that others will be
|
|
able to find the Java CGI classes.
|
|
|
|
I have run out of time to maintain and support this package, so this
|
|
will probably be its final release. If anyone out there is
|
|
sufficiently enamoured of this software that they wish to take over
|
|
the maintenace of it, please contact me at javacgi-
|
|
document@orbits.com.
|
|
|
|
|
|
|
|
1.4. The Mailing List
|
|
|
|
I have created a majordomo list to allow people to help each-other
|
|
work through their mutual problems in installing and using this
|
|
software. Send a message to javacgi-request@orbits.com, containing
|
|
the word subscribe.
|
|
|
|
|
|
|
|
2. Setting Up Your Server to Run Java CGI Programs (With Explana-
|
|
tions)
|
|
|
|
This section will lead you through installing my Java CGI package with
|
|
copious explanations so that you know what the effects of your actions
|
|
will be. If you just want to install the programs and don't care
|
|
about the whys & wherefores, skip to ``Setting Up Your Server to Run
|
|
Java CGI Programs (The Short Form)''.
|
|
|
|
|
|
|
|
2.1. System Requirements
|
|
|
|
This software should work on any unix-like web server that has the
|
|
Java Development Kit installed. I am using it on a Debian Linux
|
|
system running apache as the HTTP daemon. If you find that it does
|
|
not run on your server, please contact the mailing list. See ``The
|
|
Mailing List'' for details.
|
|
|
|
Unfortunatly, the Java run-time interpreter seems to be something of a
|
|
memory hog -- you may want to throw another few megabytes of RAM onto
|
|
your server if you will be using Java CGI programs a lot.
|
|
|
|
|
|
|
|
2.2. Java CGI Add-On Software
|
|
|
|
The software that I wrote to aid in this is called Java CGI. You can
|
|
get it from ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz. (The
|
|
version number may have changed.)
|
|
|
|
|
|
|
|
2.3. Unpacking the Source
|
|
|
|
Find a convenient directory to unpack this package into. (If you
|
|
don't already have a standard place to put packages, I suggest that
|
|
you use /usr/local/src.) Unpack the distribution with this command:
|
|
|
|
gzip -dc java_cgi-0.5.tgz | tar -xvf -
|
|
|
|
|
|
This will create a directory called java_cgi-0.5. In there you will
|
|
find the files referenced in the rest of this document. (If the ver-
|
|
sion number has changed, use the instructions from within that distri-
|
|
bution from this point on.)
|
|
|
|
|
|
|
|
2.4. Decide On Your Local Path Policies
|
|
|
|
You need to decide where you want your Java CGI programs to live.
|
|
Generally, you will want to put them in a directory in parallel with
|
|
your cgi-bin directory. My apache server came configured to use
|
|
/var/www/cgi-bin as the cgi-bin directory, so I use /var/www/javacgi
|
|
as the directory to put Java CGI programs in. You probably do not
|
|
want to put your Java CGI programs into one of the existing CLASSPATH
|
|
directories. Edit the Makefile to reflect your system configuration.
|
|
Make sure that you are logged in as the root user and run make
|
|
install. This will compile the Java programs, modify the java.cgi
|
|
script to fit in with your system and install the programs in the
|
|
appropriate places. If you want the HTML version of this
|
|
documentation and an HTML test document in addition, run make all
|
|
instead.
|
|
|
|
|
|
|
|
2.5. Testing your installation.
|
|
|
|
Installed from the distribution are HTML documents called
|
|
javacgitest.html, javaemailtest.html and javahtmltest.html. If you
|
|
installed all in the previous section, it will be in the directory you
|
|
specified for WEBDIR in the Makefile. If you didn't, you can run make
|
|
test to build them from javacgitest.html-dist, javaemailtest.html-dist
|
|
and javahtmltest.html-dist.
|
|
|
|
When you are sure that your installation is working correctly, you may
|
|
wish to remove CGI_Test.class, Email_Test.class and HTML_Test.class
|
|
from your JAVACGI directory and javacgitest.html, javaemailtest.html
|
|
and javahtmltest.html from your WEBDIR directory as they show the user
|
|
information that is normally only available to the server.
|
|
|
|
|
|
|
|
3. Setting Up Your Server to Run Java CGI Programs (The Short Form)
|
|
|
|
|
|
o Get the Java CGI package from
|
|
ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz. (The version
|
|
number may have changed.)
|
|
|
|
o Unpack the distribution with this command:
|
|
|
|
gzip -dc java_cgi-0.5.tgz | tar -xvf -
|
|
|
|
|
|
(If the version number has changed, use the instructions from within
|
|
that distribution from this point on.)
|
|
|
|
o Edit the Makefile you will find in the newly created directory
|
|
java_cgi-0.5 as appropriate to your system.
|
|
|
|
o As root, run make install. This will compile the Java programs,
|
|
apply your system-specific information and install the various
|
|
files. If you want the HTML version of this documentation and an
|
|
HTML test document, run make all instead.
|
|
|
|
o You should be ready to go.
|
|
|
|
|
|
|
|
4. Executing a Java CGI Program
|
|
|
|
|
|
|
|
4.1. Obstacles to Running Java Programs Under the CGI Model
|
|
|
|
There are two main problems in running a Java program from a web
|
|
server:
|
|
|
|
|
|
|
|
4.1.1. You can't run Java programs like ordinary executables.
|
|
|
|
You need to run the Java run-time interpreter and provide the initial
|
|
class (program to run) on the command-line. With an HTML form, there
|
|
is no provision for sending a command-line to the web server.
|
|
|
|
|
|
|
|
4.1.2. Java does not have general access to the environment.
|
|
|
|
Every environment variable that will be needed by the Java program
|
|
must be explicitly passed in. There is no method similar to the C
|
|
getenv() function.
|
|
|
|
|
|
|
|
4.2. Overcoming Problems in Running Java CGI Programs
|
|
|
|
To deal with these obstacles, I wrote a shell CGI program that
|
|
provides the information needed by the Java interpreter.
|
|
|
|
|
|
|
|
4.2.1. The java.cgi script.
|
|
|
|
This shell script manages the interaction between the HTTP daemon and
|
|
the Java CGI program that you wish to use. It extracts the name of
|
|
the program that you want to run from the server-provided data. It
|
|
collects all of the environment data into a temporary file. Then, it
|
|
runs the Java run-time interpreter with the name of the file of
|
|
environment information and the program name added to the command-
|
|
line.
|
|
|
|
The java.cgi script was configured and installed in ``Decide On Your
|
|
Local Path Policies''.
|
|
|
|
|
|
|
|
4.2.2. Invoking java.cgi from an HTML form.
|
|
|
|
My forms that use Java CGI programs specify a form action as follows:
|
|
|
|
<form action="/cgi-bin/java.cgi/CGI_Test" method="POST">
|
|
|
|
|
|
Where /cgi-bin/ is your local CGI binary directory, java.cgi is the
|
|
Java front-end that allows us to run Java programs over the web and
|
|
CGI_Test is an example of the name of the Java program to run.
|
|
|
|
|
|
|
|
5. Using the Java CGI Classes.
|
|
|
|
There are currently three main classes supported -- ``CGI'', ``Email''
|
|
and ``HTML''. I am considering adding classes to deal with MIME-
|
|
formatted input and output -- MIMEin & MIMEout, respectively.
|
|
|
|
There are also a few support and test classes. ``CGI_Test'',
|
|
``Email_Test'' and ``HTML_Test'' are intended to be used to test your
|
|
installation. They can also be used as a starting-point for your own
|
|
Java programs which use this class library. The ``Text'' class is the
|
|
superclass for both the Email and the HTML classes.
|
|
|
|
|
|
|
|
5.1. CGI
|
|
|
|
|
|
|
|
5.1.1. Class Syntax
|
|
|
|
public class CGI
|
|
|
|
|
|
|
|
5.1.2. Class Description
|
|
|
|
The CGI class holds the ``CGI Information'' -- Environment variables
|
|
set by the web server and the name/value sent from a form when its
|
|
submit action is selected. All information is stored in a Properties
|
|
class object.
|
|
|
|
This class is in the ``Orbits.net'' package.
|
|
|
|
|
|
|
|
5.1.3. Member Summary
|
|
|
|
|
|
|
|
______________________________________________________________________
|
|
CGI() // Constructor.
|
|
getNames() // Get the list of names.
|
|
getValue() // Get form value by specifying name.
|
|
______________________________________________________________________
|
|
|
|
|
|
|
|
5.1.4. See Also
|
|
|
|
CGI_Test.
|
|
|
|
|
|
|
|
5.1.5. CGI()
|
|
|
|
|
|
Purpose
|
|
Constructs an object which contains the available CGI data.
|
|
|
|
Syntax
|
|
public CGI()
|
|
|
|
Description
|
|
When a CGI object is constructed, all available CGI information
|
|
is sucked-up into storage local to the new object.
|
|
|
|
|
|
|
|
5.1.6. getNames()
|
|
|
|
|
|
Purpose
|
|
List the names which are defined to have corresponding values.
|
|
|
|
Syntax
|
|
public Enumeration getKeys ()
|
|
|
|
Description
|
|
Provides the full list of names for which coresponding values
|
|
are defined.
|
|
|
|
Returns
|
|
An Enumeration of all the names defined.
|
|
|
|
|
|
|
|
5.1.7. getValue()
|
|
|
|
|
|
Purpose
|
|
Retrieves the value associated with the name specified.
|
|
|
|
Syntax
|
|
public String getValue ( String name )
|
|
|
|
Description
|
|
This method provides the corespondence between the names and
|
|
values sent from an HTML form.
|
|
|
|
Parameter
|
|
|
|
name
|
|
The key by which values are selected.
|
|
|
|
Returns
|
|
A String containing the value.
|
|
|
|
|
|
|
|
5.2. CGI_Test
|
|
|
|
This class provides both an example of how to use the CGI class and a
|
|
test program which can be used to confirm that the Java CGI package is
|
|
functioning correctly.
|
|
|
|
|
|
|
|
5.2.1. Member Summary
|
|
|
|
|
|
______________________________________________________________________
|
|
main() // Program main().
|
|
______________________________________________________________________
|
|
|
|
|
|
|
|
5.2.2. See Also
|
|
|
|
CGI.
|
|
|
|
|
|
|
|
5.2.3. main()
|
|
|
|
|
|
Purpose
|
|
Provide a main() method.
|
|
|
|
Syntax
|
|
public static void main( String argv[] )
|
|
|
|
Description
|
|
This is the entry point for a CGI program which does nothing but
|
|
return a list of the available name/value pairs and their
|
|
current values.
|
|
|
|
Parameter
|
|
|
|
argv[]
|
|
Arguments passed to the program by the java.cgi script.
|
|
Currently unused.
|
|
|
|
|
|
|
|
5.3. Email
|
|
|
|
|
|
|
|
5.3.1. Class Syntax
|
|
|
|
public class Email extends Text
|
|
|
|
|
|
|
|
5.3.2. Class Description
|
|
|
|
Messages are built up with the Text class add*() methods and the e-
|
|
mail-specific methods added by this class. When complete, the message
|
|
is sent to its destination.
|
|
|
|
This class is in the ``Orbits.net'' package.
|
|
|
|
|
|
|
|
5.3.3. Member Summary
|
|
|
|
|
|
______________________________________________________________________
|
|
Email() // Constructor.
|
|
send() // Send the e-mail message.
|
|
sendTo() // Add a destination for message.
|
|
subject() // Set the Subject: for message.
|
|
______________________________________________________________________
|
|
|
|
|
|
|
|
5.3.4. See Also
|
|
|
|
Email_Test, Text.
|
|
|
|
|
|
|
|
5.3.5. Email()
|
|
|
|
|
|
Purpose
|
|
Constructs an object which will contain an email message.
|
|
|
|
Syntax
|
|
public Email()
|
|
|
|
Description
|
|
Sets up an empty message to be completed by the Email methods.
|
|
|
|
See Also
|
|
Text.
|
|
|
|
|
|
|
|
5.3.6. send()
|
|
|
|
|
|
Purpose
|
|
Send the e-mail message.
|
|
|
|
Syntax
|
|
public void send ()
|
|
Description
|
|
This formats and sends the message. If no destination address
|
|
has been set, there is no action taken.
|
|
|
|
|
|
|
|
5.3.7. sendTo()
|
|
|
|
|
|
Purpose
|
|
Add a destination for this message.
|
|
|
|
Syntax
|
|
public String sendTo ( String address )
|
|
|
|
Description
|
|
Add address to the list of destinations for this method. There
|
|
is no set limit to the number of destinations an e-mail message
|
|
may have. I'm sure that if you build up the list large enough,
|
|
you can exceed the size of the parameter list that the Mail
|
|
Transport Agent can accept or use up your memory.
|
|
|
|
Parameter/
|
|
|
|
address
|
|
A destination to send this message to.
|
|
|
|
|
|
|
|
5.3.8. subject()
|
|
|
|
|
|
Purpose
|
|
Set the subject for this message.
|
|
|
|
Syntax
|
|
public void subject ( String subject )
|
|
|
|
Description
|
|
This method sets the text for the e-mail's Subject: line. If
|
|
called more than once, the latest subject set is the one that is
|
|
used.
|
|
|
|
Parameter
|
|
|
|
subject
|
|
The text of this message's Subject: line.
|
|
|
|
|
|
|
|
5.4. Email_Test
|
|
|
|
This class provides both an example of how to use the Email class and
|
|
a test program which can be used to confirm that the Java CGI package
|
|
is functioning correctly.
|
|
|
|
|
|
|
|
5.4.1. Member Summary
|
|
|
|
|
|
|
|
______________________________________________________________________
|
|
main() // Program main().
|
|
______________________________________________________________________
|
|
|
|
|
|
|
|
5.4.2. See Also
|
|
|
|
Email.
|
|
|
|
|
|
|
|
5.4.3. main()
|
|
|
|
|
|
Purpose
|
|
Provide a main() method.
|
|
|
|
Syntax
|
|
public static void main( String argv[] )
|
|
|
|
Description
|
|
This is the entry point for a CGI program which returns a list
|
|
of the available name/value pairs and their current values. It
|
|
will also send this list to the address specified in the Email
|
|
variable.
|
|
|
|
Parameter
|
|
|
|
argv[]
|
|
Arguments passed to the program by the java.cgi script.
|
|
Currently unused.
|
|
|
|
|
|
|
|
5.5. HTML
|
|
|
|
|
|
|
|
5.5.1. Class Syntax
|
|
|
|
public class HTML extends Text
|
|
|
|
|
|
|
|
5.5.2. Class Description
|
|
|
|
Messages are built up with the Text class add*() methods and the HTML-
|
|
specific methods added by this class. When complete, the message is
|
|
sent to its destination.
|
|
|
|
Currently, there is no error checking to confirm that the list-
|
|
building methods are being used in a correct order, so the programmer
|
|
must take pains not to violate HTML syntax.
|
|
|
|
This class is in the ``Orbits.net'' package.
|
|
|
|
|
|
5.5.3. Member Summary
|
|
|
|
|
|
______________________________________________________________________
|
|
HTML() // Constructor.
|
|
author() // Set the name of the document author.
|
|
definitionList() // Start a definition list.
|
|
definitionListTerm() // Add a term to a definition list.
|
|
endList() // End a list.
|
|
listItem() // Add an entry to a list.
|
|
send() // Send the HTML message.
|
|
title() // Set the text for the document title.
|
|
______________________________________________________________________
|
|
|
|
|
|
|
|
5.5.4. See Also
|
|
|
|
HTML_Test, Text.
|
|
|
|
|
|
|
|
5.5.5. HTML()
|
|
|
|
|
|
Purpose
|
|
Constructs an object which will contain an HTML message.
|
|
|
|
Syntax
|
|
public HTML()
|
|
|
|
Description
|
|
Sets up an empty message to be completed by the HTML methods.
|
|
|
|
See Also
|
|
Text.
|
|
|
|
|
|
|
|
5.5.6. author()
|
|
|
|
|
|
Purpose
|
|
Set the name of the document author.
|
|
|
|
Syntax
|
|
public void author ( String author )
|
|
|
|
Description
|
|
Set the name of the document author to author.
|
|
|
|
Parameter/
|
|
|
|
author
|
|
The text to use as the author of this message.
|
|
|
|
See Also
|
|
title().
|
|
|
|
|
|
|
|
5.5.7. definitionList()
|
|
|
|
|
|
Purpose
|
|
Start a definition list.
|
|
|
|
Syntax
|
|
public void definitionList ()
|
|
|
|
Description
|
|
Start a definition list. A definition list is a list
|
|
specialized so that each entry in the list is a term followed by
|
|
the definition text for that term. The start of a definition
|
|
list should be followed by the creation of (at least) one
|
|
term/text pair and a call to the endList() method. Note that,
|
|
currently, lists cannot be nested.
|
|
|
|
See Also
|
|
definitionListTerm(), endList(), listItem().
|
|
|
|
|
|
|
|
5.5.8. definitionListTerm()
|
|
|
|
|
|
Purpose
|
|
Add a term to a definition list.
|
|
|
|
Syntax
|
|
public void definitionListTerm ()
|
|
|
|
Description
|
|
Add a term to a definition list. The text for the term part of
|
|
the current list entry should be appended to the message after
|
|
this method is called and before a corresponding listItem method
|
|
is called.
|
|
|
|
See Also
|
|
definitionList(), listItem().
|
|
|
|
|
|
|
|
5.5.9. endList()
|
|
|
|
|
|
Purpose
|
|
End a list.
|
|
|
|
Syntax
|
|
public void endList ()
|
|
|
|
Description
|
|
End a list. This method closes out a list. Note that,
|
|
currently, lists cannot be nested.
|
|
|
|
See Also
|
|
definitionList().
|
|
|
|
|
|
|
|
5.5.10. listItem()
|
|
|
|
|
|
Purpose
|
|
Add an entry to a list.
|
|
|
|
Syntax
|
|
public void listItem ()
|
|
|
|
public void listItem ( String item )
|
|
|
|
public boolean listItem ( String term, String item )
|
|
|
|
Description
|
|
Add an entry to a list. If the first form is used, the text for
|
|
the current list item should be appended to the message after
|
|
this method is called and before any other list methods are
|
|
called. In the second and third forms, the item text is
|
|
specified as a parameter to the method instead of (or in
|
|
addition to) being appended to the message. The third form is
|
|
specific to definition lists and provides both the term and the
|
|
definition of the list entry.
|
|
|
|
Parameters
|
|
|
|
item
|
|
The text of this list entry.
|
|
|
|
term
|
|
The text of this definition list entry's term part.
|
|
|
|
See Also
|
|
definitionList(), definitionListTerm(), endList().
|
|
|
|
|
|
|
|
5.5.11. send()
|
|
|
|
|
|
Purpose
|
|
Send the HTML message.
|
|
|
|
Syntax
|
|
public void send ()
|
|
|
|
Description
|
|
Send the HTML message.
|
|
|
|
|
|
|
|
5.5.12. title()
|
|
|
|
|
|
Purpose
|
|
Set the text for the document title.
|
|
|
|
Syntax
|
|
public void title ( String title )
|
|
|
|
Description
|
|
Set the text for the document title.
|
|
|
|
Parameter
|
|
|
|
title
|
|
The text of this message's title.
|
|
|
|
See Also
|
|
author().
|
|
|
|
|
|
|
|
5.6. HTML_Test
|
|
|
|
This class provides both an example of how to use the HTML class and a
|
|
test program which can be used to confirm that the Java CGI package is
|
|
functioning correctly.
|
|
|
|
|
|
|
|
5.6.1. Member Summary
|
|
|
|
|
|
______________________________________________________________________
|
|
main() // Program main().
|
|
______________________________________________________________________
|
|
|
|
|
|
|
|
5.6.2. See Also
|
|
|
|
HTML.
|
|
|
|
|
|
|
|
5.6.3. main()
|
|
|
|
|
|
Purpose
|
|
Provide a main() method.
|
|
|
|
Syntax
|
|
public static void main( String argv[] )
|
|
|
|
Description
|
|
This is the entry point for a CGI program which returns a list
|
|
of the available name/value pairs in an HTML document, with each
|
|
name/value pair displayed in a definition list element.
|
|
|
|
Parameter
|
|
|
|
argv[]
|
|
Arguments passed to the program by the java.cgi script.
|
|
Currently unused.
|
|
|
|
|
|
|
|
5.7. Text
|
|
|
|
|
|
|
|
5.7.1. Class Syntax
|
|
|
|
public abstract class Text
|
|
|
|
|
|
|
|
5.7.2. Class Description
|
|
|
|
This class is the superclass of the Email and HTML classes. Messages
|
|
are built up with the methods in this class and completed and
|
|
formatted with the methods in subclasses.
|
|
|
|
This class is in the ``Orbits.text'' package.
|
|
|
|
|
|
|
|
5.7.3. Member Summary
|
|
|
|
|
|
______________________________________________________________________
|
|
Text() // Constructor.
|
|
add() // Add text to this object.
|
|
addLineBreak() // Add a line break.
|
|
addParagraph() // Add a paragraph break.
|
|
______________________________________________________________________
|
|
|
|
|
|
|
|
5.7.4. See Also
|
|
|
|
Email, HTML.
|
|
|
|
|
|
|
|
5.7.5. add()
|
|
|
|
|
|
Purpose
|
|
Add text to this item.
|
|
|
|
Syntax
|
|
public void add ( char addition )
|
|
|
|
public void add ( String addition )
|
|
|
|
public void add ( StringBuffer addition )
|
|
|
|
Description
|
|
Add addition to the contents of this text item.
|
|
|
|
Parameter
|
|
|
|
addition
|
|
Text to be added to the text item.
|
|
|
|
See Also
|
|
addLineBreak(), addParagraph().
|
|
|
|
|
|
|
|
5.7.6. addLineBreak()
|
|
|
|
|
|
Purpose
|
|
Force a line break at this point in the text.
|
|
|
|
Syntax
|
|
public void addLineBreak ()
|
|
|
|
Description
|
|
Add a line break to the text at the current point.
|
|
|
|
See Also
|
|
add(), addParagraph().
|
|
|
|
|
|
|
|
5.7.7. addParagraph()
|
|
|
|
|
|
Purpose
|
|
Start a new paragaph.
|
|
|
|
Syntax
|
|
public void add ()
|
|
|
|
Description
|
|
Start a new paragraph at this point in the text flow.
|
|
|
|
See Also
|
|
add(), addLineBreak().
|
|
|
|
|
|
|
|
6. Future Plans
|
|
|
|
|
|
o Add to the Email class:
|
|
|
|
Email( int capacity )
|
|
Used when we know how much space the message will need to have
|
|
allocated.
|
|
|
|
sendTo( String [] address )
|
|
Add a list of primary destinations to the e-mail message.
|
|
|
|
sendCc( String address )
|
|
Add a Carbon-Copy destination to the e-mail message.
|
|
|
|
sendCc( String [] address )
|
|
Add a list of Carbon-Copy destinations to the e-mail message.
|
|
|
|
sendBcc( String address )
|
|
Add a Blind Carbon-Copy destination to the e-mail message.
|
|
|
|
sendBcc( String [] address )
|
|
Add a list of Blind Carbon-Copy destinations to the e-mail
|
|
message.
|
|
|
|
o Add to the HTML class:
|
|
|
|
HTML( int capacity )
|
|
Used when we know how much space the message will need to have
|
|
allocated.
|
|
public void unorderedList()
|
|
Start an unordered list.
|
|
|
|
public void orderedList()
|
|
Start an ordered list.
|
|
|
|
public void directoryList()
|
|
Start a directory list.
|
|
|
|
public void menuList()
|
|
Start a menu list.
|
|
|
|
void anchor( String anchorName )
|
|
Specify an anchor.
|
|
|
|
void link( String url, String text )
|
|
Specify a link.
|
|
|
|
void applet( String url, String altText )
|
|
Specify an applet link.
|
|
|
|
o Allow HTML lists to be nested.
|
|
|
|
o Add error checking code to enforce correct ordering of HTML list
|
|
formatting codes.
|
|
|
|
o The location of the file of environment data should be configurable
|
|
from the Makefile.
|
|
|
|
o Get rid of the spurious empty name/value pair that appears in the
|
|
list when we are dealing with the GET method of data transfer.
|
|
|
|
o Consider having CGI implement the java.util.Enumeration interface
|
|
to successively provide variable names.
|
|
|
|
o Add a Test class, which would use every method in this package.
|
|
|
|
o Document how CGI_Test, Email_Test and HTML_Test build on each other
|
|
to provide incremental tests for debugging purposes.
|
|
|
|
o Document how Test uses every feature available in this package.
|
|
|
|
|
|
|
|
7. Changes
|
|
|
|
|
|
|
|
7.1. Changes from 0.4 to 0.5
|
|
|
|
|
|
o Changed documentation and comments to reflect the final nature of
|
|
this release.
|
|
|
|
|
|
|
|
7.2. Changes from 0.3 to 0.4
|
|
|
|
|
|
o Fleshed out the HTML class to provide minimal functionality.
|
|
|
|
|
|
o Wrote the HTML_Test class and javahtmltest.html-dist.
|
|
|
|
o Added the HTML methods to deal with a definition list.
|
|
|
|
|
|
|
|
7.3. Changes from 0.2 to 0.3
|
|
|
|
|
|
o Added the Text and Email classes. HTML was also added, but it is
|
|
merely a stub at this point.
|
|
|
|
o Put the various classes into packages. The main classes are in
|
|
Orbits.net.*, the support class Text is in Orbits.text.Text.
|
|
|
|
o Changed CGItest to CGI_Test.
|
|
|
|
o Added the Email_Test class.
|
|
|
|
|
|
|
|
7.4. Changes from 0.1 to 0.2
|
|
|
|
|
|
o The environment variables are put into a temportary file instead of
|
|
being crammed into the Java inperpreter command-line. The CGI
|
|
class and java.cgi had to be modified.
|
|
|
|
o The javacgitest.html document is made part of the distribution.
|
|
|
|
o The text files which are modified by make upon installation are
|
|
provided with names that end with -dist.
|
|
|
|
|
|
|