<!doctype linuxdoc system> <article> <title>Java CGI HOWTO <author>di David H. Silber <tt><htmlurl url="mailto:dhs@orbits.com" name="dhs@orbits.com"></tt> <date>v0.4, 18 Novembre 1996 <abstract> Questo HOWTO spiega come configurare il vostro server per accogliere programmi CGI scritti in Java e come utilizzare Java per scrivere programmi. Nonostante gli HOWTO abbiano come obiettivo l'utilizzo di Linux come sistema operativo, questo documento si rivolge a tutti gli utilizzatori indipendentemente dalla versione di unix usata. La traduzione italiana è stata curata da Luca Rossetti (<htmlurl url="mailto:lukaros@tin.it" name="lukaros@tin.it">). </abstract> <toc> <sect>Introduzione <p> A causa del metodo con cui Java è stato scritto, il programmatore non ha un accesso molto semplice alle variabili d'ambiente del sistema. Inoltre, per le modalità con cui il Java Development Kit (JDK) è stato costruito, per lanciare un programma è necessario utilizzare segnali multipli, cosa che non si addice molto alla metodologia di operazioni dello standard HTML forms/CGI. Esistono vari metodi per eliminare queste limitazioni, ed io ho implementato uno di questi. Il seguito di questo documento ne spiega tutti i dettagli. <sect1>Conoscenze necessarie <p> Si assume che abbiate una conoscenza generale del linguaggio HTML e dei concetti legati al CGI e almeno una minima conoscenza del vostro server HTTP. Dovreste anche conoscere la programmazione in Java o molto di quanto leggerete non avrà granché senso. <sect1>Dove trovare questo Documento <p> La versione più recente di questo documento si può trovare presso <htmlurl url="http://www.orbits.com/software/Java_CGI.html" name="http://www.orbits.com/software/Java_CGI.html">. <sect1>Il Pacchetto Software <p> La versione più recente del pacchetto software descritto può essere scaricata mediante FTP anonimo presso <htmlurl url="ftp://ftp.orbits.com/pub/software/java_cgi-0.4.tgz" name="ftp://ftp.orbits.com/pub/software/java_cgi-0.4.tgz">.La distribuzione del pacchetto include anche un sorgente SGML di questo documento. Il pacchetto è distribuito nei termini della GNU Library General Public License. Questo documento può essere distribuito nei termini della nota di copyright degli HOWTO di Linux. Se utilizzate questo software, rendete disponibile un collegamento alla pagina <htmlurl url="http://www.orbits.com/software/Java_CGI.html" name="http://www.orbits.com/software/Java_CGI.html">, cosicché altre persone possano trovare le classi CGI Java. <sect1>Inserzione senza Pudore <p> Questo documento vi proposto viene grazie a <bf>Stellar Orbits Technology Services</bf>. (Visitate il nostro sito <htmlurl url="http://www.orbits.com/" name="http://www.orbits.com/"> per vedere di cosa ci occupiamo.) <sect>Come Configurare il Vostro Server per lanciare Programmi Java CGI (con Spiegazioni) <label id="install-long"> <p> Questa sezione vi guiderà nella installazione dei miei pacchetti <em>Java CGI</em> con spiegazioni approfondite per farvi capire quali siano gli effetti di tutte le vostre azioni. Se volete solo installare i programmi e non vi interessano tutti i motivi ed i perché, saltate alla sezione <ref id="install-short" name="Come Configurare il Vostro Server per lanciare Programmi Java CGI (forma abbreviata)">. <sect1>Requisiti di Sistema <p> Questo software dovrebbe funzionare su un qualsiasi web server unix-like che ha il Java Development Kit installato. Io lo utilizzo su un sistema con <em>Debian Linux</em> che usa <em>apache</em> come demone HTTP. Se non dovesse funzionare sul vostro server, contattatemi presso <tt><htmlurl url="mailto:dhs@orbits.com" name="dhs@orbits.com"></tt>. Sfortunatamente, l'interprete run-time di Java sembra essere veramente ingordo di memoria -- potreste avere la necessità di installare qualche altro megabyte di RAM nel vostro server se vorrete usare estensivamente le capacità dei programmi Java CGI. <sect1>Il Software Add-On di Java CGI <p> Il software di cui ho scritto il codice è chiamato <em>Java CGI</em>. Potete scaricarlo dal sito ftp: <htmlurl url="ftp://www.orbits.com/pub/software/java_cgi-0.4.tgz" name="ftp://www.orbits.com/pub/software/java_cgi-0.4.tgz">. (Il numero della versione potrebbe essere cambiato). <sect1>Come decomprimere il Pacchetto Sorgente <p> Scegliete opportunamente una directory per decomprimere il pacchetto. (Se non avete ancora fissato un posto standard in cui installare i pacchetti software, suggerisco di utilizzare <tt>/usr/local/src</tt>.) Per decomprimere il file contenente la distribuzione si utilizza il seguente comando: <verb> gzip -dc java_cgi-0.4.tgz | tar -xvf - </verb> Questo comando creerà una directory chiamata <tt>java_cgi-0.4</tt>. All'interno di questa directory troverete tutti i file a cui farò riferimento nel resto del documento. (Se il numero della versione è cambiato, consultate le istruzioni contenute nella distribuzione per continuare l'installazione). <sect1>Le Directory di Installazione <label id="make-programs"> <p> A questo punto dovete decidere dove volete che i vostri programmi Java CGI risiedano. Generalmente si mettono in una directory in parallelo con la directory <tt>cgi-bin</tt>. Il mio server <em>apache</em> è configurato per usare <tt>/var/web/cgi-bin</tt> come directory <tt>cgi-bin</tt>, per cui uso <tt>/var/web/javacgi</tt> come la directory in cui inserire programmi Java. Probabilmente è meglio non mettere i vostri programmi Java CGI nelle directory esistenti nel <tt>CLASSPATH</tt>. Modificate il Makefile per fare in modo che esso che si adatti alla configurazion del vostro sistema. Come root lanciate <tt>make install</tt>. Questo compilerà i programmi Java, modificate lo script <tt>java.cgi</tt> per fare in modo che si adatti al vostro sistema ed installi i programmi nei posti giusti. Se invece volete avere la versione HTML di questo documento e una pagina HTML di test in aggiunta, lanciate <tt>make all</tt>. <sect1>Come Testare l'installazione. <label id="install-test"> <p> Assieme alla distribuzione trovere dei documenti HTML chiamati <tt>javacgitest.html</tt>, <tt>javaemailtest.html</tt> e <tt>javahtmltest.html</tt>. Se avete installato tutto con <tt>make all</tt> come menzionato nella sezione precedente, i documenti saranno nella directory che avete specificato come WEBDIR nel <tt>Makefile</tt>. Se non lo avete fatto, potrete lanciare <tt>make test</tt> per costruirli da <tt>javacgitest.html-dist</tt>, <tt>javaemailtest.html-dist</tt> e <tt>javahtmltest.html-dist</tt>. Quando siete sicuri che la vostra installazione sia andata a buon fine, potrete decidere se rimuovere <tt>CGI_Test.class</tt>, <tt>Email_Test.class</tt> e <tt>HTML_Test.class</tt> dalla vostra directory JAVACGI e <tt>javacgitest.html</tt>, <tt>javaemailtest.html</tt> e <tt>javahtmltest.html</tt> dalla vostra directory WEBDIR visto che essi mostrano alcune informazioni relative all'utente che sono normalmente disponibili solo al server. <sect>Come Configurare il Vostro Server per lanciare Programmi Java CGI (forma abbreviata) <label id="install-short"> <p> <itemize> <item> Scaricate il pacchetto <em>Java CGI</em> dal sito ftp <htmlurl url="ftp://www.orbits.com/pub/software/java_cgi-0.4.tgz" name="ftp://www.orbits.com/pub/software/java_cgi-0.4.tgz">. (Il numero della versione potrebbe essere cambiato). </item> <item> Decomprimete il file contenente la distribuzione utilizzando il comando: <verb> gzip -dc java_cgi-0.4.tgz | tar -xvf - </verb> (Se il numero della versione è cambiato, consultate le istruzioni contenute nella distribuzione per continuare l'installazione). </item> <item> Controllate il contenuto del <tt>Makefile</tt> che troverete all'interno della directory <tt>java_cgi-0.4</tt> appena creata e modificatelo opportunamente per il vostro sistema. </item> <item> Come root, lanciate <tt>make install</tt>. Questo comando compilerà i programmi Java, applicherà le informazioni che avete specificato per il vostro sistema ed installerà tutti i file. Se invece desiderate consultare la documentazione in formato HTML e visionare un documento HTML di test, lanciate <tt>make all</tt>. </item> <item> Giunti a questo punto dovreste essere pronti per iniziare. </item> </itemize> <sect>Come Eseguire un Programma Java CGI <p> <sect1>Ostacoli quando si lanciano Programmi Java sotto il Modello CGI <p> Esistono due problemi principali nel lanciare un programma Java da un server Web: <sect2>Non si possono lanciare programmi Java come normali eseguibili. <p> Bisogna lanciare l'interprete run-time di Java e fornire la classe iniziale (programma da eseguire) in linea di comando. Con un form HTML, non esiste nessuna precauzione nell'inviare una linea di comando al server web. <sect2>Con Java non si ha un accesso generale alle variabili d'ambiente. <p> Ogni variabile d'ambiente necessaria al programma Java deve essere passata esplicitamente. Non esiste un metodo simile alla funzione <bf>C</bf> <tt>getenv()</tt>. <sect1>Superare i Problemi lanciando Programmi Java CGI <p> Per eliminare questi ostacoli, ho scritto un programma CGI di shell che fornisce le informazioni necessarie all'interprete Java. <sect2>Lo script java.cgi. <p> Questo script di shell si occupa dell'interazione tra il demone HTTP daemon e il programma Java CGI che dovete usare. Estrae il nome del programma che volete lanciare dai dati forniti al server e raccoglie tutti i dati d'ambiente in un file temporaneo. Quindi lancia l'interprete run-time di Java con il nome del file di informazioni d'ambiente e il nome del programma aggiunto alla linea di comando. La spiegazione di come viene configurato ed installato lo script <tt>java.cgi</tt> si trova nella sezione <ref id="make-programs" name="Le Directory di Installazione">. <sect2>Come Utilizzare il java.cgi da un form HTML. <p> I forms che usano i programmi Java CGI specificano delle azioni come di seguito formalizzato: <verb> <form action="/cgi-bin/java.cgi/CGI_Test" method="POST"> </verb> Dove <tt>/cgi-bin/</tt> è la directory locale che avete specificato per i file binari CGI, <tt>java.cgi</tt> è il front-end di Java che permette di lanciare programmi Java sul Web e <tt>CGI_Test</tt> è un esempio del nome del programma Java da lanciare. <sect>Utilizzo delle Classi Java. <p> Attualmente sono supportate tre classi principali definite nelle sezioni <ref id="cgi-class" name="CGI">, <ref id="email-class" name="Email"> e <ref id="html-class" name="HTML">. Sto considerando di aggiungere le classi per trattare l'input e l'output MIME-formatted rispettivamente con MIMEin & MIMEout. <p> Esistono anche classi di supporto e di test definite nelle sezioni <ref id="cgi-test-class" name="CGI_Test">, <ref id="email-test-class" name="Email_Test"> e <ref id="email-test-class" name="HTML_Test">. L'utilizzo di queste classi è stato concepito con lo scopo di testare la vostra installazione. Ciononostante possono essere utilizzate come punto di partenza per i vostri programmi in Java che fanno uso di questa libreria di classi. La classe descritta nella sezione <ref id="text-class" name=Text> è la superclasse per entrambe le classi <tt>Email</tt> e <tt>HTML</tt>. <sect1>CGI<label id="cgi-class"> <p> <sect2>Sintassi della Classe <p> <tt>public class CGI</tt> <sect2>Descrizione della Classe <p> La classe CGI mantiene la variabile d'ambiente ``CGI Information'' impostata dal server web e il nome/valore inviato da un form quando si decide di selezionare l'azione <bf>submit</bf>. Tutte le informazioni sono memorizzate in un oggetto della classe <tt>Properties</tt>. Questa classe è nel pacchetto ``Orbits.net''. <sect2>Sommario dei membri della Classe <p> <code> CGI() // Costruttore. getNames() // Prende la lista di nomi. getValue() // Prende il valore del form specificando il nome. </code> <sect2>Vedi Anche <p> <tt>CGI_Test</tt>. <sect2>CGI() <p> <descrip> <tag/Obiettivo/ Costruisce un oggetto che contiene i dati CGI disponibili. <tag/Sintassi/ <tt>public CGI()</tt> <tag/Descrizione/ Quando viene costruito un oggetto CGI, tutte le informazioni disponibili vengono assorbite ed immagazzinate localmente al nuovo oggetto. </descrip> <sect2>getNames() <p> <descrip> <tag/Obiettivo/ Lista i nomi che sono definiti per avere valori corrispondenti. <tag/Sintassi/ <tt>public Enumeration getKeys ()</tt> <tag/Descrizione/ Fornisce la lista intera di nome per i quali sono definiti valori corrispondenti. <tag/Restituisce/ Una <tt>Enumerazione</tt> di tutti i nomi definiti. </descrip> <sect2>getValue() <p> <descrip> <tag/Obiettivo/ Ricerca i <bf>valori</bf> associati al <bf>nome</bf> specificato. <tag/Sintassi/ <tt>public String getValue ( String name )</tt> <tag/Descrizione/ Questo metodo fornisce una corrispondenza tra <tt>nomi</tt> e <tt>valori</tt> inviati da un form HTML. <tag/Parametri/ <descrip> <tag/name/ La chiave con la quale i valori vengono selezionati. </descrip> <tag/Restituisce/ Una <tt>Stringa</tt> che contiene il valore. </descrip> <sect1>CGI_Test<label id="cgi-test-class"> <p> Questa classe fornisce un esempio di come usare la classe <tt>CGI</tt> ed anche un programma di test che può essere usato per avere la conferma che il pacchetto <em>Java CGI</em> funzioni correttamente. <sect2>Sommario dei membri della Classe <p> <code> main() // Programma main(). </code> <sect2>Vedi Anche <p> <tt>CGI</tt>. <sect2>main() <p> <descrip> <tag/Obiettivo/ Fornire un metodo <tt>main()</tt>. <tag/Sintassi/ <tt>public static void main( String argv[] )</tt> <tag/Descrizione/ Questo è il punto di ingresso del programma CGI che restituisce una lista delle coppie nomi/valori disponibili e il loro valore attuale. <tag>Parametri <descrip> <tag/argv[]/ Argomenti passati al programma dallo script <tt>java.cgi</tt>. Attualmente inutilizzato. </descrip> </descrip> <sect1>Email<label id="email-class"> <p> <sect2>Sintassi della Classe <p> <tt>public class Email extends Text</tt> <sect2>Descrizione della Classe <p> I Messaggi sono costruiti con la classe <tt>Text</tt> e i metodi <tt>add*()</tt> e i metodi specifici e-mail-specific aggiunti a da questa classe. Quando completo, il messaggio viene inviato ai suoi destinatari. Questa classe è contenuta nel pacchetto ``Orbits.net''. <sect2>Sommario dei membri della Classe <p> <code> Email() // Costruttore. send() // Invia un messaggio e-mail. sendTo() // Aggiunge un destinatario al messaggio. subject() // Imposta il Subject del messaggio. </code> <sect2>Vedi Anche <p> <tt>Email_Test, Text</tt>. <sect2>Email() <p> <descrip> <tag/Obiettivo/ Costruisce un oggetto che conterrà un messaggio email. <tag/Sintassi/ <tt>public Email()</tt> <tag/Descrizione/ Costruisce un messaggio vuoto da completare da parte dei metodi Email. <tag/Vedi Anche/ <tt>Text</tt>. </descrip> <sect2>send() <p> <descrip> <tag/Obiettivo/ Invia un messaggio e-mail. <tag/Sintassi/ <tt>public void send ()</tt> <tag/Descrizione/ Formatta ed invia il messaggio. Se non viene specificato un indirizzo di destinazione, non viene intrapresa alcuna azione. </descrip> <sect2>sendTo() <p> <descrip> <tag/Obiettivo/ Aggiunge una destinazione per questo messaggio. <tag/Sintassi/ <tt>public String sendTo ( String address )</tt> <tag/Descrizione/ Aggiunge <tt>address</tt> alla lista delle destinazioni per questo metodo. Non esiste limite al numero di destinatari che un messaggio e-mail può avere. Sono sicuro che costruendo una lista abbastanza grande, potreste fare in modo da superare la memoria oppure eccedere la dimensione della lista di parametri che il vostro <em>Agente di Trasporto della Posta</em> è in grado di accettare. <tag/Parametri/ <descrip> <tag/address/ Una destinazione a cui inviare il messaggio. </descrip> </descrip> <sect2>subject() <p> <descrip> <tag/Obiettivo/ Imposta l'oggetto/subject per questo messaggio. <tag/Sintassi/ <tt>public void subject ( String subject )</tt> <tag/Descrizione/ Questo metodo imposta il testo per la riga <tt>Subject:</tt> di un messaggio email. Se vengono chiamati più di una volta, viene utilizzato il subject più recente. <tag/Parametri/ <descrip> <tag/subject/ Il testo della riga <tt>Subject:</tt> del messaggio. </descrip> </descrip> <sect1>Email_Test<label id="email-test-class"> <p> Questa classe fornisce sia un esempio di come utilizzare la classe <tt>Email</tt> sia un programma di test per verificare che il pacchetto <em>Java CGI</em> funzioni correttamente. <sect2>Sommario dei membri della Classe <p> <code> main() // Programma main(). </code> <sect2>Vedi Anche <p> <tt>Email</tt>. <sect2>main() <p> <descrip> <tag/Obiettivo/ Fornisce un metodo <tt>main()</tt>. <tag/Sintassi/ <tt>public static void main( String argv[] )</tt> <tag/Descrizione/ Questo è il punto di ingresso del programma CGI che restituisce una lista delle coppie nomi/valori disponibili e il loro valore attuale. Invierà anche questa lista agli indirizzi specificati nella variabile <tt>Email</tt>. <tag>Parametri <descrip> <tag/argv[]/ Argomenti passati al programma dallo script <tt>java.cgi</tt>. Attualmente inutilizzato. </descrip> </descrip> <sect1>HTML<label id="html-class"> <p> <sect2>Sintassi della Classe <p> <tt>public class HTML extends Text</tt> <sect2>Descrizione della Classe <p> I Messaggi vengono costruiti con i metodi <tt>Text</tt> class <tt>add*()</tt> e dai metodi specifici-HTML aggiunti da questa classe. Quando completo, il messaggio viene inviato alle sue destinazioni. Attualmente non esiste un controllo di errore per avere la conferma che i metodi di costruzione delle liste siano usati nell'ordine corretto: il programmatore deve prestare attenzione a non violare la sintassi HTML. Questa classe è nel pacchetto ``Orbits.net''. <sect2>Sommario dei membri della Classe <p> <code> HTML() // Costruttore. author() // Imposta il nome dell'autore del documento. definitionList() // Avvia una definition list. definitionListTerm() // Aggiunge un termine ad una definition list. endList() // Termina una lista. listItem() // Aggiunge una entrata ad una lista. send() // Invia un messaggio HTML. title() // Imposta il testo per il titolo del documento. </code> <sect2>Vedi Anche <p> <tt>HTML_Test, Text</tt>. <sect2>HTML() <p> <descrip> <tag/Obiettivo/ Costruisce un oggetto che contiene un messaggio HTML. <tag/Sintassi/ <tt>public HTML()</tt> <tag/Descrizione/ Costruisce un messaggio vuoto da completare con i metodi HTML. <tag/Vedi Anche/ <tt>Text</tt>. </descrip> <sect2>author() <p> <descrip> <tag/Obiettivo/ Imposta il nome dell'autore del documento. <tag/Sintassi/ <tt>public void author ( String author )</tt> <tag/Descrizione/ Imposta il nome dell'autore del documento in <tt>author</tt>. <tag/Parametri/ <descrip> <tag/author/ Il testo da usare come autore di questo messaggio. </descrip> <tag/Vedi Anche/ <tt>title()</tt>. </descrip> <sect2>definitionList() <p> <descrip> <tag/Obiettivo/ Avvia una definition list. <tag/Sintassi/ <tt>public void definitionList ()</tt> <tag/Descrizione/ Avvia una definition list. Una <em>definition list</em> è una particolare lista per la quale ogni elemento di ingresso della lista è <em>term</em> seguito dalla definizione <em>text</em> per quel termine. L'avvio di una definition list dovrebbe essere seguito dalla creazione di almeno un termine/testo e una chiamata al metodo <tt>endList()</tt>. <em>Da notare che, attualmente, le liste non possono essere nidificate</em> <tag/Vedi Anche/ <tt>definitionListTerm()</tt>, <tt>endList()</tt>, <tt>listItem()</tt>. </descrip> <sect2>definitionListTerm() <p> <descrip> <tag/Obiettivo/ Aggiunge un termine alla definition list. <tag/Sintassi/ <tt>public void definitionListTerm ()</tt> <tag/Descrizione/ Aggiunge un termine alla definition list. Il testo dell'elemento lista corrente deve essere appeso al messaggio dopo che questo metodo viene chiamato e prima di un corrispondente metodo <tt>listItem</tt> venga chiamato. <tag/Vedi Anche/ <tt>definitionList()</tt>, <tt>listItem()</tt>. </descrip> <sect2>endList() <p> <descrip> <tag/Obiettivo/ Termina una lista. <tag/Sintassi/ <tt>public void endList ()</tt> <tag/Descrizione/ Termina una lista. Questo metodo elimina una lista. <em>Da notare che al momento attuale, le liste non possono essere nidificate.</em> <tag/Vedi Anche/ <tt>definitionList()</tt>. </descrip> <sect2>listItem() <p> <descrip> <tag/Obiettivo/ Aggiunge una voce nella lista. <tag/Sintassi/ <tt>public void listItem ()</tt> <tag// <tt>public void listItem ( String item )</tt> <tag// <tt>public boolean listItem ( String term, String item )</tt> <tag/Descrizione/ Aggiunge una voce alla lista. Se viene usato il primo form, il testo dell'elemento lista corrente deve essere accodato al messaggio dopo che questo metodo viene chiamato e prima che venga chiamata ogni altra lista di metodi. Nel secondo e terzo form, il testo <tt>item</tt> è specificato come un parametro al metodo invece di (o in aggiunta) essere accodato al messaggio. Il terzo form è specifico per le definition lists e fornisce sia i termini che una definizione dell'ingresso della lista. <tag/Parametri/ <descrip> <tag/item/ Il testo di questo ingresso di lista. <tag/term/ Il testo di questa parte del termine di ingresso della definition list. </descrip> <tag/Vedi Anche/ <tt>definitionList()</tt>, <tt>definitionListTerm()</tt>, <tt>endList()</tt>. </descrip> <sect2>send() <p> <descrip> <tag/Obiettivo/ Invia un messaggio HTML. <tag/Sintassi/ <tt>public void send ()</tt> <tag/Descrizione/ Invia un messaggio HTML. </descrip> <sect2>title() <p> <descrip> <tag/Obiettivo/ Imposta il testo per il titolo del documento. <tag/Sintassi/ <tt>public void title ( String title )</tt> <tag/Descrizione/ Imposta il testo per il titolo del documento. <tag/Parametri/ <descrip> <tag/title/ Il testo del titolo del documento. </descrip> <tag/Vedi Anche/ <tt>author()</tt>. </descrip> <sect1>HTML_Test<label id="html-test-class"> <p> Questa classe fornisce sia un esempio di come usare la classe <tt>HTML</tt> sia un programma di test che può essere usato per avere la conferma che il pacchetto <em>Java CGI</em> funzioni correttamente. <sect2>Sommario dei membri della Classe <p> <code> main() // Programma main(). </code> <sect2>Vedi Anche <p> <tt>HTML</tt>. <sect2>main() <p> <descrip> <tag/Obiettivo/ Fornire un metodo <tt>main()</tt>. <tag/Sintassi/ <tt>public static void main( String argv[] )</tt> <tag/Descrizione/ Questo è il punto di ingresso del programma CGI che restituisce una lista delle coppie nomi/valori disponibili e il loro valore attuale. <tag>Parametri <descrip> <tag/argv[]/ Argomenti passati al programma dallo <tt>java.cgi</tt>. Attualmente inutilizzato. </descrip> </descrip> <sect1>Text<label id="text-class"> <p> <sect2>Sintassi delle Classi <p> <tt>public abstract class Text</tt> <sect2>Descrizione delle Classi <p> Questa classe è la superclasse delle classi <tt>Email</tt> e <tt>HTML</tt>. I Messaggi sono costruiti con i metodi di questa classe poi completati e formattati con i metodi delle sottoclassi. Questa classe è contenuta nel pacchetto ``Orbits.text''. <sect2>Member Summary <p> <code> Text() // Costruttore. add() // Aggiunge testo a questo oggetto. addLineBreak() // Aggiunge un terminatore di riga. addParagraph() // Aggiunge un terminatore di paragrafo. </code> <sect2>Vedi Anche <p> <tt>Email</tt>, <tt>HTML</tt>. <sect2>add() <p> <descrip> <tag/Obiettivo/ Aggiunge del testo a questo elemento. <tag/Sintassi/ <tt>public void add ( char addition )</tt> <tag// <tt>public void add ( String addition )</tt> <tag// <tt>public void add ( StringBuffer addition )</tt> <tag/Descrizione/ Aggiunge <tt>addition</tt> ai contenuti di questo elemento di testo. <tag/Parameter/ <descrip> <tag/addition/ Testo da aggiungere all'elemento di testo. </descrip> <tag/Vedi Anche/ <tt>addLineBreak()</tt>, <tt>addParagraph()</tt>. </descrip> <sect2>addLineBreak() <p> <descrip> <tag/Obiettivo/ Forza una terminazione di riga nel punto esatto del testo. <tag/Sintassi/ <tt>public void addLineBreak ()</tt> <tag/Descrizione/ Aggiunge una terminazione di riga al testo nel punto attuale. <tag/Vedi Anche/ <tt>add()</tt>, <tt>addParagraph()</tt>. </descrip> <sect2>addParagraph() <p> <descrip> <tag/Obiettivo/ Comincia un nuovo paragrafo. <tag/Sintassi/ <tt>public void add ()</tt> <tag/Descrizione/ Cominicia un nuovo paragrafo in questo punto del testo. <tag/Vedi Anche/ <tt>add()</tt>, <tt>addLineBreak()</tt>. </descrip> <sect>Piani Futuri <p> <itemize> <item> Aggiungere alla classe Email: <descrip> <tag/Email( int capacity )/ Usato quando conosciamo quanto spazio necessita al messaggio per essere allocato. <tag/sendTo( String [] address )/ Aggiunge una lista di destinazioni primarie al messaggio e-mail. <tag/sendCc( String address )/ Aggiunge una destinazione Carbon-Copy al messaggio e-mail. <tag/sendCc( String [] address )/ Aggiunge una lista di destinazioni Carbon-Copy al messaggio e-mail. <tag/sendBcc( String address )/ Aggiunge una destinazione Blind Carbon-Copy al messaggio e-mail. <tag/sendBcc( String [] address )/ Aggiunge una lista di destinazioni Blind Carbon-Copy al messaggio e-mail. </descrip> </item> <item> Aggiungere alla classe HTML: <descrip> <tag/HTML( int capacity )/ Usato quando conosciamo quanto spazio necessita al messaggio per essere allocato. <tag/public void unorderedList()/ Avvia una lista non-ordinata. <tag/public void orderedList()/ Avvia una lista ordinata. <tag/public void directoryList()/ Avvia una lista di directory. <tag/public void menuList()/ Avvia una lista di menu. <tag/void anchor( String anchorName )/ Specifica un anchor. <tag/void link( String url, String text )/ Specifica un link. <tag/void applet( String url, String altText )/ Specifica un link ad un applet. </descrip> </item> <item> Permettere la nidificazione delle liste HTML. </item> <item> Aggiungere un codice a controllo di errore per rinforzare l'ordinamento corretto dei codici di formattazione delle liste HTML. </item> <item> Il posizionamento del file dei dati d'ambiente deve essere configurabile tramite la modifica del <tt>Makefile</tt>. </item> <item> Eliminare le coppie spurie di nomi/valori vuoti che appaiono nella lista quando si tratta il metodo di trasferimento di dati GET. </item> <item> Considerare di fare in modo che CGI implementi l'interfaccia java.util.Enumeration per fornire successivamente i nomi delle variabili. </item> <item> Aggiungere una classe <tt>Test</tt>, con la quale utilizzare ogni metodo di questo pacchetto. </item> <item> Documentare come <tt>CGI_Test</tt>, <tt>Email_Test</tt> e <tt>HTML_Test</tt> facciano affidamento l'uno sull'altro per fornire tests incrementali per obiettivi di debugging. </item> <item> Documentare come Test utilizzi ogni caratteristica disponibile in questo pacchetto. </item> </itemize> <sect>Varianti <p> <sect1>Varianti da 0.3 a 0.4 <p> <itemize> <item> Buttata fuori la classe HTML per fornire una minima funzionalità </item> <item> Scritta la classe HTML_Test e javahtmltest.html-dist. </item> <item> Aggiunti i metodi HTML per trattare con la definition list. </item> </itemize> <sect1>Varianti da 0.2 a 0.3 <p> <itemize> <item> Aggiunte le classi Text e Email. Viene aggiunto anche l'HTML, ma è solo un inizio. </item> <item> Raccolte le varie classi in pacchetti. Le classi principali sono in <tt>Orbits.net.*</tt>, la classe di supporto <tt>Text</tt> è in <tt>Orbits.text.Text</tt>. </item> <item> Cambiato <tt>CGItest</tt> in <tt>CGI_Test</tt>. </item> <item> Aggiunta la classe <tt>Email_Test</tt>. </item> </itemize> <sect1>Varianti da 0.1 a 0.2 <p> <itemize> <item> Le variabili d'ambiente vengono messe in un file temporaneo invece di essere stipate in linea di comando nell'interprete Java. Le classi <tt>CGI</tt> e <tt>java.cgi</tt> sono state modificate. </item> <item> Il documento <tt>javacgitest.html</tt> diventa parte della distribuzione. </item> <item> I file di testo che sono modificati da <tt>make</tt> durante l'installazione vengono forniti con nomi che terminano con <em>-dist</em>. </item> </itemize> </article>