<HTML> <HEAD> <TITLE>Utilisation des classes Java CGI</TITLE> </HEAD> <BODY> <H1>5. <A NAME="s5"></A>Utilisation des classes Java CGI </H1> <P> <A HREF="Java-CGI-HOWTO.html#toc5">Contenu de cette section</A></P> <P>Trois classes principales sont pour l'instant supportées : <A HREF="#cgi-class">CGI</A> , <A HREF="#email-class">Email</A> et <A HREF="#html-class">HTML</A> . Je pense y ajouter des classes capables de gérer des entrées et des sorties formatées en MIME (respectivement MIMEin & MIMEout).</P> <P>Quelques classes de test et de support sont également disponibles : <A HREF="#cgi-test-class">CGI_Test</A> , <A HREF="#email-test-class">Email_Test</A> et <A HREF="#email-test-class">HTML_Test</A> doivent permettre de tester votre installation. Elles peuvent aussi servir de point de départ à vos propres programmes Java basés sur cette bibliothèque de classes. La classe <A HREF="#text-class">Text</A> est une superclasse des classes <CODE>Email</CODE> et <CODE>HTML</CODE>.</P> <P></P> <A NAME="cgi-class"></A> <H2>5.1 <A NAME="ss5.1"></A> CGI </H2> <P></P> <H3>Syntaxe </H3> <P><CODE>public class CGI</CODE></P> <H3>Description </H3> <P>La classe CGI détient les "informations SGI" : les valeurs d'environnement initialisées par le serveur Web ainsi que le nom et la valeur issus du formulaire quand l'action <B>submit</B> est sélectionnée. Toutes les informations sont stockées dans un objet de classe <CODE>Properties</CODE>.</P> <P>Cette classe se trouve dans le package "Orbits.net".</P> <H3>Liste des membres </H3> <P> <HR> <PRE> CGI() // Constructeur. getNames() // Recupere la liste de noms. getValue() // Recupere la valeur a partir du nom. </PRE> <HR> </P> <H3>Voir aussi </H3> <P><CODE>CGI_Test</CODE>.</P> <H3>CGI() </H3> <P> <DL> <DT><B>Finalité</B><DD><P>Construit un objet contenant les données CGI disponibles.</P> <DT><B>Syntaxe</B><DD><P><CODE>public CGI()</CODE></P> <DT><B>Description</B><DD><P>Lorsqu'un objet CGI est construit, toutes les informations CGI disponibles sont récupérées et stockées dans le nouvel objet.</P> </DL> </P> <H3>getNames() </H3> <P> <DL> <DT><B>Finalité</B><DD><P>Dresse la liste des noms définis par le formulaire.</P> <DT><B>Syntaxe</B><DD><P><CODE>public Enumeration getNames ()</CODE></P> <DT><B>Description</B><DD><P>Fournit la liste complète des noms pour lesquels des valeurs correspondantes ont été définies.</P> <DT><B>Retourne</B><DD><P>Une <CODE>Enumeration</CODE> de tous les noms définis.</P> </DL> </P> <H3>getValue() </H3> <P> <DL> <DT><B>Finalité</B><DD><P>Récupère la <B>valeur</B> associée au <B>nom</B> spécifié.</P> <DT><B>Syntaxe</B><DD><P><CODE>public String getValue ( String nom )</CODE></P> <DT><B>Description</B><DD><P>Cette méthode fournit la correspondance entre les <CODE>noms</CODE> et les <CODE>valeurs</CODE> envoyées depuis un formulaire HTML.</P> <DT><B>Paramètre</B><DD><P> <DL> <DT><B>nom</B><DD><P>La clé par laquelle les valeurs sont choisies.</P> </DL> </P> <DT><B>Retourne</B><DD><P>Une <CODE>String</CODE> contenant la valeur.</P> </DL> </P> <P></P> <A NAME="cgi-test-class"></A> <H2>5.2 <A NAME="ss5.2"></A> CGI_Test </H2> <P>Cette classe fournit à la fois un exemple d'utilisation de la classe CGI, et un programme de test, qu'on pourra utiliser pour confirmer que le package <EM>Java CGI</EM> fonctionne correctement.</P> <H3>Liste des membres </H3> <P> <HR> <PRE> main() // main() du programme </PRE> <HR> </P> <H3>Voir aussi </H3> <P><CODE>CGI</CODE>.</P> <H3>main() </H3> <P> <DL> <DT><B>Finalité</B><DD><P>Fournit une méthode <CODE>main()</CODE>.</P> <DT><B>Syntaxe</B><DD><P><CODE>public static void main( String argv[] )</CODE></P> <DT><B>Description</B><DD><P>Il s'agit du point d'entrée d'un programme CGI qui ne fait rien à part retourner la liste des couples nom/valeur.</P> <DT><B>Paramètre </B><DD><P> <DL> <DT><B>argv<F></F></B><DD><P>Arguments passés au programme par le script <CODE>java.cgi</CODE>. Non utilisé pour l'instant.</P> </DL> </P> </DL> </P> <P></P> <A NAME="email-class"></A> <H2>5.3 <A NAME="ss5.3"></A> Email </H2> <P></P> <H3>Syntaxe </H3> <P><CODE>public class Email extends Text</CODE></P> <H3>Description </H3> <P>Les messages sont construits au moyen des méthodes <CODE>add*()</CODE> de la classe <CODE>Text</CODE> et les méthodes spécifiques au courrier électronique fournies par cette classe. Une fois composé, le message est envoyé vers sa destination finale.</P> <P>Cette classe se trouve dans le package "Orbits.net".</P> <H3>Liste des membres </H3> <P> <HR> <PRE> Email() // Constructeur send() // Envoie le message e-mail sendTo() // Ajoute une destination au message subject() // Initialise le champ Subject: du message </PRE> <HR> </P> <H3>Voir aussi </H3> <P><CODE>Email_Test, Text</CODE>.</P> <H3>Email() </H3> <P> <DL> <DT><B>Finalité</B><DD><P>Construit un objet qui contiendra un message électronique.</P> <DT><B>Syntaxe</B><DD><P><CODE>public Email()</CODE></P> <DT><B>Description</B><DD><P>Crée un message vide qui sera rempli par les méthodes Email.</P> <DT><B>Voir aussi</B><DD><P><CODE>Text</CODE>.</P> </DL> </P> <H3>send() </H3> <P> <DL> <DT><B>Finalité</B><DD><P>Envoie le message e-mail.</P> <DT><B>Syntaxe</B><DD><P><CODE>public void send ()</CODE></P> <DT><B>Description</B><DD><P>Formatage et envoi du message. Si aucune adresse de destination n'a été précisée, ne fait rien.</P> </DL> </P> <H3>sendTo() </H3> <P> <DL> <DT><B>Finalité</B><DD><P>Ajoute une destination pour ce message.</P> <DT><B>Syntaxe</B><DD><P><CODE>public String sendTo ( String adresse )</CODE></P> <DT><B>Description</B><DD><P>Ajoute <CODE>adresse</CODE> à la liste des destinations pour cette méthode. Il n'existe pas de limite <EM>a priori</EM> pour le nombre de destinations d'un message e-mail. Je suis sûr qu'avec une liste assez grande, on peut dépasser la taille acceptable pour le <EM>Mail Transport Agent</EM>, voire la mémoire disponible sur votre système.</P> <DT><B>Paramètre</B><DD><P> <DL> <DT><B>adresse</B><DD><P>Une destination à laquelle envoyer ce message.</P> </DL> </P> </DL> </P> <H3>subject() </H3> <P> <DL> <DT><B>Finalité</B><DD><P>Initialise le sujet du message.</P> <DT><B>Syntaxe</B><DD><P><CODE>public void subject ( String sujet )</CODE></P> <DT><B>Description</B><DD><P>Cette méthode remplit le champ <CODE>Subject:</CODE> du message. Si elle est appelée plusieurs fois, le sujet utilisé sera le dernier demandé.</P> <DT><B>Paramètre</B><DD><P> <DL> <DT><B>sujet</B><DD><P>Le texte du champ <CODE>Subject:</CODE> du message.</P> </DL> </P> </DL> </P> <P></P> <A NAME="email-test-class"></A> <H2>5.4 <A NAME="ss5.4"></A> Email_Test </H2> <P>Cette classe fournit à la fois un exemple d'utilisation de la classe <CODE>Email</CODE> et un programme de test qu'on pourra utiliser pour s'assurer que le package <EM>Java CGI</EM> fonctionne correctement.</P> <H3>Liste des membres </H3> <P> <HR> <PRE> main() // main() du programme </PRE> <HR> </P> <H3>Voir aussi </H3> <P><CODE>Email</CODE>.</P> <H3>main() </H3> <P> <DL> <DT><B>Finalité</B><DD><P>Fournit une méthode <CODE>main()</CODE>.</P> <DT><B>Syntaxe</B><DD><P><CODE>public static void main( String argv[] )</CODE></P> <DT><B>Description</B><DD><P>Il s'agit du point d'entrée d'un programme CGI qui retourne une liste des couples nom/valeur disponibles. Cette liste sera également envoyée à l'adresse spécifiée dans la variable <CODE>Email</CODE>. </P> <DT><B>Paramètre </B><DD><P> <DL> <DT><B>argv<F></F></B><DD><P>Arguments passés au programme par le script <CODE>java.cgi</CODE>. Non utilisé pour l'instant.</P> </DL> </P> </DL> </P> <P></P> <A NAME="html-class"></A> <H2>5.5 <A NAME="ss5.5"></A> HTML </H2> <P></P> <H3>Syntaxe </H3> <P><CODE>public class HTML extends Text</CODE></P> <H3>Description </H3> <P>Les messages sont créés à l'aide des méthodes <CODE>add*()</CODE> de la classe <CODE>Text</CODE> et des méthodes spécifique au HTML ajoutées par cette classe. Une fois terminé, le message est envoyé.</P> <P>Aucun test n'est effectué pour l'instant pour s'asurer que les méthodes de construction de liste sont utilisées dans le bon ordre. C'est donc au programmeur de faire attention à ne pas violer la syntaxe HTML.</P> <P>Cette classe se trouve dans le package "Orbits.net".</P> <H3>Liste des membres </H3> <P> <HR> <PRE> 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. </PRE> <HR> </P> <H3>Voir aussi </H3> <P><CODE>HTML_Test, Text</CODE>.</P> <H3>HTML() </H3> <P> <DL> <DT><B>Finalité</B><DD><P>Construit un objet qui contiendra un message HTML.</P> <DT><B>Syntaxe</B><DD><P><CODE>public HTML()</CODE></P> <DT><B>Description</B><DD><P>Crée un message vide qui sera rempli par les méthodes HTML.</P> <DT><B>Voir aussi</B><DD><P><CODE>Text</CODE>.</P> </DL> </P> <H3>author() </H3> <P> <DL> <DT><B>Finalité</B><DD><P>Initialise le nom de l'auteur du document.</P> <DT><B>Syntaxe</B><DD><P><CODE>public void author ( String auteur )</CODE></P> <DT><B>Description</B><DD><P>Donne au document un nom d'auteur ayant pour valeur <CODE>author</CODE>.</P> <DT><B>Paramètre</B><DD><P> <DL> <DT><B>auteur</B><DD><P>Texte à utiliser en tant que nom d'auteur du message.</P> </DL> </P> <DT><B>Voir aussi</B><DD><P><CODE>title()</CODE>.</P> </DL> </P> <H3>definitionList() </H3> <P> <DL> <DT><B>Finalité</B><DD><P>Crée une liste de définitions.</P> <DT><B>Syntaxe</B><DD><P><CODE>public void definitionList ()</CODE></P> <DT><B>Description</B><DD><P>Initialise une liste de définition. Une <EM>liste de définitions</EM> est une liste spécialisée telle que chaque entrée de la liste soit un <EM>terme</EM> suivi du <EM>texte</EM> correspondant à la définition de ce terme. La création d'une liste de définitions doit être suivie par celle d'au moins un couple terme/texte, et d'un appel à la méthode <CODE>endList()</CODE>. <EM>Notons que, pour le moment, les listes ne peuvent pas être imbriquées.</EM></P> <DT><B>Voir aussi</B><DD><P><CODE>definitionListTerm()</CODE>, <CODE>endList()</CODE>, <CODE>listItem()</CODE>.</P> </DL> </P> <H3>definitionListTerm() </H3> <P> <DL> <DT><B>Finalité</B><DD><P>Ajoute un terme à la liste de définitions.</P> <DT><B>Syntaxe</B><DD><P><CODE>public void definitionListTerm ()</CODE></P> <DT><B>Description</B><DD><P>Ajoute un terme à la liste de définitions. Le texte définissant le partie terme de l'entrée courante de la liste devra être inséré dans le message après l'appel de cette méthode, et avant qu'une méthode <CODE>listItem</CODE> correspondante soit appelée.</P> <DT><B>Voir aussi</B><DD><P><CODE>definitionList()</CODE>, <CODE>listItem()</CODE>.</P> </DL> </P> <H3>endList() </H3> <P> <DL> <DT><B>Finalité</B><DD><P>Termine une liste.</P> <DT><B>Syntaxe</B><DD><P><CODE>public void endList ()</CODE></P> <DT><B>Description</B><DD><P>Cette méthode permet de clore une liste. <EM>Notons que, pour le moment, les listes ne peuvent pas être imbriquées.</EM></P> <DT><B>Voir aussi</B><DD><P><CODE>definitionList()</CODE>.</P> </DL> </P> <H3>listItem() </H3> <P> <DL> <DT><B>Finalité</B><DD><P>Ajoute une entrée à une liste.</P> <DT><B>Syntaxe</B><DD><P><CODE>public void listItem ()</CODE></P> <DT><B></B><DD><P><CODE>public void listItem ( String article )</CODE></P> <DT><B></B><DD><P><CODE>public boolean listItem ( String terme, String article )</CODE></P> <DT><B>Description</B><DD><P>Ajoute une entrée à une liste. Si la première forme est utilisée, le texte de l'article de liste courant devra être ajouté au message après l'appel de cette méthode, et avant tout autre appel à des méthodes de liste. Dans la deuxième et troisième forme, le texte <CODE>article</CODE> est passé comme paramètre à la méthode, au lieu (ou en plus) d'être ajouté au message. La troisième forme est spécifique aux listes de définitions et fournit à la fois le terme et la définition de l'entrée de liste.</P> <DT><B>Paramètres</B><DD><P> <DL> <DT><B>article</B><DD><P>Le texte de cette entrée de liste de définitions.</P> <DT><B>terme</B><DD><P>Le texte de la partie terme de cette entrée de liste de définitions.</P> </DL> </P> <DT><B>Voir aussi</B><DD><P><CODE>definitionList()</CODE>, <CODE>definitionListTerm()</CODE>, <CODE>endList()</CODE>.</P> </DL> </P> <H3>send() </H3> <P> <DL> <DT><B>Finalité</B><DD><P>Envoie le message HTML.</P> <DT><B>Syntaxe</B><DD><P><CODE>public void send ()</CODE></P> <DT><B>Description</B><DD><P>Envoie le message HTML.</P> </DL> </P> <H3>title() </H3> <P> <DL> <DT><B>Finalité</B><DD><P>Donne une valeur au titre du document.</P> <DT><B>Syntaxe</B><DD><P><CODE>public void title ( String titre )</CODE></P> <DT><B>Description</B><DD><P>Initialise le texte du titre du document.</P> <DT><B>Paramètre</B><DD><P> <DL> <DT><B>titre</B><DD><P>Le texte du titre de ce message.</P> </DL> </P> <DT><B>Voir aussi</B><DD><P><CODE>author()</CODE>.</P> </DL> </P> <A NAME="html-test-class"></A> <H2>5.6 <A NAME="ss5.6"></A> HTML_Test </H2> <P>Cette classe offre à la fois un exemple d'utilisation de la classe <CODE>HTML</CODE> et un programme de test qui peu servir à s'assurer que le package <EM>Java CGI</EM> fonctionne correctement.</P> <H3>Liste des membres </H3> <P> <HR> <PRE> main() // main() du programme. </PRE> <HR> </P> <H3>Voir aussi </H3> <P><CODE>HTML</CODE>.</P> <H3>main() </H3> <P> <DL> <DT><B>Finalité</B><DD><P>Fournit une méthode <CODE>main()</CODE>.</P> <DT><B>Syntaxe</B><DD><P><CODE>public static void main( String argv[] )</CODE></P> <DT><B>Description</B><DD><P>Il s'agit du point d'entrée pour un programme CGI qui retourne une liste des couples nom/valeur d'un document HTML, chaque couple étant un élément d'une liste de définitions.</P> <DT><B>Paramètre </B><DD><P> <DL> <DT><B>argv<F></F></B><DD><P>Arguments passés au programme par le script <CODE>java.cgi</CODE> Non utilisé pour l'instant.</P> </DL> </P> </DL> </P> <P></P> <A NAME="text-class"></A> <H2>5.7 <A NAME="ss5.7"></A> Text </H2> <P></P> <H3>Syntaxe </H3> <P><CODE>public abstract class Text</CODE></P> <H3>Description </H3> <P>Cette classe est la superclasse des classes <CODE>Email</CODE> et <CODE>HTML</CODE>. Les messages sont construits à l'aide des méthodes de cette classe, puis complétés et formatés grâce aux méthodes des sous-classes.</P> <P>Cette classe se trouve dans le package "Orbits.text".</P> <H3>Liste des membres </H3> <P> <HR> <PRE> Text() // Constructeur. add() // Ajoute du texte a cet objet. addLineBreak() // Ajoute une rupture de ligne. addParagraph() // Ajoute une rupture de paragraphe. </PRE> <HR> </P> <H3>Voir aussi </H3> <P><CODE>Email</CODE>, <CODE>HTML</CODE>.</P> <H3>add() </H3> <P> <DL> <DT><B>Finalité</B><DD><P>Ajoute du texte à cet article</P> <DT><B>Syntaxe</B><DD><P><CODE>public void add ( char ajout )</CODE></P> <DT><B></B><DD><P><CODE>public void add ( String ajout )</CODE></P> <DT><B></B><DD><P><CODE>public void add ( StringBuffer ajout )</CODE></P> <DT><B>Description</B><DD><P>Ajoute le texte <CODE>ajout</CODE> à la suite du contenu de cet article.</P> <DT><B>Paramètre</B><DD><P> <DL> <DT><B>ajout</B><DD><P>Texte à ajouter.</P> </DL> </P> <DT><B>Voir aussi</B><DD><P><CODE>addLineBreak()</CODE>, <CODE>addParagraph()</CODE>.</P> </DL> </P> <H3>addLineBreak() </H3> <P> <DL> <DT><B>Finalité</B><DD><P>Force une rupture de ligne à cet endroit dans le texte.</P> <DT><B>Syntaxe</B><DD><P><CODE>public void addLineBreak ()</CODE></P> <DT><B>Description</B><DD><P>Insère une rupture de ligne dans le texte, à l'endroit du point courant.</P> <DT><B>Voir aussi</B><DD><P><CODE>add()</CODE>, <CODE>addParagraph()</CODE>.</P> </DL> </P> <H3>addParagraph() </H3> <P> <DL> <DT><B>Finalité</B><DD><P>Débute un nouveau paragraphe.</P> <DT><B>Syntaxe</B><DD><P><CODE>public void add ()</CODE></P> <DT><B>Description</B><DD><P>Débute un nouveau paragraphe à ce point du flot textuel.</P> <DT><B>Voir aussi</B><DD><P><CODE>add()</CODE>, <CODE>addLineBreak()</CODE>.</P> </DL> </P> <P></P> <HR> <P> Chapitre <A HREF="Java-CGI-HOWTO-6.html">suivant</A>, Chapitre <A HREF="Java-CGI-HOWTO-4.html">Précédent</A> <P> Table des matières de <A HREF="Java-CGI-HOWTO.html#toc5">ce chapitre</A>, <A HREF="Java-CGI-HOWTO.html#toc">Table des matières</A> générale</P> <P> <A HREF="Java-CGI-HOWTO.html">Début</A> du document, <A HREF="#0"> Début de ce chapitre</A></P> </BODY> </HTML>