; TeX output 2003.11.26:1330_2 ~?ՁZ2Iqqecss2074JavafCGIHOwmWTO cG 1 ecrm1000diU DavidH.SilbGerqL ecit1000dhs@orbits.comПӹv0.4,18Novembre1996&6 ecss1000Questo"HOWTOspiegacomecongurareilvostroserverpGeraccogliereprogrammiCGIscrittiinJavaecomeutilizzarel_JavapGerscrivereprogrammi.troQduzione3ؼ1.1%ConoscenzeU necessarie{.荍.......................................w31.2%DoveU trovqarequestoDoGcumentoo.荍..................................w31.3%IlU PacchettoSoftware.荍........................................w31.4%InserzioneU senzaPudore .荍......................................w42Come2^CongurareilV ostroServ>erpQerlanciareProgrammiJav\|aCGI25(conSpiegazioni)D42.1%RequisitiU diSistema}C.荍........................................w42.2%IlU SoftwareAdd-OndiJavqaCGIɍ.荍.................................w42.3%ComeU decomprimereilPacchettoU Sorgente?.荍............................w42.4%LeU DirectorydiInstallazione.荍...................................w42.5%ComeU T*estarel'installazione.)K.荍...................................w53Come\CongurareilV ostroServ>erpQerlanciareProgrammiJav\|aCGI\(formaabbrevi- ata)54ComeEseguireunProgrammaJa>v\|aCGI`54.1%OstacoliU quandosilancianoProgrammiJavqasottoilMoGdelloCGIy鍍.荍..............w5%4.1.1ENonU sipGossonolanciareprogrammiJavqacomenormalieseguibili.[.荍...........w6%4.1.2EConU Javqanonsihaunaccessogeneraleallevariabilid'ambiente.M.荍...........w64.2%SupGerareU iProblemilanciandoProgrammiJavqaCGI0.荍......................w6%4.2.1ELoU scriptjavqa.cgi..荍......................................w6%4.2.2EComeU Utilizzareiljavqa.cgidaunformHTML.ɵ.荍.....................w65UtilizzodelleClassiJa>v\|a.@:65.1%CGI.荍.................................................w7%5.1.1ESintassiU dellaClasse.荍....................................w7%5.1.2EDescrizioneU dellaClasse񍍑.荍..................................w7%5.1.3ESommarioU deimembridellaClasse.荍............................w7*_2 ~?GCONTENTS2ՁV%5.1.4EV*ediU Anchev.荍.........................................w7ؼ%5.1.5ECGI(){.荍............................................w7%5.1.6EgetNames() .荍.........................................w7%5.1.7EgetV*alue() .荍..........................................w85.2%CGI_T*estq).荍..............................................w8%5.2.1ESommarioU deimembridellaClasse.荍............................w8%5.2.2EV*ediU Anchev.荍.........................................w8%5.2.3Emain()9.荍............................................w85.3%EmailP[.荍................................................w9%5.3.1ESintassiU dellaClasse.荍....................................w9%5.3.2EDescrizioneU dellaClasse񍍑.荍..................................w9%5.3.3ESommarioU deimembridellaClasse.荍............................w9%5.3.4EV*ediU Anchev.荍.........................................w9%5.3.5EEmail()nE.荍...........................................w9%5.3.6Esend().荍............................................w9%5.3.7EsendT*o()<э.荍...........................................x?10%5.3.8Esub0ject()u.荍..........................................x?105.4%Email_T*est4󍍑.荍.............................................x?10%5.4.1ESommarioU deimembridellaClasse.荍............................x?10%5.4.2EV*ediU Anchev.荍.........................................x?10%5.4.3Emain()9.荍............................................x?115.5%HTMLۍ.荍................................................x?11%5.5.1ESintassiU dellaClasse.荍....................................x?11%5.5.2EDescrizioneU dellaClasse񍍑.荍..................................x?11%5.5.3ESommarioU deimembridellaClasse.荍............................x?11%5.5.4EV*ediU Anchev.荍.........................................x?11%5.5.5EHTML()ō.荍...........................................x?12%5.5.6Eauthor()5.荍...........................................x?12%5.5.7EdenitionList()D͍.荍.......................................x?12%5.5.8EdenitionListT*erm().荍....................................x?13%5.5.9EendList()|.荍..........................................x?13%5.5.10ElistItem()<ɍ.荍..........................................x?13%5.5.11Esend().荍............................................x?14%5.5.12Etitle().荍............................................x?145.6%HTML_T*est[.荍............................................x?14%5.6.1ESommarioU deimembridellaClasse.荍............................x?14%5.6.2EV*ediU Anchev.荍.........................................x?15"_2 ~?G1.8In>troQduzione~3ՁV%5.6.3Emain()9.荍............................................x?15ؼ5.7%T*ext:ߍ.荍.................................................x?15%5.7.1ESintassiU delleClassiٍ.荍.....................................x?15%5.7.2EDescrizioneU delleClassi0.荍..................................x?15%5.7.3EMembGerU Summaryh鍍.荍.....................................x?15%5.7.4EV*ediU Anchev.荍.........................................x?15%5.7.5Eadd()<.荍............................................x?15%5.7.6EaddLineBreak()am.荍.......................................x?16%5.7.7EaddParagraph().荍.......................................x?166PianiF uturi}r177V arian>ti#18ؼ7.1%V*ariantiU da0.3a0.4}c.荍........................................x?187.2%V*ariantiU da0.2a0.3}c.荍........................................x?187.3%V*ariantiU da0.1a0.2}c.荍........................................x?18(1Inctropduzione:AcausadelmetoGdoconcuiJavqastatoscritto, gilprogrammatorenonhaunaccessomoltosemplicealle vqariabilizd'ambientedelsistema.Inoltre,FpGerlemodalitconcuiilJavqaDevelopmentKit(JDK)Hstatocostruito,XpGerlanciareunprogrammanecessarioutilizzaresegnalimultipli,cosachenonsiaddicemoltoallaMmetoGdologiadioperazionidellostandardHTMLMforms/CGI.Esistonovqarimetodipereliminarequestelimitazioni,U ediohoimplementatounodiquesti.qIlseguitodiquestodoGcumentonespiegatuttiidettagli.#Í!N ecbx12001.1ConoscenzenecessarieMSiJassumecheabbiateunaconoscenzageneraledellinguaggioHTML?edeiconcettilegatialCGIealmenounaJminimaconoscenzadelvostroserverHTTP*.DovresteancheconoscerelaprogrammazioneinJavqaomoltoU diquantoleggeretenonavrgranchsenso.1.2Dovetrov@ arequestoDo_cumentoMLamversionepirecentediquestodoGcumentosiputrovqarepressoHЃ ecti1000http://www.orbits.c}/om/software/Java_CGI.htmlU .1.3IlPacchettoSoftwareMLaNversionepirecentedelpacchettosoftwaredescrittopuesserescaricatamedianteFTPNanonimopressoftp://ftp.orbits.c}/om/pub/software/java_cgi-0.4.tgz-.LadistribuzionedelpacchettoincludeancheunsorgenteSGMLU diquestodoGcumento.ؼIlpacchettodistribuitoneiterminidellaGNULibraryGeneralPublicLicense.yQuestodoGcumentopu򎡍essereU distribuitoneiterminidellanotadicopyrightU degliHOWTOdiLinux.d_2 ~?G2.8ComeCongurareilV ostroServ>erpQerlanciareProgrammiJav\|aCGI(conSpiegazioni)#=4ՁVSeutilizzatequestosoftware,%rendetedispGonibileuncollegamentoallapagina http://www.orbits.c}/om/software/Java_CGI.html,lcosicchaltrepGersonepossanotrovqareleclassiCGIJavqa.#I1.4InserzionesenzaPudoreMQuestodoGcumentovipropostovienegrazieaStellarVOrbitsT ec>hnologyServices.M(VisitateilnostrositoU http://www.orbits.c}/om/pGervederedicosacioccupiamo.)("2Come CongurareilV(ostroServcerpperlanciareProgrammiJavaCGIG\(conSpiegazioni):Questa3sezioneviguidernellainstallazionedeimieipacchettiJavaCGI1conspiegazioniapprofonditepGerfarviOcapirequalisianoglieettidituttelevostreazioni. Sevoletesoloinstallareiprogrammienonviinteressano_tuttiimotiviedipGerch,bsaltateallasezione3(ComeCongurareilV*ostroServerpGerlanciareProgrammiU JavqaCGI(formaabbreviata)).2.1RequisitidiSistemaMQuestoxsoftwaredovrebbGefunzionaresuunqualsiasiwebserverunix-likechehailJavqaDevelopmentKitinstallato.=EIomloutilizzosuunsistemaconDebianLinux읹cheusaap}/achexcomedemoneHTTP*.SenondovessefunzionareU sulvostroserver,contattatemipressodhs@orbits.com?.ؼSfortunatamente,l'interpreterun-timediJavqasembraessereveramenteingordodimemoriapGotresteaverelanecessitdiinstallarequalchealtromegabytediRAMnelvostroserversevorreteusareestensivqamenteleU capacitdeiprogrammiJavqaCGI.2.2IlSoftwareAdd-OndiJav@ aCGIMIljsoftwaredicuihoscrittoilcoGdicechiamatoJavaATCGI.Potetescaricarlodalsitoftp:ftp://www.orbits.c}/om/pub/software/java_cgi-0.4.tgzU .q(IlnumerodellaversionepGotrebbeU esserecambiato).2.3ComedecomprimereilPacchettoSorgenteMSceglieteqoppGortunamenteunadirectoryperdecomprimereilpacchetto.%}(SenonaveteancorassatounpGostostandardEincuiinstallareipacchettisoftware,IsuggeriscodiutilizzareqL ectt1000/usr/local/src.)luPerdecomprimereilU lecontenenteU ladistribuzionesiutilizzailseguentecomando:Ygzip?-dcjava_cgi-0.4.tgz|tar-xvf-Questoscomandocreerunadirectorychiamatajava_cgi-0.4.ͲAll'internodiquestadirectorytroverete tutti\ileacuifarriferimentonelrestodeldoGcumento.T(Seilnumerodellaversionecambiato,consultateleU istruzionicontenuteU nelladistribuzionepGercontinuareU l'installazione).2.4LeDirectorydiInstallazioneMAquestopuntodovetedecideredovevoletecheivostriprogrammiJavqaCGIrisiedano.Generalmentesimettono'inunadirectoryinparalleloconladirectorycgi-bin.CIlmioserverap}/ache[vconguratopGerQ_2 ~?G3.FComeTCongurareilV ostroServ>erpQerlanciareProgrammiJav\|aCGIT(formaabbreviata)5ՁVusare/var/web/cgi-bincomedirectorycgi-bin,pGercuiuso/var/web/javacgicomeladirectoryincui inserirelprogrammiJavqa.ProbabilmentelmegliononmettereivostriprogrammiJavqaCGIlnelledirectoryesistentiI nelCLASSPATH.MoGdicateilMakelepGerfareinmodocheessochesiadattiallaconguraziondelvostrov\|a.>kι6ՁV4.1.1#!\NonsipQossonolanciareprogrammiJa>v\|acomenormalieseguibili.MBisogna9lanciarel'interpreterun-timediJavqaefornirelaclasseiniziale(programmadaeseguire)inlineadi comando.YConunformHTML,nonesistenessunaprecauzionenell'inviareunalineadicomandoalserverweb. 4.1.2#!\ConJa>v\|anonsihaunaccessogeneraleallevariabilid'am>biente.Ognivqariabiled'ambientenecessariaalprogrammaJavadeveesserepassataesplicitamente.Q-NonesisteunmetoGdoU simileallafunzioneCgetenv().#Í4.2Sup_erareiProblemilanciandoProgrammiJav@ aCGIPereliminarequestiostacoli,hoscrittounprogrammaCGIdishellchefornisceleinformazioninecessarieall'interpreteU Javqa. 4.2.1#!\Loscriptja>v\|a.cgi.Questo]iscriptdishellsioGccupadell'interazionetraildemoneHTTP]gdaemoneilprogrammaJavqaCGI]gchedoveteDusare.NEstraeilnomedelprogrammachevoletelanciaredaidatifornitialservereraccoglietuttiidatid'ambienteinunletempGoraneo.~Quindilancial'interpreterun-timediJavqaconilnomedellediinformazioniU d'ambienteeilnomedelprogrammaaggiuntoallalineadicomando.ؼLaJspiegazionedicomevieneconguratoedinstallatoloscriptjava.cgisitrovqanellasezione2.4(LeDirectoryU diInstallazione). 4.2.2#!\ComeUtilizzareilja>v\|a.cgidaunformHTML.IU formscheusanoiprogrammiJavqaCGIspGecicanodelleazionicomediseguitoformalizzato:ؼDoveA/cgi-bin/ladirectoryloGcalecheavetespGecicatoperilebinariCGI,java.cgiilfront-enddi JavqachepGermettedilanciareprogrammiJavqasulW*ebeCGI_TestunesempiodelnomedelprogrammaJavqaU dalanciare.(5UtilizzoG\delleClassiJacva.:AttualmentesonosuppGortatetreclassiprincipalidenitenellesezioni5.1(CGI),5.3(Email)e5.5(HTML).StoconsiderandodiaggiungereleclassipGertrattarel'inputel'outputMIME-formattedrispettivqamenteconMIMEinU &MIMEout.ؼEsistonoXancheclassidisuppGortoeditestdenitenellesezioni5.2(CGI_T*est),5.4(Email_Test)e5.4(HTML_T*est).L'utilizzodiquesteclassistatoconcepitoconloscopGoditestarelavostrainstallazione.Ciononostante&pGossonoessereutilizzatecomepuntodipartenzapGerivostriprogrammiinJavqachefannousodiquestalibreriadiclassi.Laclassedescrittanellasezione5.7(T*ext)lasupGerclasseperentrambeleclassiU EmaileHTML.B_2 ~?G5.8UtilizzodelleClassiJa>v\|a.>kι7ՁV5.1CGIM5.1.1#!\Sin>tassidellaClassepublic?classCGI 5.1.2#!\DescrizionedellaClasseLaPclasseCGI+mantienelavqariabiled'ambienteCGI+InformationimpGostatadalserverwebeilnome/vqalore inviatoDdaunformquandosidecidediselezionarel'azionesubmit.W7T*utteleinformazionisonomemorizzateinU unoggettodellaclasseProperties.ؼQuestaU classenelpacchettoOrbits.net.5.1.3#!\Sommariodeimem>bridellaClasseTffG )`CGI()/= // XCostruttore.)`getNames()// XPrende?lalistadinomi.)`getValue()// XPrende?ilvaloredelformspecificandoilnome. &ffG5.1.4#!\V ediAnc>heMCGI_Test.5.1.5#!\CGI()#Obiettiv>oCostruisceU unoggettochecontieneidatiCGIdispGonibili.Sin>tassipublic?CGI()DescrizioneQuandor^vienecostruitounoggettoCGI,tutteleinformazionidispGonibilivengonoassorbiteedim- magazzinateU loGcalmentealnuovooggetto. 5.1.6#!\getNames()#Obiettiv>oListaU inomichesonodenitipGeraverevqaloricorrispGondenti.Sin>tassipublic?EnumerationgetKeys()DescrizioneF*ornisceU lalistainteradinomepGeriqualisonodenitivqaloricorrispondenti.RestituisceUnaU Enumerazionedituttiinomideniti.\_2 ~?G5.8UtilizzodelleClassiJa>v\|a.>kι8ՁV5.1.7#!\getV alue()#Obiettiv>oRicercaU iv\|aloriassoGciatialnomespecicato.Sin>tassipublic?StringgetValue(Stringname)DescrizioneQuestoU metoGdofornisceunacorrispondenzatranomievaloriinviatidaunformHTML.P>arametriname/LaU chiaveconlaqualeivqalorivengonoselezionati.RestituisceUnaU Stringachecontieneilvqalore.#Í5.2CGI_TestMQuestaclassefornisceunesempiodicomeusarelaclasseCGIedancheunprogrammaditestchepuessere usatoU pGeravereU laconfermacheilpacchettoJavaCGI馹funzionicorrettamente. 5.2.1#!\Sommariodeimem>bridellaClasseTffG )`main()~// XProgramma?main(). &ffG5.2.2#!\V ediAnc>heCGI.5.2.3#!\main()#Obiettiv>oF*ornireU unmetoGdomain().Sin>tassipublic?staticvoidmain(Stringargv[])DescrizioneQuesto6ilpuntodiingressodelprogrammaCGI6Rcherestituisceunalistadellecoppienomi/vqalori dispGonibiliU eillorovqaloreattuale.P>arametriargv[]/ArgomentiU passatialprogrammadalloscriptjava.cgi.qAttualmenteinutilizzato. _2 ~?G5.8UtilizzodelleClassiJa>v\|a.>kι9ՁV5.3EmailM5.3.1#!\Sin>tassidellaClassepublic?classEmailextendsText 5.3.2#!\DescrizionedellaClasseI\ZMessaggi\[sonocostruiticonlaclasseTexteimetoGdiadd*()eimetodispecicie-mail-specicaggiuntia daU questaclasse.qQuandocompleto,ilmessaggiovieneinviatoaisuoidestinatari.ؼQuestaU classecontenutaU nelpacchettoOrbits.net.5.3.3#!\Sommariodeimem>bridellaClasseTffG )`Email()~// XCostruttore.)`send()$// XInvia?unmessaggioe-mail.)`sendTo()>\// XAggiunge?undestinatarioalmessaggio.)`subject()// XImposta?ilSubjectdelmessaggio. &ffG5.3.4#!\V ediAnc>heMEmail_Test,?Text.5.3.5#!\Email()#Obiettiv>oCostruisceU unoggettocheconterrunmessaggioemail.Sin>tassipublic?Email()DescrizioneCostruisceU unmessaggiovuotodacompletaredapartedeimetoGdiEmail.V ediAnc>heText. 5.3.6#!\send()#Obiettiv>oInviaU unmessaggioe-mail.Sin>tassipublic?voidsend()DescrizioneF*ormattaedinviailmessaggio.SenonvienespGecicatounindirizzodidestinazione,GMnonvienein- trapresaU alcunaazione. :_2 ~?G5.8UtilizzodelleClassiJa>v\|a.9l10ՁV5.3.7#!\sendT o()#Obiettiv>oAggiungeU unadestinazionepGerquestomessaggio.Sin>tassipublic?StringsendTo(Stringaddress)DescrizioneAggiungeܼaddressallalistadelledestinazionipGerquestometodo.fNonesistelimitealnumerodi destinataricheunmessaggioe-mailpuavere./ Sonosicurochecostruendounalistaabbastanzagrande,pGotrestefareinmododasuperarelamemoriaoppureeccedereladimensionedellalistadiparametricheU ilvostroA}/gentediT;rasportodellaPostauU ingradodiaccettare.P>arametriaddress/UnaU destinazioneacuiinviareilmessaggio. 5.3.8#!\subject()#Obiettiv>oImpGostaU l'oggetto/sub0jectperquestomessaggio.Sin>tassipublic?voidsubject(Stringsubject)DescrizioneQuesto4metoGdoimpostailtestoperlarigaSubject:`diunmessaggioemail.f~Sevengonochiamatipi diU unavolta,vieneutilizzatoilsub0jectpirecente.P>arametrisubject/IlU testodellarigaSubject:qdelmessaggio.#Í5.4Email_TestMQuestaqZclasseforniscesiaunesempiodicomeutilizzarelaclasseEmailsiaunprogrammaditestpGervericarecheU ilpacchettoJavaCGI馹funzionicorrettamente. 5.4.1#!\Sommariodeimem>bridellaClasseTffG )`main()~// XProgramma?main(). &ffG5.4.2#!\V ediAnc>heEmail. b_2 ~?G5.8UtilizzodelleClassiJa>v\|a.9l11ՁV5.4.3#!\main()#Obiettiv>oF*ornisceU unmetoGdomain().Sin>tassipublic?staticvoidmain(Stringargv[])DescrizioneQuesto6ilpuntodiingressodelprogrammaCGI6Rcherestituisceunalistadellecoppienomi/vqalori dispGonibili&eillorovqaloreattuale.InvieranchequestalistaagliindirizzispGecicatinellavqariabileEmail.P>arametriargv[]/ArgomentiU passatialprogrammadalloscriptjava.cgi.qAttualmenteinutilizzato.#Í5.5HTMLM5.5.1#!\Sin>tassidellaClassepublic?classHTMLextendsText 5.5.2#!\DescrizionedellaClasseI͟MessaggivengonocostruiticonimetoGdiTextclassadd*()edaimetodispecici-HTML͟aggiuntidaquesta classe.qQuandoU completo,ilmessaggiovieneinviatoallesuedestinazioni.ؼAttualmentenonesisteuncontrollodierrorepGeraverelaconfermacheimetoGdidicostruzionedellelistesianoU usatinell'ordinecorretto:qilprogrammatoredeveprestareattenzioneanonviolarelasintassiHTML.QuestaU classenelpacchettoOrbits.net. 5.5.3#!\Sommariodeimem>bridellaClasseTffG HTML()S// XCostruttore.author()I{h// XImposta?ilnomedell'autoredeldocumento.definitionList()~// XAvvia?unadefinitionlist.definitionListTerm() X//Aggiunge?untermineadunadefinitionlist.endList()D;// XTermina?unalista.listItem()>// XAggiunge?unaentrataadunalista.send()S// XInvia?unmessaggioHTML.title()N// XImposta?iltestoperiltitolodeldocumento. &ffG5.5.4#!\V ediAnc>heMHTML_Test,?Text. Đ_2 ~?G5.8UtilizzodelleClassiJa>v\|a.9l12ՁV5.5.5#!\HTML()#Obiettiv>oCostruisceU unoggettochecontieneunmessaggioHTML.Sin>tassipublic?HTML()DescrizioneCostruisceU unmessaggiovuotodacompletareconimetoGdiHTML.V ediAnc>heText. 5.5.6#!\author()#Obiettiv>oImpGostaU ilnomedell'autoredeldocumento.Sin>tassipublic?voidauthor(Stringauthor)DescrizioneImpGostaU ilnomedell'autoredeldocumentoinauthor.P>arametriauthor/IlU testodausarecomeautorediquestomessaggio.V ediAnc>hetitle(). 5.5.7#!\denitionList()#Obiettiv>oAvviaU unadenitionlist.Sin>tassipublic?voiddefinitionList()DescrizioneAvviahunadenitionlist."UnadenitionGlist[unaparticolarelistapGerlaqualeognielementodiingresso dellaсlistatermֹseguitodalladenizionetextJpGerqueltermine.EL'avviodiunadenitionlistdovrebbGeessereseguitodallacreazionedialmenountermine/testoeunachiamataalmetoGdoendList().#Danotar}/eche,attualmente,lelistenonpossonoesserenidicateV ediAnc>hedefinitionListTerm(),U endList(),listItem(). ̒_2 ~?G5.8UtilizzodelleClassiJa>v\|a.9l13ՁV5.5.8#!\denitionListT erm()#Obiettiv>oAggiungeU unterminealladenitionlist.Sin>tassipublic?voiddefinitionListTerm()DescrizioneAggiunge~munterminealladenitionlist.fIltestodell'elementolistacorrentedeveessereappGesoal messaggio;dopGochequestometodovienechiamatoeprimadiuncorrispondentemetodolistItemvengaU chiamato.V ediAnc>hedefinitionList(),U listItem(). 5.5.9#!\endList()#Obiettiv>oT*erminaU unalista.Sin>tassipublic?voidendList()DescrizioneT*erminaunalista.SQuestometoGdoeliminaunalista.Danotar}/echealmomentoattuale,^lelistenon p}/ossonoesserenidicate.V ediAnc>hedefinitionList(). 5.5.10(listItem()#Obiettiv>oAggiungeU unavoGcenellalista.Sin>tassipublic?voidlistItem()public?voidlistItem(Stringitem)public?booleanlistItem(Stringterm,Stringitem)DescrizioneAggiunge\unavoGceallalista.14Sevieneusatoilprimoform,iltestodell'elementolistacorrentedeve essereaccoGdatoalmessaggiodopochequestometodovienechiamatoeprimachevengachiamataognialtralistadimetoGdi.v\|a.9l14ՁVP>arametriitem/IlU testodiquestoingressodilista.term/IlU testodiquestapartedelterminediingressodelladenitionlist.V ediAnc>hedefinitionList(),U definitionListTerm(),endList(). 5.5.11(send()#Obiettiv>oInviaU unmessaggioHTML.Sin>tassipublic?voidsend()DescrizioneInviaU unmessaggioHTML. 5.5.12(title()#Obiettiv>oImpGostaU iltestoperiltitolodeldocumento.Sin>tassipublic?voidtitle(Stringtitle)DescrizioneImpGostaU iltestoperiltitolodeldocumento.P>arametrititle/IlU testodeltitolodeldoGcumento.V ediAnc>heauthor().#Í5.6HTML_TestMQuestag4classeforniscesiaunesempiodicomeusarelaclasseHTMLg/siaunprogrammaditestchepuessere usatoU pGeravereU laconfermacheilpacchettoJavaCGI馹funzionicorrettamente. 5.6.1#!\Sommariodeimem>bridellaClasseTffG )`main()~// XProgramma?main(). &ffGb_2 ~?G5.8UtilizzodelleClassiJa>v\|a.9l15ՁV5.6.2#!\V ediAnc>heMHTML. 5.6.3#!\main()#Obiettiv>oF*ornireU unmetoGdomain().Sin>tassipublic?staticvoidmain(Stringargv[])DescrizioneQuesto6ilpuntodiingressodelprogrammaCGI6Rcherestituisceunalistadellecoppienomi/vqalori dispGonibiliU eillorovqaloreattuale.P>arametriargv[]/ArgomentiU passatialprogrammadallojava.cgi.qAttualmenteinutilizzato.#Í5.7TextM5.7.1#!\Sin>tassidelleClassipublic?abstractclassText 5.7.2#!\DescrizionedelleClassiQuesta)classelasupGerclassedelleclassiEmaileHTML.IMessaggisonocostruiticonimetodidiquesta classeU pGoicompletatieformattaticonimetodidellesottoclassi.ؼQuestaU classecontenutaU nelpacchettoOrbits.text.5.7.3#!\Mem>bQerSummaryffG )`Text()>// XCostruttore.)`add()D;// XAggiunge?testoaquestooggetto.)`addLineBreak()// XAggiunge?unterminatorediriga.)`addParagraph()// XAggiunge?unterminatorediparagrafo. &ffG5.7.4#!\V ediAnc>heMEmail,U HTML.5.7.5#!\add()#Obiettiv>oAggiungeU deltestoaquestoelemento._2 ~?G5.8UtilizzodelleClassiJa>v\|a.9l16ՁVSin>tassipublic?voidadd(charaddition)public?voidadd(Stringaddition)public?voidadd(StringBufferaddition)DescrizioneAggiungeU additionaicontenutiU diquestoelementoditesto.P>arameteraddition/T*estoU daaggiungereall'elementoditesto.V ediAnc>headdLineBreak(),U addParagraph(). 5.7.6#!\addLineBreak()#Obiettiv>oF*orzaU unaterminazionediriganelpuntoesattodeltesto.Sin>tassipublic?voidaddLineBreak()DescrizioneAggiungeU unaterminazionedirigaaltestonelpuntoattuale.V ediAnc>headd(),U addParagraph(). 5.7.7#!\addP>aragraph()#Obiettiv>oCominciaU unnuovoU paragrafo.Sin>tassipublic?voidadd()DescrizioneCominiciaU unnuovoU paragrafoinquestopuntodeltesto.V ediAnc>headd(),U addLineBreak(). _2 ~?G6.8PianiF uturi|]17ՁV6PianiG\F(uturiAggiungereU allaclasseEmail:Email(in>tcapacity)/UsatoU quandoconosciamoquantospazionecessitaalmessaggiopGeressereallocato.sendT o(String[]address)/AggiungeU unalistadidestinazioniprimariealmessaggioe-mail.sendCc(Stringaddress)/AggiungeU unadestinazioneCarbGon-Copyalmessaggioe-mail.sendCc(String[]address)/AggiungeU unalistadidestinazioniCarbGon-Copyalmessaggioe-mail.sendBcc(Stringaddress)/AggiungeU unadestinazioneBlindCarbGon-Copyalmessaggioe-mail.sendBcc(String[]address)/AggiungeU unalistadidestinazioniBlindCarbGon-Copyalmessaggioe-mail.AggiungereU allaclasseHTML:HTML(in>tcapacity)/UsatoU quandoconosciamoquantospazionecessitaalmessaggiopGeressereallocato.publicv>oidunorderedList()/AvviaU unalistanon-ordinata.publicv>oidorderedList()/AvviaU unalistaordinata.publicv>oiddirectoryList()/AvviaU unalistadidirectory*.publicv>oidmenuList()/AvviaU unalistadimenu.v>oidanchor(StringanchorName)/SpGecicaU unanchor.v>oidlink(Stringurl,Stringtext)/SpGecicaU unlink.v>oidapplet(Stringurl,StringaltT ext)/SpGecicaU unlinkadunapplet.PermettereU lanidicazionedellelisteHTML.AggiungereHuncoGdiceacontrollodierroreperrinforzarel'ordinamentocorrettodeicodicidiformat- tazioneU dellelisteHTML.Il^`pGosizionamentodelledeidatid'ambientedeveesserecongurabiletramitelamoGdicadelMakefile.Eliminare lecoppiespuriedinomi/vqalorivuoticheappaiononellalistaquandositrattailmetoGdoditrasferimentoU didatiGET.ConsiderareQdifareinmoGdocheCGItiL18ՁVAggiungereU unaclasseTest,conlaqualeutilizzareognimetoGdodiquestopacchetto.DoGcumentareacomeCGI_Test,REmail_TesteHTML_Testfaccianoadamentol'unosull'altropGerfornire testsU incrementalipGerobiettivididebugging.DoGcumentareU comeT*estutilizziognicaratteristicadisponibileinquestopacchetto.(7V(ariancti荍7.1Variantida0.3a0.4#ButtataU fuorilaclasseHTMLpGerfornireunaminimafunzionalitScrittaU laclasseHTML_T*estejavqahtmltest.html-dist.AggiuntiU imetoGdiHTMLpertrattareconladenitionlist.#Í7.2Variantida0.2a0.3AggiunteU leclassiT*exteEmail.qVieneaggiuntoanchel'HTML,masolouninizio.Raccolte_levqarieclassiinpacchetti.=LeclassiprincipalisonoinOrbits.net.*,laclassedisuppGorto TextU inOrbits.text.Text.CambiatoU CGItestinCGI_Test.AggiuntaU laclasseEmail_Test.#Í7.3Variantida0.1a0.2Levqariabilid'ambientevengonomesseinunletempGoraneoinvecediesserestipateinlineadicomando nell'interpreteU Javqa.qLeclassiCGIejava.cgisonostatemoGdicate.IlU doGcumentojavacgitest.htmldiventapartedelladistribuzione.IrXlerditestochesonomoGdicatidamakedurantel'installazionevengonoforniticonnomicheterminanoconU -distɹ.;_2GHЃ ecti1000!N ecbx1200]f ecbx1000&Lt$ffffecbx14408 ecsi10006 ecss1000qL ecit1000qL ectt1000Iqqecss2074 1 ecrm1000 !", cmsy10i