Sophie

Sophie

distrib > Mandriva > 9.2 > i586 > by-pkgid > 70cedc76d223e7bfce9e0ff622b45231 > files > 65

howto-sgml-it-9.2-1mdk.noarch.rpm

<!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 &egrave 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 &egrave stato scritto, il programmatore non ha
un accesso molto semplice alle variabili d'ambiente del sistema.
Inoltre, per le modalit&agrave con cui il Java Development Kit (JDK) &egrave stato costruito, per lanciare un programma &egrave 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&agrave granch&eacute senso.



<sect1>Dove trovare questo Documento
<p>
La versione pi&ugrave recente di questo documento si pu&ograve trovare presso
<htmlurl url="http://www.orbits.com/software/Java&lowbar;CGI.html"
name="http://www.orbits.com/software/Java&lowbar;CGI.html">.



<sect1>Il Pacchetto Software
<p>
La versione pi&ugrave recente del pacchetto software descritto pu&ograve essere
scaricata mediante FTP anonimo presso <htmlurl url="ftp://ftp.orbits.com/pub/software/java&lowbar;cgi-0.4.tgz" name="ftp://ftp.orbits.com/pub/software/java&lowbar;cgi-0.4.tgz">.La distribuzione del pacchetto include anche un sorgente SGML di questo documento.

Il pacchetto &egrave distribuito nei termini della GNU Library General Public License.  Questo documento pu&ograve 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&lowbar;CGI.html" name="http://www.orbits.com/software/Java&lowbar;CGI.html">, cosicch&eacute 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&agrave 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&eacute, 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&agrave di installare qualche altro megabyte di RAM nel vostro server se vorrete usare estensivamente le capacit&agrave dei programmi Java CGI.



<sect1>Il Software Add-On di Java CGI
<p>
Il software di cui ho scritto il codice &egrave; chiamato <em>Java CGI</em>.
Potete scaricarlo dal sito ftp:
<htmlurl url="ftp://www.orbits.com/pub/software/java&lowbar;cgi-0.4.tgz" 
name="ftp://www.orbits.com/pub/software/java&lowbar;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&lowbar;cgi-0.4.tgz | tar -xvf -
</verb>
Questo comando creer&agrave una directory chiamata <tt>java&lowbar;cgi-0.4</tt>. All'interno di questa directory troverete tutti i file a cui far&ograve riferimento nel resto del documento.
(Se il numero della versione &egrave 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>
&egrave 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 &egrave 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&agrave 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&lowbar;Test.class</tt>, <tt>Email&lowbar;Test.class</tt> 
e 
<tt>HTML&lowbar;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&lowbar;cgi-0.4.tgz"
name="ftp://www.orbits.com/pub/software/java&lowbar;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&lowbar;cgi-0.4.tgz | tar -xvf -
</verb>
(Se il numero della versione &egrave 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&lowbar;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&agrave i programmi Java, applicher&agrave le informazioni che avete specificato per il vostro sistema ed installer&agrave 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&lowbar;Test" method="POST">
</verb>
Dove <tt>/cgi-bin/</tt> &egrave la directory locale che avete
specificato per i file binari CGI, <tt>java.cgi</tt> &egrave il
front-end di Java che permette di lanciare programmi Java sul Web e
<tt>CGI&lowbar;Test</tt> &egrave 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 &amp; MIMEout.
<p>
Esistono anche classi di supporto e di test definite nelle sezioni
<ref id="cgi-test-class" name="CGI&lowbar;Test">,
<ref id="email-test-class" name="Email&lowbar;Test"> e
<ref id="email-test-class" name="HTML&lowbar;Test">. L'utilizzo di queste classi &egrave 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> &egrave 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 &egrave 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&lowbar;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&lowbar;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&ograve 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 &egrave 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&lsqb;&rsqb;/ 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 &egrave 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&lowbar;Test, Text</tt>.



<sect2>Email()
<p>
<descrip>
<tag/Obiettivo/ Costruisce un oggetto che conterr&agrave 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&ograve  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> &egrave 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&ugrave di una volta, viene utilizzato il subject pi&ugrave recente.
<tag/Parametri/
 <descrip>
 <tag/subject/ Il testo della riga <tt>Subject:</tt> del messaggio.
 </descrip>
</descrip>



<sect1>Email&lowbar;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 &egrave il punto di ingresso del programma CGI che restituisce una lista delle coppie nomi/valori disponibili e il loro valore attuale.
Invier&agrave anche questa lista agli indirizzi specificati nella variabile <tt>Email</tt>.
<tag>Parametri 
 <descrip>
 <tag/argv&lsqb;&rsqb;/ 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 &egrave 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&lowbar;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> &egrave una particolare lista per la quale ogni elemento di ingresso della lista &egrave <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> &egrave specificato come un parametro al metodo invece di (o in aggiunta) essere accodato al messaggio.
Il terzo form &egrave 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&lowbar;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&ograve 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 &egrave 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&lsqb;&rsqb;/ 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 &egrave 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 &egrave 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 &lsqb;] 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 &lsqb;] 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 &lsqb;] 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&lowbar;Test</tt>, <tt>Email&lowbar;Test</tt> e
<tt>HTML&lowbar;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&agrave
</item>
<item>
Scritta la classe HTML&lowbar;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 &egrave 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> &egrave in <tt>Orbits.text.Text</tt>.
</item>
<item>
Cambiato <tt>CGItest</tt> in <tt>CGI&lowbar;Test</tt>.
</item>
<item>
Aggiunta la classe <tt>Email&lowbar;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>