Java CGI HOWTO
David H. Silber
[email protected].
v0.4, 18 Novembre 1996.
Ce document vous explique comment convaincre votre serveur WWW
d'utiliser des programmes de CGI ecrits en Java, et montre l'emploi de
Java dans l'ecriture de programmes de CGI. Bien que les HOWTO se
restreignent en principe au systeme Linux, celui-ci est independant de
la version d'Unix utilisee. _T_r_a_d_u_c_t_i_o_n _: _X_a_v_i_e_r _C_a_z_i_n_, _l_e _2_7 _n_o_v_e_m_b_r_e
_1_9_9_7.
11..
IInnttrroodduuccttiioonn
Par construction du language, les variables d'environnement du systeme
ne sont pas facilement accessibles au programmeur Java. Par ailleurs,
le JDK (Java Development Kit) rend impossible l'invocation directe
d'un programme, ce qui ne facilite pas le traitement standard par CGI
des formulaires HTML. On peut contourner ces limitations de plusieurs
facons. Vous saurez comment j'ai implemente l'une d'elles en
poursuivant votre lecture.
11..11..
PPrree--rreeqquuiiss
Je considere que vous etes familiarise avec les principes qui sous-
tendent HTML et CGI, et que vous possedez un minimum de connaissances
de votre serveur HTTP. La programmation Java ne devra pas non plus
vous etre etrangere, a defaut de quoi ce qui va suivre ne vous sera
pas tres parlant.
11..22..
CCee ddooccuummeenntt
http://www.orbits.com/software/Java_CGI.html est l'adresse ou vous
etes sur de trouver la derniere version de ce document.
11..33..
LLee ppaacckkaaggee lluuii--mmeemmee
L'archive
ftp://ftp.orbits.com/pub/software/java_cgi-0.4.tgz contient
la derniere version du package decrit ici. Vous y trouverez egalement
le source SGML de ce document (en anglais bien sur).
La distribution du package suit les recommandations de la LGPL (GNU
Library General Public License). Ce document peut etre distribue selon
les termes gouvernant le copyright des Linux HOWTO.
Merci de bien vouloir mentionner le document
http://www.orbits.com/software/Java_CGI.html si vous utilisez ce
logiciel. Vous permettrez ainsi a d'autres d'acceder aux classes Java
CGI.
11..44..
PPuubblliicciittee ggrraattuuiittee
Ce document a ete mis au point avec la bienveillance de SStteellllaarr OOrrbbiittss
TTeecchhnnoollooggyy SSeerrvviicceess. Si vous voulez savoir ce que nous faisons, allez
voir a
http://www.orbits.com/.
22..
CCoonnffiigguurraattiioonn ddee vvoottrree sseerrvveeuurr ((aavveecc eexxpplliiccaattiioonnss))
Cette section vous conduira a travers l'installation de mon package
_J_a_v_a _C_G_I, et sera agrementee d'explications genereuses qui vous
permettront de mesurer les consequences de vos actes. Si vous
souhaitez simplement installer les programmes, sans vous soucier du
pourquoi et du comment, sautez directement a la section
``Configuration du serveur (version courte)''.
22..11..
CCoonnttrraaiinntteess llooggiicciieelllleess eett mmaatteerriieelllleess
Ce logiciel devrait fonctionner sur n'importe quel systeme a la Unix
sur lequel se trouvent au moins installes le JDK et un serveur Web.
J'utilise pour ma part un _L_i_n_u_x _D_e_b_i_a_n sur lequel tourne le demon HTTP
_a_p_a_c_h_e. Si cela ne fonctionne pas sur votre installation, n'hesitez
pas a me contacter a
[email protected].
Malheureusement, l'interpreteur Java n'est pas particulierement
econome en memoire ; si vous devez utiliser souvent des programmes de
CGI en Java, quelques megaoctets de RAM supplementaires ne seront pas
de trop.
22..22..
JJaavvaa CCGGII
Le logiciel que j'ai ecrit s'appelle _J_a_v_a _C_G_I (Note: au cas ou vous ne
l'auriez pas encore remarque (NdT)). Vous pouvez le recuperer par ftp
anonyme a l'adresse
ftp://www.orbits.com/pub/software/java_cgi-0.4.tgz. (Le numero de
version peut avoir change.)
22..33..
DDeeppllooiieemmeenntt ddeess ssoouurrcceess
Choisissez un repertoire ou vous pourrez tranquillement deployer
l'archive du package. Je suggere generalement /usr/local/src.
Desarchivez ensuite a l'aide de la commande (Note : les "lignuxeurs"
prefereront sans doute le plus elegant tar xzvf java_cgi-0.4.tgz
(NdT).) :
gzip -dc java_cgi-0.4.tgz | tar -xvf -
Cela aura pour effet de creer un repertoire de nom java_cgi-0.4. Vous
y trouverez les fichiers auxquels nous feront reference dans la suite.
(Si le numero de version a change, suivez les instructions qui s'y
trouvent a partir de maintenant).
22..44..
CChheemmiinnss llooccaauuxx
Vous allez devoir decider de l'endroit ou vous souhaitez que les
programmes Java CGI resident. La plupart du temps, vous aurez interet
a les placer dans un repertoire parallele au repertoire cgi-bin. La
configuration de mon serveur _a_p_a_c_h_e indiquait /var/web/cgi-bin comme
repertoire cgi-bin par defaut. J'ai donc place mes programmes Java CGI
dans le repertoire /var/web/javacgi. Il n'est pas conseille de placer
ces programmes dans l'un des repertoires references par CLASSPATH.
Editez le Makefile pour refleter la configuration de votre systeme. En
tant qu'utilisateur root, lancez make install. Cela aura pour effet de
compiler vos programmes Java, modifier le script java.cgi pour qu'il
s'adapte a votre systeme, et installer les programmes au bon endroit.
Si vous souhaitez egalement disposer d'une version HTML de ce
document, et d'un document test en HTML, lancez plutot make all.
22..55..
TTeesstt ddee vvoottrree iinnssttaallllaattiioonn
Les documents javacgitest.html, javaemailtest.html et
javahtmltest.html devraient maintenant etre installes. Si vous avez
choisi make all, ils se trouveront dans le repertoire specifie par la
variable WEBDIR du Makefile. Dans le cas contraire, vous pouvez lancer
make test pour les creer a partir de javacgitest.html-dist,
javaemailtest.html-dist et javahtmltest.html-dist.
Apres vous etre assure que votre installation s'etait deroulee
correctement, vous pouvez supprimer les fichiers CGI_Test.class,
Email_Test.class et HTML_Test.class de votre repertoire JAVACGI, ainsi
que javacgitest.html, javaemailtest.html et javahtmltest.html de votre
repertoire WEBDIR. Ils montrent les informations utilisateurs
auxquelles le serveur est normalement seul a avoir acces.
33..
CCoonnffiigguurraattiioonn dduu sseerrvveeuurr ((vveerrssiioonn ccoouurrttee))
+o Recuperez le package _J_a_v_a _C_G_I a partir de
ftp://www.orbits.com/pub/software/java_cgi-0.4.tgz. (Le numero de
version peut avoir change.)
+o Deployez la distribution a l'aide de la commande
gzip -dc java_cgi-0.4.tgz | tar -xvf -
(Si le numero de version de la distribution a change, utilisez les
instructions qui s'y trouvent a partir de maintenant.)
+o Editez le Makefile que vous trouverez dans le nouveau repertoire
java_cgi-0.4 pour qu'il reflete la configuration de votre systeme.
+o En tant que root, lancez make install. Cela aura pour effet de
compiler les programmes Java, prendre en compte les informations
propres a votre systeme, et installer les divers fichiers.
Si vous souhaitez disposer d'une version HTML de ce document, ainsi
que d'un document test en HTML, lancez plutot make all.
+o Vous devriez maintenant etre pare.
44..
EExxeeccuuttiioonn dd''uunn pprrooggrraammmmee JJaavvaa CCGGII
44..11..
DDiiffffiiccuulltteess dd''eexxeeccuuttiioonn ddee pprrooggrraammmmeess JJaavvaa aavveecc llee mmooddeellee CCGGII
L'execution d'un programme Java depuis un serveur Web pose deux types
de problemes majeurs :
44..11..11..
LLeess pprrooggrraammmmeess JJaavvaa nnee ss''eexxeeccuutteenntt ppaass ccoommmmee ddeess bbiinnaaiirreess oorrddiinnaaiirreess
Il faut lancer l'interpreteur Java et fournir la classe principale (le
programme a executer) sur la ligne de commande. Les formulaires HTML
ne permettent pas d'envoyer directement une ligne de commande au
serveur Web.
44..11..22..
JJaavvaa nn''aacccceeddee ppaass _a _p_r_i_o_r_i aauuxx vvaarriiaabblleess dd''eennvviirroonnnneemmeenntt
Toutes les variables d'environnement requises par le programme Java
doivent lui etre passees explicitement. Il n'existe pas de methode
similaire a la fonction getenv() de CC .
44..22..
SSoolluuttiioonnss pprrooppoosseeeess
Pour contourner ces obstacles, j'ai ecrit une script shell de CGI, qui
fournit les informations necessaires a l'interpreteur Java.
44..22..11..
LLee ssccrriipptt jjaavvaa..ccggii
Ce script de shell se charge de l'interaction entre le demon HTTP et
le programme Java CGI que vous souhaitez utiliser. Il extrait le nom
du programme que vous souhaitez lancer a partir des donnees fournies
par le serveur. Il recupere ensuite toutes les valeurs d'environnement
dans un fichier temporaire. Enfin, il lance l'interpreteur Java en lui
passant le nom du fichier contenant les informations d'environnement,
ainsi que le nom du programme a executer.
Le script java.cgi a ete configure et installe selon les procedure
decrites a la section ``Decide On Your Local Path Policies''.
44..22..22..
IInnvvooccaattiioonn ddee jjaavvaa..ccggii ddeeppuuiiss uunn ffoorrmmuullaaiirree HHTTMMLL
Mes formulaires qui utilisent les programmes Java CGI specifient
l'action a effectuer de la facon suivante :
<form action="/cgi-bin/java.cgi/CGI_Test" method="POST">
/cgi-bin/ est votre repertoire local d'executables CGI, java.cgi est
l'interface permettant de lancer les programmes Java, et CGI_Test est
un exemple de programme Java a executer.
55..
UUttiilliissaattiioonn ddeess ccllaasssseess JJaavvaa CCGGII
Trois classes principales sont pour l'instant supportees : ``CGI'',
``Email'' et ``HTML''. Je pense y ajouter des classes capables de
gerer des entrees et des sorties formatees en MIME (respectivement
MIMEin & MIMEout).
Quelques classes de test et de support sont egalement disponibles :
``CGI_Test'', ``Email_Test'' et ``HTML_Test'' doivent permettre de
tester votre installation. Elles peuvent aussi servir de point de
depart a vos propres programmes Java bases sur cette bibliotheque de
classes. La classe ``Text'' est une superclasse des classes Email et
HTML.
55..11..
CCGGII
55..11..11..
SSyynnttaaxxee
public class CGI
55..11..22..
DDeessccrriippttiioonn
La classe CGI detient les "informations SGI" : les valeurs
d'environnement initialisees par le serveur Web ainsi que le nom et la
valeur issus du formulaire quand l'action ssuubbmmiitt est selectionnee.
Toutes les informations sont stockees dans un objet de classe
Properties.
Cette classe se trouve dans le package "Orbits.net".
55..11..33..
LLiissttee ddeess mmeemmbbrreess
______________________________________________________________________
CGI() // Constructeur.
getNames() // Recupere la liste de noms.
getValue() // Recupere la valeur a partir du nom.
______________________________________________________________________
55..11..44..
VVooiirr aauussssii
CGI_Test.
55..11..55..
CCGGII(())
FFiinnaalliittee
Construit un objet contenant les donnees CGI disponibles.
SSyynnttaaxxee
public CGI()
DDeessccrriippttiioonn
Lorsqu'un objet CGI est construit, toutes les informations CGI
disponibles sont recuperees et stockees dans le nouvel objet.
55..11..66..
ggeettNNaammeess(())
FFiinnaalliittee
Dresse la liste des noms definis par le formulaire.
SSyynnttaaxxee
public Enumeration getNames ()
DDeessccrriippttiioonn
Fournit la liste complete des noms pour lesquels des valeurs
correspondantes ont ete definies.
RReettoouurrnnee
Une Enumeration de tous les noms definis.
55..11..77..
ggeettVVaalluuee(())
FFiinnaalliittee
Recupere la vvaalleeuurr associee au nnoomm specifie.
SSyynnttaaxxee
public String getValue ( String nom )
DDeessccrriippttiioonn
Cette methode fournit la correspondance entre les noms et les
valeurs envoyees depuis un formulaire HTML.
PPaarraammeettrree
nnoomm
La cle par laquelle les valeurs sont choisies.
RReettoouurrnnee
Une String contenant la valeur.
55..22..
CCGGII__TTeesstt
Cette classe fournit a la fois un exemple d'utilisation de la classe
CGI, et un programme de test, qu'on pourra utiliser pour confirmer que
le package _J_a_v_a _C_G_I fonctionne correctement.
55..22..11..
LLiissttee ddeess mmeemmbbrreess
______________________________________________________________________
main() // main() du programme
______________________________________________________________________
55..22..22..
VVooiirr aauussssii
CGI.
55..22..33..
mmaaiinn(())
FFiinnaalliittee
Fournit une methode main().
SSyynnttaaxxee
public static void main( String argv[] )
DDeessccrriippttiioonn
Il s'agit du point d'entree d'un programme CGI qui ne fait rien
a part retourner la liste des couples nom/valeur.
PPaarraammeettrree
"
aarrggvv
Arguments passes au programme par le script java.cgi. Non
utilise pour l'instant.
55..33..
EEmmaaiill
55..33..11..
SSyynnttaaxxee
public class Email extends Text
55..33..22..
DDeessccrriippttiioonn
Les messages sont construits au moyen des methodes add*() de la classe
Text et les methodes specifiques au courrier electronique fournies par
cette classe. Une fois compose, le message est envoye vers sa
destination finale.
Cette classe se trouve dans le package "Orbits.net".
55..33..33..
LLiissttee ddeess mmeemmbbrreess
______________________________________________________________________
Email() // Constructeur
send() // Envoie le message e-mail
sendTo() // Ajoute une destination au message
subject() // Initialise le champ Subject: du message
______________________________________________________________________
55..33..44..
VVooiirr aauussssii
Email_Test, Text.
55..33..55..
EEmmaaiill(())
FFiinnaalliittee
Construit un objet qui contiendra un message electronique.
SSyynnttaaxxee
public Email()
DDeessccrriippttiioonn
Cree un message vide qui sera rempli par les methodes Email.
VVooiirr aauussssii
Text.
55..33..66..
sseenndd(())
FFiinnaalliittee
Envoie le message e-mail.
SSyynnttaaxxee
public void send ()
DDeessccrriippttiioonn
Formatage et envoi du message. Si aucune adresse de destination
n'a ete precisee, ne fait rien.
55..33..77..
sseennddTToo(())
FFiinnaalliittee
Ajoute une destination pour ce message.
SSyynnttaaxxee
public String sendTo ( String adresse )
DDeessccrriippttiioonn
Ajoute adresse a la liste des destinations pour cette methode.
Il n'existe pas de limite _a _p_r_i_o_r_i pour le nombre de
destinations d'un message e-mail. Je suis sur qu'avec une liste
assez grande, on peut depasser la taille acceptable pour le _M_a_i_l
_T_r_a_n_s_p_o_r_t _A_g_e_n_t, voire la memoire disponible sur votre systeme.
PPaarraammeettrree
aaddrreessssee
Une destination a laquelle envoyer ce message.
55..33..88..
ssuubbjjeecctt(())
FFiinnaalliittee
Initialise le sujet du message.
SSyynnttaaxxee
public void subject ( String sujet )
DDeessccrriippttiioonn
Cette methode remplit le champ Subject: du message. Si elle est
appelee plusieurs fois, le sujet utilise sera le dernier
demande.
PPaarraammeettrree
ssuujjeett
Le texte du champ Subject: du message.
55..44..
EEmmaaiill__TTeesstt
Cette classe fournit a la fois un exemple d'utilisation de la classe
Email et un programme de test qu'on pourra utiliser pour s'assurer que
le package _J_a_v_a _C_G_I fonctionne correctement.
55..44..11..
LLiissttee ddeess mmeemmbbrreess
______________________________________________________________________
main() // main() du programme
______________________________________________________________________
55..44..22..
VVooiirr aauussssii
Email.
55..44..33..
mmaaiinn(())
FFiinnaalliittee
Fournit une methode main().
SSyynnttaaxxee
public static void main( String argv[] )
DDeessccrriippttiioonn
Il s'agit du point d'entree d'un programme CGI qui retourne une
liste des couples nom/valeur disponibles. Cette liste sera
egalement envoyee a l'adresse specifiee dans la variable Email.
PPaarraammeettrree
aarrggvv
Arguments passes au programme par le script java.cgi. Non
utilise pour l'instant.
55..55..
HHTTMMLL
55..55..11..
SSyynnttaaxxee
public class HTML extends Text
55..55..22..
DDeessccrriippttiioonn
Les messages sont crees a l'aide des methodes add*() de la classe Text
et des methodes specifique au HTML ajoutees par cette classe. Une fois
termine, le message est envoye.
Aucun test n'est effectue pour l'instant pour s'asurer que les
methodes de construction de liste sont utilisees dans le bon ordre.
C'est donc au programmeur de faire attention a ne pas violer la
syntaxe HTML.
Cette classe se trouve dans le package "Orbits.net".
55..55..33..
LLiissttee ddeess mmeemmbbrreess
______________________________________________________________________
HTML() // Constructeur.
author() // Initialise le nom de l'auteur du document.
definitionList() // Cree une liste de definitions.
definitionListTerm() // Ajoute un terme a la liste de definitions.
endList() // Termine une liste.
listItem() // Ajoute une entree a une liste.
send() // Envoie le message HTML.
title() // Initialise le titre du document.
______________________________________________________________________
55..55..44..
VVooiirr aauussssii
HTML_Test, Text.
55..55..55..
HHTTMMLL(())
FFiinnaalliittee
Construit un objet qui contiendra un message HTML.
SSyynnttaaxxee
public HTML()
DDeessccrriippttiioonn
Cree un message vide qui sera rempli par les methodes HTML.
VVooiirr aauussssii
Text.
55..55..66..
aauutthhoorr(())
FFiinnaalliittee
Initialise le nom de l'auteur du document.
SSyynnttaaxxee
public void author ( String auteur )
DDeessccrriippttiioonn
Donne au document un nom d'auteur ayant pour valeur author.
PPaarraammeettrree
aauutteeuurr
Texte a utiliser en tant que nom d'auteur du message.
VVooiirr aauussssii
title().
55..55..77..
ddeeffiinniittiioonnLLiisstt(())
FFiinnaalliittee
Cree une liste de definitions.
SSyynnttaaxxee
public void definitionList ()
DDeessccrriippttiioonn
Initialise une liste de definition. Une _l_i_s_t_e _d_e _d_e_f_i_n_i_t_i_o_n_s est
une liste specialisee telle que chaque entree de la liste soit
un _t_e_r_m_e suivi du _t_e_x_t_e correspondant a la definition de ce
terme. La creation d'une liste de definitions doit etre suivie
par celle d'au moins un couple terme/texte, et d'un appel a la
methode endList(). _N_o_t_o_n_s _q_u_e_, _p_o_u_r _l_e _m_o_m_e_n_t_, _l_e_s _l_i_s_t_e_s _n_e
_p_e_u_v_e_n_t _p_a_s _e_t_r_e _i_m_b_r_i_q_u_e_e_s_.
VVooiirr aauussssii
definitionListTerm(), endList(), listItem().
55..55..88..
ddeeffiinniittiioonnLLiissttTTeerrmm(())
FFiinnaalliittee
Ajoute un terme a la liste de definitions.
SSyynnttaaxxee
public void definitionListTerm ()
DDeessccrriippttiioonn
Ajoute un terme a la liste de definitions. Le texte definissant
le partie terme de l'entree courante de la liste devra etre
insere dans le message apres l'appel de cette methode, et avant
qu'une methode listItem correspondante soit appelee.
VVooiirr aauussssii
definitionList(), listItem().
55..55..99..
eennddLLiisstt(())
FFiinnaalliittee
Termine une liste.
SSyynnttaaxxee
public void endList ()
DDeessccrriippttiioonn
Cette methode permet de clore une liste. _N_o_t_o_n_s _q_u_e_, _p_o_u_r _l_e
_m_o_m_e_n_t_, _l_e_s _l_i_s_t_e_s _n_e _p_e_u_v_e_n_t _p_a_s _e_t_r_e _i_m_b_r_i_q_u_e_e_s_.
VVooiirr aauussssii
definitionList().
55..55..1100..
lliissttIItteemm(())
FFiinnaalliittee
Ajoute une entree a une liste.
SSyynnttaaxxee
public void listItem ()
public void listItem ( String article )
public boolean listItem ( String terme, String article )
DDeessccrriippttiioonn
Ajoute une entree a une liste. Si la premiere forme est
utilisee, le texte de l'article de liste courant devra etre
ajoute au message apres l'appel de cette methode, et avant tout
autre appel a des methodes de liste. Dans la deuxieme et
troisieme forme, le texte article est passe comme parametre a la
methode, au lieu (ou en plus) d'etre ajoute au message. La
troisieme forme est specifique aux listes de definitions et
fournit a la fois le terme et la definition de l'entree de
liste.
PPaarraammeettrreess
aarrttiiccllee
Le texte de cette entree de liste de definitions.
tteerrmmee
Le texte de la partie terme de cette entree de liste de
definitions.
VVooiirr aauussssii
definitionList(), definitionListTerm(), endList().
55..55..1111..
sseenndd(())
FFiinnaalliittee
Envoie le message HTML.
SSyynnttaaxxee
public void send ()
DDeessccrriippttiioonn
Envoie le message HTML.
55..55..1122..
ttiittllee(())
FFiinnaalliittee
Donne une valeur au titre du document.
SSyynnttaaxxee
public void title ( String titre )
DDeessccrriippttiioonn
Initialise le texte du titre du document.
PPaarraammeettrree
ttiittrree
Le texte du titre de ce message.
VVooiirr aauussssii
author().
55..66..
HHTTMMLL__TTeesstt
Cette classe offre a la fois un exemple d'utilisation de la classe
HTML et un programme de test qui peu servir a s'assurer que le package
_J_a_v_a _C_G_I fonctionne correctement.
55..66..11..
LLiissttee ddeess mmeemmbbrreess
______________________________________________________________________
main() // main() du programme.
______________________________________________________________________
55..66..22..
VVooiirr aauussssii
HTML.
55..66..33..
mmaaiinn(())
FFiinnaalliittee
Fournit une methode main().
SSyynnttaaxxee
public static void main( String argv[] )
DDeessccrriippttiioonn
Il s'agit du point d'entree pour un programme CGI qui retourne
une liste des couples nom/valeur d'un document HTML, chaque
couple etant un element d'une liste de definitions.
PPaarraammeettrree
aarrggvv
Arguments passes au programme par le script java.cgi Non
utilise pour l'instant.
55..77..
TTeexxtt
55..77..11..
SSyynnttaaxxee
public abstract class Text
55..77..22..
DDeessccrriippttiioonn
Cette classe est la superclasse des classes Email et HTML. Les
messages sont construits a l'aide des methodes de cette classe, puis
completes et formates grace aux methodes des sous-classes.
Cette classe se trouve dans le package "Orbits.text".
55..77..33..
LLiissttee ddeess mmeemmbbrreess
______________________________________________________________________
Text() // Constructeur.
add() // Ajoute du texte a cet objet.
addLineBreak() // Ajoute une rupture de ligne.
addParagraph() // Ajoute une rupture de paragraphe.
______________________________________________________________________
55..77..44..
VVooiirr aauussssii
Email, HTML.
55..77..55..
aadddd(())
FFiinnaalliittee
Ajoute du texte a cet article
SSyynnttaaxxee
public void add ( char ajout )
public void add ( String ajout )
public void add ( StringBuffer ajout )
DDeessccrriippttiioonn
Ajoute le texte ajout a la suite du contenu de cet article.
PPaarraammeettrree
aajjoouutt
Texte a ajouter.
VVooiirr aauussssii
addLineBreak(), addParagraph().
55..77..66..
aaddddLLiinneeBBrreeaakk(())
FFiinnaalliittee
Force une rupture de ligne a cet endroit dans le texte.
SSyynnttaaxxee
public void addLineBreak ()
DDeessccrriippttiioonn
Insere une rupture de ligne dans le texte, a l'endroit du point
courant.
VVooiirr aauussssii
add(), addParagraph().
55..77..77..
aaddddPPaarraaggrraapphh(())
FFiinnaalliittee
Debute un nouveau paragraphe.
SSyynnttaaxxee
public void add ()
DDeessccrriippttiioonn
Debute un nouveau paragraphe a ce point du flot textuel.
VVooiirr aauussssii
add(), addLineBreak().
66..
AAmmeelliioorraattiioonnss pprreevvuueess
+o Ajouter a la classe Email :
EEmmaaiill(( iinntt ccaappaacciittee ))
Quand on connait a l'avance l'espace a alloue au message.
sseennddTToo(( SSttrriinngg aaddrreessssee ))
Ajoute une liste de destinations principales (champ To:) au
message e-mail.
sseennddCCcc(( SSttrriinngg aaddrreessssee ))
Ajoute une destination au champ Cc: (Carbon-Copy) du message e-
mail.
sseennddCCcc(( SSttrriinngg aaddddrreessss ))
Ajoute une liste de destinations au champ Cc: (Carbon-Copy) du
message e-mail.
sseennddBBcccc(( SSttrriinngg aaddrreessssee ))
Ajoute une destination au champ Bcc: (Blind Carbon-Copy) du
message e-mail.
sseennddBBcccc(( SSttrriinngg aaddrreessssee ))
Ajoute une liste de destinations au champ Bcc: (Blind Carbon-
Copy) du message e-mail.
+o Ajouter a la classe HTML :
HHTTMMLL(( iinntt ccaappaacciittee ))
Quand on connait a l'avance l'espace a alloue au message.
ppuubblliicc vvooiidd uunnoorrddeerreeddLLiisstt(())
Demarre une liste non ordonnee.
ppuubblliicc vvooiidd oorrddeerreeddLLiisstt(())
Demarre une liste ordonnee.
ppuubblliicc vvooiidd ddiirreeccttoorryyLLiisstt(())
Demarre une liste de repertoires.
ppuubblliicc vvooiidd mmeennuuLLiisstt(())
Demarre une liste de menu.
vvooiidd aanncchhoorr(( SSttrriinngg aanncchhoorrNNaammee ))
Specifie une ancre.
vvooiidd lliinnkk(( SSttrriinngg uurrll,, SSttrriinngg tteexxtt ))
Specifie un lien.
vvooiidd aapppplleett(( SSttrriinngg uurrll,, SSttrriinngg aallttTTeexxtt ))
Specifie un lien applet.
+o Autoriser l'imbrication des listes HTML.
+o Ajouter du code de gestion d'erreur pour s'assurer que le formatage
des listes HTML s'effectue dans le bon ordre.
+o L'emplacement du fichier des informations d'environnement devra
etre configurable a partir du Makefile.
+o Eliminer les couples nom/valeur vides qui apparaissent dans la
liste quand la methode GET est utilisee pour le transfert des
donnees.
+o Reflechir a un moyen d'implementer l'interface
java.util.Enumeration avec CGI pour fournir des noms de variables.
+o Ajouter une classe Test, qui permettrait d'utiliser toutes les
methodes de ce package.
+o Documenter la maniere dont CGI_Test, Email_Test et HTML_Test se
referent mutuellement pour fournir des tests incrementaux
facilitant le debogage.
+o Documenter la maniere dont Test se sert de toutes les
fonctionnalites presentes dans le package.
77..
MMooddiiffiiccaattiioonnss
77..11..
MMooddiiffiiccaattiioonnss eennttrree lleess vveerrssiioonnss 00..33 eett 00..44
+o Developpement de la classe HTML pour qu'elle fournisse des
fonctionnalites minimales.
+o Ecriture de la classe HTML_Test et de javahtmltest.html-dist.
+o Ajout des methodes HTML gerant les listes de definitions.
77..22..
MMooddiiffiiccaattiioonnss eennttrree lleess vveerrssiioonnss 00..22 eett 00..33
+o Ajout des classes Text et Email. HTML a ete egalement ajoute, sans
qu'il soit vraiment utilisable.
+o Placement des diverses classes dans des packages. Les classes
principales se trouvent dans Orbits.net.*, la classe de support
Text se trouve dans Orbits.text.Text.
+o CGItest devient CGI_Test.
+o Ajout de la classe Email_Test.
77..33..
MMooddiiffiiccaattiioonnss eennttrree lleess vveerrssiioonnss 00..11 eett 00..22
+o Les variables d'environnement sont placees dans un fichier
temporaire, au lieu d'etre passees a l'interpreteur Java sur la
ligne de commande. La classe CGI et le script java.cgi durent etre
modifies.
+o Le document javacgitest.html devient partie integrante de la
distribution.
+o Les fichiers texte qui sont modifies par make lors de
l'installation sont fournis avec des noms termines par _-_d_i_s_t.