Åëëçíéêü Java CGI HOWTO David H. Silber javacgi-document@orbits.com v0.5, 1 Äåêåìâñßïõ 1998 Áõôü ôï Ýããñáöï HOWTO åîçãåß ðþò íá ñõèìßóåôå ôï äéáêïìéóôÞ óáò þóôå íá åðéôñÝðåé ðñïãñÜììáôá CGI ãñáììÝíá óå Java êáé ðþò íá ÷ñçóéìïðïéÞóåôå ôç Java óôï íá ãñÜöåôå ðñïãñÜììáôá CGI. Áí êáé áõôÜ ôá HOWTO Ýããñáöá óôï÷åýïõí óå ÷ñÞóç ìå ôï ëåéôïõñãéêü óýóôçìá Linux, áõôü ôï óõãêåêñéìÝíï äåí åßíáé åîáñôþìåíï áðü ôç óõãêåêñéìÝíç Ýêäïóç ôïõ Unix ðïõ ÷ñçóéìïðïéåßôå. ______________________________________________________________________ Table of Contents 1. ÅéóáãùãÞ 1.1 ÐñïãåíÝóôåñç Ãíþóç 1.2 Áõôü ôï ¸ããñáöï 1.3 Ôï ðáêÝôï 1.4 Ç Ëßóôá Ôá÷õäñïìåßïõ 2. Ñõèìßæïíôáò ôï ÄéáêïìéóôÞ óáò íá ôñÝ÷åé ðñïãñÜììáôá Java CGI (ìå åðåîçãÞóåéò) 2.1 ÁðáéôÞóåéò ÓõóôÞìáôïò 2.2 Åðéðñüóèåôï Ëïãéóìéêü Java CGI 2.3 ÎåðáêåôÜñïíôáò ôïí ðçãáßï êþäéêá 2.4 Áðïöáóßóôå ãéá ôéò ðïëéôéêÝò ôïðéêþí äéáäñïìþí óáò 2.5 ÅëÝã÷ïíôáò ôçí åãêáôÜóôáóÞ óáò 3. Ñõèìßæïíôáò ôïí ÄéáêïìéóôÞ óáò íá ôñÝ÷åé ðñïãñÜììáôá Java CGI (ï óýíôïìïò ôñüðïò) 4. Åêôåëþíôáò Ýíá ðñüãñáììá Java CGI 4.1 Åìðüäéá óôï ôñÝîéìï ðñïãñáììÜôùí Java êÜôù áðü ôï ìïíôÝëï CGI 4.1.1 Äåí ìðïñåßôå íá ôñÝîåôå ðñïãñÜììáôá Java üðùò ôá êáíïíéêÜ åêôåëÝóéìá. 4.1.2 Ç Java äåí Ý÷åé ãåíéêÞ ðñüóâáóç óôï ðåñéâÜëëïí. 4.2 Îåðåñíþíôáò ðñïâëÞìáôá óôï ôñÝîéìï ðñïãñáììÜôùí Java CGI 4.2.1 Ôï java.cgi script 4.2.2 Êáëþíôáò ôï java.cgi áðü ìßá öüñìá HTML 5. ×ñçóéìïðïéþíôáò ôéò Java CGI ÊëÜóåéò 5.1 CGI 5.1.1 Óýíôáîç êëÜóçò 5.1.2 ÐåñéãñáöÞ êëÜóçò 5.1.3 Ðåñßëçøç ìåëþí 5.1.4 Äåßôå åðßóçò 5.1.5 CGI() 5.1.6 getNames() 5.1.7 getValue() 5.2 CGI_Test 5.2.1 Ðåñßëçøç ìåëþí 5.2.2 Äåßôå åðßóçò 5.2.3 main() 5.3 Email 5.3.1 Óýíôáîç ÊëÜóçò 5.3.2 ÐåñéãñáöÞ êëÜóçò 5.3.3 Ðåñßëçøç ìåëþí 5.3.4 Äåßôå åðßóçò 5.3.5 Email() 5.3.6 send() 5.3.7 sendTo() 5.3.8 subject() 5.4 Email_Test 5.4.1 Ðåñßëçøç ìåëþí 5.4.2 Äåßôå åðßóçò 5.4.3 main() 5.5 HTML 5.5.1 Óýíôáîç êëÜóçò 5.5.2 ÐåñéãñáöÞ êëÜóçò 5.5.3 Ðåñßëçøç ìåëþí 5.5.4 Äåßôå åðßóçò 5.5.5 HTML() 5.5.6 author() 5.5.7 definitionList() 5.5.8 definitionListTerm() 5.5.9 endList() 5.5.10 listItem() 5.5.11 send() 5.5.12 title() 5.6 HTML_Test 5.6.1 Ðåñßëçøç ìåëþí 5.6.2 Äåßôå åðßóçò 5.6.3 main() 5.7 Text 5.7.1 Óýíôáîç êëÜóçò 5.7.2 ÐåñéãñáöÞ êëÜóçò 5.7.3 Ðåñßëçøç ìåëþí 5.7.4 Äåßôå åðßóçò 5.7.5 add() 5.7.6 addLineBreak() 5.7.7 addParagraph() 6. ÌåëëïíôéêÜ Ó÷Ýäéá 7. ÁëëáãÝò 7.1 ÁëëáãÝò áðü ôçí 0.4 óôçí 0.5 7.2 ÁëëáãÝò áðü ôçí 0.3 óôçí 0.4 7.3 ÁëëáãÝò áðü ôçí 0.2 óôçí 0.3 7.4 ÁëëáãÝò áðü ôçí 0.1 óôçí 0.2 ______________________________________________________________________ [1m1. ÅéóáãùãÞ[0m Åîáéôßáò ôïõ ôñüðïõ ðïõ ç Java åßíáé ó÷åäéáóìÝíç, ï ðñïãñáììáôéóôÞò äåí Ý÷åé åýêïëç ðñüóâáóç óôéò ìåôáâëçôÝò ðåñéâÜëëïíôïò ôïõ óõóôÞìáôïò. Åîáéôßáò ôïõ ôñüðïõ ðïõ åßíáé ñõèìéóìÝíï ôï Java Development Kit (JDK), åßíáé áíáãêáßï íá ÷ñçóéìïðïéåßôå ðïëëáðëÜ óýìâïëá ãéá íá êáëåßôå Ýíá ðñüãñáììá, ôï ïðïßï äåí êïëëÜåé êáé ðïëý êáëÜ ìå ôïí ôõðéêü ôñüðï ëåéôïõñãéþí ìå öüñìåò/CGI ôçò HTML. ÕðÜñ÷ïõí ôñüðïé áíôéìåôþðéóçò áõôþí ôùí ðåñéïñéóìþí, êáé Ý÷ù åöáñìüóåé Ýíáí áðü áõôïýò. ÄéáâÜóôå ðåñáéôÝñù ãéá ëåðôïìÝñåéåò. Áðü ôüôå ðïõ Ýãñáøá ôçí ðñïçãïýìåíç ðáñÜãñáöï ôï 1996, Ý÷ïõí ãßíåé ðïëëÝò áëëáãÝò óôçí ôå÷íïëïãßá Java. Åßíáé ðéèáíüí ðùò ìéá êáëýôåñç ëýóç ãéá íá ôñÝ÷åôå Java ðñïãñÜììáôá óôçí ðëåõñÜ-ôïõ-äéáêïìéóôÞ, åßíáé ôþñá äéáèÝóéìç -- ßóùò íá ðñÝðåé íá ñßîåôå ìéá ìáôéÜ óôá servlets. [1m1.1. ÐñïãåíÝóôåñç Ãíþóç[0m ÕðïèÝôù üôé Ý÷åôå ìßá ãåíéêÞ ãíþóç ôçò HTML êáé ôùí åííïéþí CGI êáé ôïõëÜ÷éóôïí ìéá åëÜ÷éóôç ãíþóç ôïõ äéáêïìéóôÞ HTTP óáò. Èá ðñÝðåé åðßóçò íá ãíùñßæåôå ðþò íá ðñïãñáììáôßóåôå óå Java, áëëéþò ðïëëÜ áðü áõôÜ äå èá âãÜæïõí íüçìá. [1m1.2. Áõôü ôï ¸ããñáöï[0m Ç ôåëåõôáßá Ýêäïóç áõôïý ôïõ åããñÜöïõ ìðïñåß íá äéáâáóôåß óôçí http://www.orbits.com/software/Java_CGI.html. [1m1.3. Ôï ðáêÝôï[0m Ç ôåëåõôáßá Ýêäïóç ôïõ ðáêÝôïõ ðïõ ðåñéãñÜöåôáé åäþ ìðïñåß íá ðñïóðåëáóôåß ìÝóù áíþíõìï FTP óôï ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz. Ç äéáíïìÞ ôïõ ðáêÝôïõ ðåñéÝ÷åé ðçãáßï êþäéêá SGML ãéá áõôü ôï Ýããñáöï. Ôï ðáêÝôï äéáíÝìåôáé êÜôù áðü ôïõò üñïõò ôçò GNU ÂéâëéïèÞêçò ÃåíéêÞò ¶äåéáò ôïõ Êïéíïý (Library General Public License). Áõôü ôï Ýããñáöï ìðïñåß íá äéáíåìçèåß êÜôù áðü ôïõò üñïõò ôçò óçìåßùóçò ðíåõìáôéêþí äéêáéùìÜôùí ôùí Linux HOWTOs. Áí ÷ñçóéìïðïéåßôå áõôü ôï ëïãéóìéêü, ðáñáêáëþ êÜíôå êÜðïéá áíáöïñÜ óôçí http://www.orbits.com/software/Java_CGI.html, Ýôóé þóôå êáé Üëëïé íá ìðïñïýí íá âñßóêïõí ôéò êëÜóåéò Java CGI. Äåí Ý÷ù Üëëï ÷ñüíï ãéá íá óõíôçñþ êáé íá õðïóôçñßæù áõôü ôï ðáêÝôï, ïðüôå áõôÞ ðéèáíüí íá åßíáé ç ôåëåõôáßá ôïõ êõêëïöïñßá. Áí êáíåßò åêåß Ýîù åßíáé áñêåôÜ åñùôåõìÝíïò ìå áõôü ôï ëïãéóìéêü þóôå íá åý÷åôáé íá áíáëÜâåé ôç óõíôÞñçóÞ ôïõ, ðáñáêáëþ åðéêïéíùíÞóôå ìáæß ìïõ óôçí javacgi-document@orbits.com. [1m1.4. Ç Ëßóôá Ôá÷õäñïìåßïõ[0m ¸÷ù äçìéïõñãÞóåé ìßá ëßóôá majordomo þóôå íá åðéôñÝðù áíèñþðïõò íá âïçèïýí ï Ýíáò ôïí Üëëïí, íá ëýíïõí áìïéâáßá ôá ðñïâëÞìáôÜ ôïõò åãêáèéóôþíôáò êáé ÷ñçóéìïðïéþíôáò áõôü ôï ëïãéóìéêü. Óôåßëôå Ýíá ìÞíõìá óôçí javacgi-request@orbits.com, ðåñéëáìâÜíïíôáò ôç ëÝîç [4msubscribe[24m. [1m2. Ñõèìßæïíôáò ôï ÄéáêïìéóôÞ óáò íá ôñÝ÷åé ðñïãñÜììáôá Java CGI (ìå[0m [1måðåîçãÞóåéò)[0m Áõôü ôï ôìÞìá èá óáò êáèïäçãÞóåé êáôÜ ôçí åãêáôÜóôáóç ôïõ ðáêÝôïõ ìïõ [4mJava[24m [4mCGI[24m ìå Üöèïíåò åðåîçãÞóåéò Ýôóé þóôå íá ãíùñßæåôå ðïéá èá åßíáé ôá áðïôåëÝóìáôá ôùí åíåñãåéþí óáò. Áí áðëþò èÝëåôå íá åãêáôáóôÞóåôå ôá ðñïãñÜììáôá êáé äåí åíäéáöÝñåóôå êáèüëïõ ãéá ôá ãéáôß êáé ãéá ðïéïõò ëüãïõò, ðçãáßíåôå óôçí ``Ñõèìßæïíôáò ôïí ÄéáêïìéóôÞ óáò íá ôñÝ÷åé ðñïãñÜììáôá Java CGI (ï óýíôïìïò ôñüðïò)''. [1m2.1. ÁðáéôÞóåéò ÓõóôÞìáôïò[0m Áõôü ôï ëïãéóìéêü èá ðñÝðåé íá äïõëåýåé óå êÜèå unix-like äéáêïìéóôÞ éóôïý ðïõ Ý÷åé åãêáôåóôçìÝíï ôï Java Development Kit. Åãþ ôï ÷ñçóéìïðïéþ óå Ýíá óýóôçìá [4mDebian[24m [4mLinux[24m ðïõ ôñÝ÷åé ôïí [4mapache[24m óáí äáßìïíá HTTP. Áí äéáðéóôþóåôå üôé äåí ôñÝ÷åé óôïí äéêü óáò äéáêïìéóôÞ, ðáñáêáëþ åðéêïéíùíÞóôå ìå ôç ëßóôá ôá÷õäñïìåßïõ. Äåßôå ôç ``The Mailing List'' ãéá ëåðôïìÝñåéåò. Äõóôõ÷þò, ï Java run-time äéåñìçíåõôÞò öáßíåôáé íá åßíáé êÜôé óáí öáôáïýëáò ìíÞìçò -- ßóùò íá èÝëåôå íá ñßîåôå ëßãá ðåñéóóüôåñá megabytes áðü RAM óôïí åîõðçñåôçôÞ óáò áí èá ÷ñçóéìïðïéåßôå ðïëý ðñïãñÜììáôá Java CGI. [1m2.2. Åðéðñüóèåôï Ëïãéóìéêü Java CGI[0m Ôï ëïãéóìéêü ðïõ Ýãñáøá ãéá íá âïçèÞóåé óå áõôü ëÝãåôáé [4mJava[24m [4mCGI[24m. Ìðïñåßôå íá ôï ðÜñåôå áðü ôï ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz. (Ï áñéèìüò Ýêäïóçò ìðïñåß íá Ý÷åé áëëÜîåé). [1m2.3. ÎåðáêåôÜñïíôáò ôïí ðçãáßï êþäéêá[0m Âñåßôå Ýíáí êáôÜëïãï ðïõ óáò âïëåýåé óôïí ïðïßï èá îåðáêåôÜñåôå áõôü ôï ðáêÝôï. (Áí äåí Ý÷åôå áêüìç Ýíá óôáèåñü ôüðï íá ôïðïèåôåßôå ðáêÝôá, ðñïôåßíù íá ÷ñçóéìïðïéÞóåôå ôïí /usr/local/src.) ÎåðáêåôÜñåôå ôç äéáíïìÞ ìå áõôÞ ôçí åíôïëÞ: gzip -dc java_cgi-0.5.tgz | tar -xvf - ÁõôÞ èá äçìéïõñãÞóåé Ýíáí êáôÜëïãï ìå üíïìá java_cgi-0.5. Åêåß ìÝóá èá âñåßôå ôá áñ÷åßá ðïõ áíáöÝñïíôáé óôï õðüëïéðï áõôïý ôïõ åããñÜöïõ. (Áí ï áñéèìüò Ýêäïóçò Ý÷åé áëëÜîåé, ÷ñçóéìïðïéÞóôå ôéò ïäçãßåò ðïõ âñßóêïíôáé óôç äéáíïìÞ ðïõ êáôåâÜóáôå). [1m2.4. Áðïöáóßóôå ãéá ôéò ðïëéôéêÝò ôïðéêþí äéáäñïìþí óáò[0m ÐñÝðåé íá áðïöáóßóåôå ðïý èÝëåôå íá æïõí ôá Java CGI ðñïãñÜììáôÜ óáò. ÃåíéêÜ, èá èÝëåôå íá ôá ôïðïèåôÞóåôå óå Ýíáí êáôÜëïãï ðáñÜëëçëá ìå ôïí cgi-bin êáôÜëïãü óáò. Ï äéêüò ìïõ äéáêïìéóôÞò [4mapache[24m Þôáí ñõèìéóìÝíïò íá ÷ñçóéìïðïéÞóåé ôïí /var/www/cgi-bin óáí ôïí cgi-bin êáôÜëïãï, ïðüôå ÷ñçóéìïðïéþ ôïí /var/www/javacgi óáí ôïí êáôÜëïãï ðïõ ôïðïèåôþ ìÝóá ôá Java CGI ðñïãñÜììáôá. Ðéèáíþò íá ìç èÝëåôå íá ôïðïèåôÞóåôå ôá Java CGI ðñïãñÜììáôÜ óáò ìÝóá óå Ýíáí áðü ôïõò õðÜñ÷ïíôåò êáôáëüãïõò CLASSPATH. Åðåîåñãáóôåßôå ôï Makefile þóôå íá áíôéêáôïðôñßæåôáé ç ñýèìéóç ôïõ óõóôÞìáôüò óáò. Åðéâåâáéþóôå üôé Ý÷åôå ðñüóâáóç ùò ÷ñÞóôçò root êáé ôñÝîôå ôçí åíôïëÞ make install. ÁõôÞ èá ìåôáãëùôôßóåé ôá Java ðñïãñÜììáôá, èá ôñïðïðïéÞóåé ôï java.cgi óåíÜñéï ãéá íá ôáéñéÜæåé ìå ôï óýóôçìÜ óáò êáé èá åãêáôáóôÞóåé ôá ðñïãñÜììáôá óôá áðáñáßôçôá ìÝñç. Áí èÝëåôå ôçí HTML Ýêäïóç áõôÞò ôçò ôåêìçñßùóçò êáé Ýíá HTML test Ýããñáöï åðéðëÝïí, ôñÝîôå ôçí åíôïëÞ make all áíôß áõôÞò. [1m2.5. ÅëÝã÷ïíôáò ôçí åãêáôÜóôáóÞ óáò[0m ÅãêáôåóôçìÝíá áðü ôç äéáíïìÞ åßíáé HTML Ýããñáöá ðïõ ïíïìÜæïíôáé javacgitest.html, javaemailtest.html êáé javahtmltest.html. ÅÜí ôá åãêáôáóôÞóáôå üëá - all óôï ðñïçãïýìåíï ìÝñïò, èá åßíáé óôïí êáôÜëïãï ðïõ êáèïñßóáôå ãéá WEBDIR óôï Makefile. Áí äåí ôï êÜíáôå, ìðïñåßôå íá ôñÝîåôå ôçí åíôïëÞ make test ãéá íá ôá ÷ôßóåôå áðü ôá javacgitest.html-dist, javaemailtest.html-dist êáé javahtmltest.html- dist. ¼ôáí åßóôå óßãïõñïé ðùò ç åãêáôÜóôáóÞ óáò äïõëåýåé óùóôÜ, ßóùò íá åðéèõìåßôå íá äéáãñÜøåôå ôá CGI_Test.class, Email_Test.class êáé HTML_Test.class áðü ôïí JAVACGI êáôÜëïãü óáò êáé ôá javacgitest.html, javaemailtest.html êáé javahtmltest.html áðü ôïí WEBDIR êáôÜëïãü óáò áöïý äåß÷íïõí óôï ÷ñÞóôç ðëçñïöïñßåò ðïõ åßíáé êáíïíéêÜ ìüíï äéáèÝóéìåò óôïí äéáêïìéóôÞ. [1m3. Ñõèìßæïíôáò ôïí ÄéáêïìéóôÞ óáò íá ôñÝ÷åé ðñïãñÜììáôá Java CGI (ï[0m [1móýíôïìïò ôñüðïò)[0m · ÐÜñôå ôï ðáêÝôï [4mJava[24m [4mCGI[24m áðü ôï ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz. (Ï áñéèìüò Ýêäïóçò ìðïñåß íá Ý÷åé áëëÜîåé). · ÎåðáêåôÜñåôå ôç äéáíïìÞ ìå áõôÞ ôçí åíôïëÞ: gzip -dc java_cgi-0.5.tgz | tar -xvf - (Áí ï áñéèìüò Ýêäïóçò Ý÷åé áëëÜîåé, ÷ñçóéìïðïéÞóôå ôéò ïäçãßåò ìÝóá áðü åêåßíç ôç äéáíïìÞ áðü áõôü ôï óçìåßï êáé ýóôåñá). · Åðåîåñãáóôåßôå ôï Makefile ðïõ èá âñåßôå óôï ìüëéò äçìéïõñãçìÝíï êáôÜëïãï java_cgi-0.5 þóôå íá åßíáé êáôÜëëçëï ãéá ôï óýóôçìÜ óáò. · Óáí root, ôñÝîôå ôçí åíôïëÞ make install. ÁõôÞ èá ìåôáãëùôôßóåé ôá Java ðñïãñÜììáôá, èá åöáñìüóåé ôéò óõãêåêñéìÝíåò ðëçñïöïñßåò óôï óýóôçìÜ óáò êáé èá åãêáôáóôÞóåé ôá äéÜöïñá áñ÷åßá. Áí èÝëåôå ôçí HTML Ýêäïóç áõôÞò ôçò ôåêìçñßùóçò êáé Ýíá HTML test Ýããñáöï, ôñÝîôå ôçí åíôïëÞ make all áíôß áõôÞò. · Èá ðñÝðåé íá åßóôå Ýôïéìïé íá îåêéíÞóåôå. [1m4. Åêôåëþíôáò Ýíá ðñüãñáììá Java CGI[0m [1m4.1. Åìðüäéá óôï ôñÝîéìï ðñïãñáììÜôùí Java êÜôù áðü ôï ìïíôÝëï CGI[0m ÕðÜñ÷ïõí äýï êýñéá ðñïâëÞìáôá óôï ôñÝîéìï åíüò ðñïãñÜììáôïò Java áðü Ýíáí äéáêïìéóôÞ éóôïý: [1m4.1.1. Äåí ìðïñåßôå íá ôñÝîåôå ðñïãñÜììáôá Java üðùò ôá êáíïíéêÜ[0m [1måêôåëÝóéìá.[0m ×ñåéÜæåôáé íá ôñÝîåôå ôïí äéåñìçíÝá Java run-time êáé íá ðáñÝ÷åôå ôçí áñ÷éêÞ êëÜóç (ðñüãñáììá ãéá íá ôñÝîåôå) óôç ãñáììÞ åíôïëþí. Ìå ìßá öüñìá HTML, äåí õðÜñ÷åé êáìßá öñïíôßäá ãéá íá óôÝëíåôå ìßá ãñáììÞ åíôïëþí óôïí äéáêïìéóôÞ éóôïý. [1m4.1.2. Ç Java äåí Ý÷åé ãåíéêÞ ðñüóâáóç óôï ðåñéâÜëëïí.[0m ÊÜèå ìåôáâëçôÞ ðåñéâÜëëïíôïò ðïõ èá ÷ñåéáóôåß áðü ôï ðñüãñáììá Java ðñÝðåé íá ðåñáóôåß ìå óáöÞíåéá. Äåí õðÜñ÷åé êáìßá ìÝèïäïò ðáñüìïéá ìå ôç ëåéôïõñãßá ôçò [1mC[22m, getenv() . [1m4.2. Îåðåñíþíôáò ðñïâëÞìáôá óôï ôñÝîéìï ðñïãñáììÜôùí Java CGI[0m Ãéá íá áíôéìåôùðßóåôå áõôÜ ôá åìðüäéá, Ýãñáøá Ýíá CGI ðñüãñáììá êåëýöïõò ðïõ ðáñÝ÷åé ôéò ðëçñïöïñßåò ðïõ ÷ñåéÜæïíôáé áðü ôïí Java äéåñìçíÝá. [1m4.2.1. Ôï java.cgi script[0m Áõôü ôï óåíÜñéï êåëýöïõò äéá÷åéñßæåôáé ôçí áëëçëåðßäñáóç ìåôáîý ôïõ HTTP äáßìïíá êáé ôïõ ðñïãñÜììáôïò Java CGI ðïõ åðéèõìåßôå íá ÷ñçóéìïðïéÞóåôå. ÅîÜãåé ôï üíïìá ôïõ ðñïãñÜììáôïò ðïõ èÝëåôå íá ôñÝîåôå áðü ôá äåäïìÝíá ðïõ ðáñÝ÷ïíôáé áðü ôï äéáêïìéóôÞ. ÓõëëÝãåé üëá ôá äåäïìÝíá ðåñéâÜëëïíôïò óå Ýíá ðñïóùñéíü áñ÷åßï. ¾óôåñá, ôñÝ÷åé ôïí Java run-time äéåñìçíÝá ìå ôï üíïìá ôïõ áñ÷åßïõ áðü ôéò ðëçñïöïñßåò ðåñéâÜëëïíôïò êáé ôï üíïìá ôïõ ðñïãñÜììáôïò ðïõ ðñïóôÝèçêå óôç ãñáììÞ-åíôïëþí. Ôï java.cgi script äéáìïñöþèçêå êáé åãêáôáóôÜèçêå óôï ``Áðïöáóßóôå ãéá ôéò ðïëéôéêÝò ôïðéêþí äéáäñïìþí óáò''. [1m4.2.2. Êáëþíôáò ôï java.cgi áðü ìßá öüñìá HTML[0m Ïé öüñìåò ìïõ ðïõ ÷ñçóéìïðïéïýí ðñïãñÜììáôá Java CGI êáèïñßæïõí ìßá åíÝñãåéá öüñìáò üðùò áêïëïýèùò: <form action="/cgi-bin/java.cgi/CGI_Test" method="POST"> ¼ðïõ /cgi-bin/ åßíáé ï ôïðéêüò óáò CGI binary êáôÜëïãïò, java.cgi åßíáé ôï Java front-end ðïõ ìáò åðéôñÝðåé íá ôñÝ÷ïõìå ðñïãñÜììáôá Java óôïí éóôü êáé ôï CGI_Test åßíáé Ýíá ðáñÜäåéãìá ïíüìáôïò ðñïãñÜììáôïò Java ãéá íá ôñÝîåôå. [1m5. ×ñçóéìïðïéþíôáò ôéò Java CGI ÊëÜóåéò[0m ÕðÜñ÷ïõí ðñïò ôï ðáñüí ôñåéò êýñéåò êëÜóåéò ðïõ õðïóôçñßæïíôáé -- ``CGI'', ``Email'' êáé ``HTML''. ÓêÝöôïìáé íá ðñïóèÝóù êëÜóåéò ãéá íá áíôéìåôùðßóù ôá MIME-äéáìïñöùìÝíá åéóáãüìåíá (input) êáé åîáãüìåíá (output) -- MIMEin & MIMEout, áíôßóôïé÷á. ÕðÜñ÷ïõí åðßóçò ìåñéêÝò support êáé test êëÜóåéò. ``CGI_Test'', ``Email_Test'' êáé ``HTML_Test'' óêïðåýïõí íá ÷ñçóéìïðïéçèïýí ãéá íá åëÝãîïõí ôçí åãêáôÜóôáóÞ óáò. Ìðïñïýí åðßóçò íá ÷ñçóéìïðïéçèïýí óáí Ýíá óçìåßï-åêêßíçóçò ãéá ôá äéêÜ óáò ðñïãñÜììáôá Java ðïõ ÷ñçóéìïðïéïýí áõôÞ ôç âéâëéïèÞêç êëÜóåùí. Ç ``Text'' êëÜóç åßíáé ç õðåñêëÜóç êáé ãéá ôéò äýï êëÜóåéò, ôçí Email êáé ôçí HTML. [1m5.1. CGI[0m [1m5.1.1. Óýíôáîç êëÜóçò[0m public class CGI [1m5.1.2. ÐåñéãñáöÞ êëÜóçò[0m Ç CGI êëÜóç êñáôÜåé ôéò ``CGI Ðëçñïöïñßåò'' -- ÌåôáâëçôÝò ðåñéâÜëëïíôïò áðü ôïí äéáêïìéóôÞ éóôïý êáé ôï üíïìá/ôéìÞ ðïõ óôÝëíïíôáé áðü ìßá öüñìá üôáí ç [1msubmit [22måíÝñãåéá åßíáé åðéëåãìÝíç. ¼ëåò ïé ðëçñïöïñßåò áðïèçêåýïíôáé óå Ýíá Properties áíôéêåßìåíï êëÜóçò. ÁõôÞ ç êëÜóç åßíáé óôï ðáêÝôï ``Orbits.net''. [1m5.1.3. Ðåñßëçøç ìåëþí[0m CGI() // ÊáôáóêåõáóôÞò. getNames() // Ðáßñíåé ôç ëßóôá ïíïìÜôùí. getValue() // Ðáßñíåé ôçí ôéìÞ öüñìáò êáôÜ ðñïóäéïñéóìÝíï üíïìá. [1m5.1.4. Äåßôå åðßóçò[0m CGI_Test. [1m5.1.5. CGI()[0m [1mPurpose[0m ÊáôáóêåõÜæåé Ýíá áíôéêåßìåíï ðïõ ðåñéÝ÷åé ôá äéáèÝóéìá CGI äåäïìÝíá. [1mSyntax[0m public CGI() [1mDescription[0m ¼ôáí êáôáóêåõÜæåôáé Ýíá áíôéêåßìåíï CGI, üëåò ïé äéáèÝóéìåò CGI ðëçñïöïñßåò áíáññïöïýíôáé óå áðïèÞêç ôïðéêÜ óôï íÝï áíôéêåßìåíï. [1m5.1.6. getNames()[0m [1mPurpose[0m ÊÜíåé ëßóôá ôùí ïíïìÜôùí ðïõ åßíáé ïñéóìÝíåò ãéá íá Ý÷ïõí áíôßóôïé÷åò ôéìÝò. [1mSyntax[0m public Enumeration getKeys () [1mDescription[0m ÐáñÝ÷åé ôçí ðëÞñç ëßóôá ôùí ïíïìÜôùí ãéá ôá ïðïßá áíôßóôïé÷åò ôéìÝò åßíáé ïñéóìÝíåò. [1mReturns[0m Ìßá Enumeration üëùí ôùí ïñéóìÝíùí ïíïìÜôùí. [1m5.1.7. getValue()[0m [1mPurpose[0m ÅðáíáêôÜ ôçí [1mvalue [22móõó÷åôéóìÝíç ìå ôï [1mname [22mðïõ Ý÷åé ïñéóôåß. [1mSyntax[0m public String getValue ( String name ) [1mDescription[0m ÁõôÞ ç ìÝèïäïò ðáñÝ÷åé ôç áíôéóôïé÷ßá ìåôáîý ôùí names êáé values ðïõ óôÝëíïíôáé áðü ìßá HTML öüñìá. [1mÐáñÜìåôñïò[0m [1mname[0m Ôï êëåéäß êáôÜ ôï ïðïßï ïé ôéìÝò åðéëÝãïíôáé. [1mReturns[0m ¸íá String ðïõ ðåñéëáìâÜíåé ôçí ôéìÞ. [1m5.2. CGI_Test[0m ÁõôÞ ç êëÜóç ðáñÝ÷åé Ýíá ðáñÜäåéãìá ôïõ ðþò íá ÷ñçóéìïðïéåßôå ôçí êëÜóç CGI êáé Ýíá ðñüãñáììá åëÝã÷ïõ ðïõ ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá íá åðéâåâáéþóåé üôé ôï ðáêÝôï [4mJava[24m [4mCGI[24m ëåéôïõñãåß óùóôÜ. [1m5.2.1. Ðåñßëçøç ìåëþí[0m main() // Ðñüãñáììá main(). [1m5.2.2. Äåßôå åðßóçò[0m CGI. [1m5.2.3. main()[0m [1mPurpose[0m ÐáñÝ÷åé ìßá main() ìÝèïäï. [1mSyntax[0m public static void main( String argv[] ) [1mDescription[0m Áõôü åßíáé ôï óçìåßï êáôá÷þñçóçò ãéá Ýíá ðñüãñáììá CGI ðïõ äåí êÜíåé ôßðïôá Üëëï áðü ôï íá áíáöÝñåé ìßá ëßóôá ìå üëá ôá äéáèÝóéìá üíïìá/ôéìÞ æåõãÜñéá êáé ôéò ôñÝ÷ïõóåò ôéìÝò ôïõò. [1mÐáñÜìåôñïò[0m [1margv[][0m Åðé÷åéñÞìáôá ðåñáóìÝíá óôï ðñüãñáììá áðü ôï java.cgi script. Ðñïò ôï ðáñüí á÷ñçóéìïðïßçôç. [1m5.3. Email[0m [1m5.3.1. Óýíôáîç ÊëÜóçò[0m public class Email extends Text [1m5.3.2. ÐåñéãñáöÞ êëÜóçò[0m Ìçíýìáôá ó÷çìáôßæïíôáé ìå ôçí Text êëÜóç add*() ìåèüäïõò êáé ôéò e- mail-óõãêåêñéìÝíåò ìåèüäïõò ðïõ ðñïóôßèåíôáé áðü áõôÞí ôçí êëÜóç. ¼ôáí ïëïêëçñùèåß, ôï ìÞíõìá óôÝëíåôáé óôïí ðñïïñéóìü ôïõ. ÁõôÞ ç êëÜóç åßíáé óôï ðáêÝôï ``Orbits.net''. [1m5.3.3. Ðåñßëçøç ìåëþí[0m Email() // ÊáôáóêåõáóôÞò. send() // ÓôÝëíåé ôï e-mail ìÞíõìá. sendTo() // ÐñïóèÝôåé Ýíáí ðñïïñéóìü ãéá ôï ìÞíõìá. subject() // Ñõèìßæåé ôï ÈÝìá: ãéá ôï ìÞíõìá. [1m5.3.4. Äåßôå åðßóçò[0m Email_Test, Text. [1m5.3.5. Email()[0m [1mPurpose[0m ÊáôáóêåõÜæåé Ýíá áíôéêåßìåíï ôï ïðïßï èá ðåñéÝ÷åé Ýíá email ìÞíõìá. [1mSyntax[0m public Email() [1mDescription[0m Ñõèìßæåé Ýíá êåíü ìÞíõìá ãéá íá ïëïêëçñùèåß áðü ôéò Email ìåèüäïõò. [1mSee Also[0m Text. [1m5.3.6. send()[0m [1mPurpose[0m ÓôÝëíåé ôï e-mail ìÞíõìá. [1mSyntax[0m public void send () [1mDescription[0m ÁõôÞ äéáìïñöþíåé êáé óôÝëíåé ôï ìÞíõìá. Áí êáìßá äéåýèõíóç ðñïïñéóìïý äåí Ý÷åé ñõèìéóôåß, äå ëáìâÜíåôáé êáìßá åíÝñãåéá. [1m5.3.7. sendTo()[0m [1mPurpose[0m ÐñïóèÝôåé Ýíáí ðñïïñéóìü ãéá áõôü ôï ìÞíõìá. [1mSyntax[0m public String sendTo ( String address ) [1mDescription[0m ÐñïóèÝôåé ôçí address óôç ëßóôá ðñïïñéóìþí ãéá áõôÞí ôçí ìÝèïäï. Äåí õðÜñ÷åé êáíÝíá üñéï ñýèìéóçò óôïí áñéèìü ðñïïñéóìþí ðïõ Ýíá e-mail ìÞíõìá ìðïñåß íá Ý÷åé. Åßìáé óßãïõñïò ðùò áí ó÷çìáôßóåôå ôç ëßóôá áñêåôÜ ìåãÜëç, ìðïñåßôå íá õðåñâåß ôå ôï ìÝãåèïò ôçò ëßóôáò ðáñáìÝôñùí ðïõ ï [4mMail[24m [4mTransport[24m [4mAgent[0m ìðïñåß íá áðïäå÷èåß Þ íá êáôáíáëþóåôå ôç ìíÞìç óáò. [1mParameter/[0m [1maddress[0m ¸íáò ðñïïñéóìüò ãéá íá óôåßëåôå áõôü ôï ìÞíõìá. [1m5.3.8. subject()[0m [1mPurpose[0m ÓôÝëíåé ôï èÝìá ãéá áõôü ôï ìÞíõìá. [1mSyntax[0m public void subject ( String subject ) [1mDescription[0m ÁõôÞ ç ìÝèïäïò ñõèìßæåé ôï êåßìåíï ãéá ôçí ãñáììÞ Subject: ôïõ e-mail. Áí êëçèåß ðåñéóóüôåñåò áðü ìßá öïñÝò, ôï ôåëåõôáßï ñõèìéóìÝíï èÝìá åßíáé áõôü ðïõ ÷ñçóéìïðïéåßôáé. [1mParameter[0m [1msubject[0m Ôï êåßìåíï ôçò Subject: ãñáììÞò áõôïý ôïõ ìçíýìáôïò. [1m5.4. Email_Test[0m ÁõôÞ ç êëÜóç ðáñÝ÷åé Ýíá ðáñÜäåéãìá ôïõ ðþò íá ÷ñçóéìïðïéåßôå ôçí Email êëÜóç êáé Ýíá test ðñüãñáììá ðïõ ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá íá åðéâåâáéþóåé üôé ôï [4mJava[24m [4mCGI[24m ðáêÝôï ëåéôïõñãåß óùóôÜ. [1m5.4.1. Ðåñßëçøç ìåëþí[0m main() // Ðñüãñáììá main(). [1m5.4.2. Äåßôå åðßóçò[0m Email. [1m5.4.3. main()[0m [1mPurpose[0m ÐáñÝ÷åé ìßá main() ìÝèïäï. [1mSyntax[0m public static void main( String argv[] ) [1mDescription[0m Áõôü åßíáé ôï óçìåßï êáôá÷þñçóçò ãéá Ýíá ðñüãñáììá CGI ðïõ áíáöÝñåé ìßá ëßóôá ìå üëá ôá äéáèÝóéìá üíïìá/ôéìÞ æåõãÜñéá êáé ôéò ôñÝ÷ïõóåò ôéìÝò ôïõò. Åðßóçò, èá óôåßëåé áõôÞ ôç ëßóôá óôçí êáèïñéóìÝíç äéåýèõíóç óôçí Email ìåôáâëçôÞ. [1mÐáñÜìåôñïò[0m [1margv[][0m Åðé÷åéñÞìáôá ðåñíéïýíôáé óôï ðñüãñáììá áðü ôï java.cgi óåíÜñéï. Ðñïò ôï ðáñüí á÷ñçóéìïðïßçôá. [1m5.5. HTML[0m [1m5.5.1. Óýíôáîç êëÜóçò[0m public class HTML extends Text [1m5.5.2. ÐåñéãñáöÞ êëÜóçò[0m Ìçíýìáôá ó÷çìáôßæïíôáé ìå ôçí Text êëÜóç add*() ìåèüäïõò êáé ôéò HTML-óõãêåêñéìÝíåò ìåèüäïõò ðïõ ðñïóôßèåíôáé áðü áõôÞí ôçí êëÜóç. ¼ôáí ïëïêëçñùèåß, ôï ìÞíõìá óôÝëíåôáé óôïí ðñïïñéóìü ôïõ. Ðñïò ôï ðáñüí, äåí õðÜñ÷åé Ýëåã÷ïò óöáëìÜôùí ãéá íá åðéâåâáéþóåé üôé ïé ìÝèïäïé äçìéïõñãßáò-ëßóôáò ÷ñçóéìïðïéïýíôáé óå ìßá óùóôÞ óåéñÜ, ïðüôå ï ðñïãñáììáôéóôÞò ðñÝðåé íá ðáßñíåé ìÝôñá ãéá íá ìçí ðáñáâéÜóåé ôçí HTML óýíôáîç. ÁõôÞ ç êëÜóç åßíáé óôï ðáêÝôï ``Orbits.net''. [1m5.5.3. Ðåñßëçøç ìåëþí[0m HTML() // ÊáôáóêåõáóôÞò. author() // Ñõèìßæåé ôï üíïìá ôïõ óõããñáöÝá ôïõ åããñÜöïõ. definitionList() // ÎåêéíÜ ìßá ëßóôá ïñéóìþí. definitionListTerm() // ÐñïóèÝôåé Ýíáí üñï óôç ëßóôá ïñéóìþí. endList() // Ôåëåéþíåé ìßá ëßóôá. listItem() // ÐñïóèÝôåé ìßá êáôá÷þñéóç óå ìßá ëßóôá. send() // ÓôÝëíåé ôï HTML ìÞíõìá. title() // Ñõèìßæåé ôï êåßìåíï ãéá ôïí ôßôëï ôïõ åããñÜöïõ. [1m5.5.4. Äåßôå åðßóçò[0m HTML_Test, Text. [1m5.5.5. HTML()[0m [1mPurpose[0m Äçìéïõñãåß Ýíá áíôéêåßìåíï ðïõ èá ðåñéÝ÷åé Ýíá HTML ìÞíõìá. [1mSyntax[0m public HTML() [1mDescription[0m Ñõèìßæåé Ýíá êåíü ìÞíõìá íá óõìðëçñùèåß áðü ôéò HTML ìåèüäïõò. [1mSee Also[0m Text. [1m5.5.6. author()[0m [1mPurpose[0m Ñõèìßæåé ôï üíïìá ôïõ óõããñáöÝá ôïõ åããñÜöïõ. [1mSyntax[0m public void author ( String author ) [1mDescription[0m Ñõèìßæåé ôï üíïìá ôïõ óõããñáöÝá ôïõ åããñÜöïõ óå author. [1mParameter/[0m [1mauthor[0m Ôï êåßìåíï ðïõ ðñÝðåé íá ÷ñçóéìïðïéçèåß óáí ï óõããñáöÝáò áõôïý ôïõ ìçíýìáôïò. [1mSee Also[0m title(). [1m5.5.7. definitionList()[0m [1mPurpose[0m Áñ÷ßæåé ìéá ëßóôá ïñéóìþí. [1mSyntax[0m public void definitionList () [1mDescription[0m Áñ÷ßæåé ìéá ëßóôá ïñéóìþí. Ç [4mdefinition[24m [4mlist[24m åßíáé ìßá ëßóôá åéäéêåõìÝíç Ýôóé þóôå êÜèå êáôá÷þñéóç óôç ëßóôá åßíáé Ýíáò [4mterm[0m áêïëïõèïýìåíïò áðü ôï [4mtext[24m ïñéóìþí ãéá áõôüí ôïí üñï. Ç áñ÷Þ ìéáò ëßóôáò ïñéóìþí èá ðñÝðåé íá áêïëïõèåßôáé áðü ôïõëÜ÷éóôïí) Ýíá üñïò/êåßìåíï æåõãÜñé êáé ìßá êëÞóç óôçí endList() ìÝèïäï. [4mÓçìåéþóôå[24m [4mðùò,[24m [4mðñïò[24m [4môï[24m [4mðáñüí,[24m [4mïé[24m [4mëßóôåò[24m [4mäåí[24m [4mìðïñïýí[24m [4míá[24m [4måßíáé[0m [4möùëéáóìÝíåò[24m [4m(nested)[24m [4mç[24m [4mìßá[24m [4mìÝóá[24m [4móôçí[24m [4mÜëëç.[0m [1mSee Also[0m definitionListTerm(), endList(), listItem(). [1m5.5.8. definitionListTerm()[0m [1mPurpose[0m ÐñïóèÝôåé Ýíáí üñï óôç ëßóôá ïñéóìþí. [1mSyntax[0m public void definitionListTerm () [1mDescription[0m ÐñïóèÝôåé Ýíáí üñï óôç ëßóôá ïñéóìþí. Ôï êåßìåíï ãéá ôï êïììÜôé ôïõ üñïõ ôçò ôñÝ÷ïõóáò êáôá÷þñçóçò ëßóôáò èá ðñÝðåé íá åðéóõíÜðôåôáé óôï ìÞíõìá áöïý ç ìÝèïäïò áõôïý êáëåßôáé êáé ðñéí ìéá áíôßóôïé÷ç listItem ìÝèïäïò êáëåßôáé. [1mSee Also[0m definitionList(), listItem(). [1m5.5.9. endList()[0m [1mPurpose[0m Ôåëåéþíåé ìéá ëßóôá. [1mSyntax[0m public void endList () [1mDescription[0m Ôåëåéþíåé ìéá ëßóôá. ÁõôÞ ç ìÝèïäïò êëåßíåé ìßá ëßóôá. [4mÓçìåéþóôå[24m [4müôé,[24m [4mðñïò[24m [4môï[24m [4mðáñüí,[0m [4mïé[24m [4mëßóôåò[24m [4mäåí[24m [4mìðïñïýí[24m [4míá[24m [4måßíáé[24m [4möùëéáóìÝíåò[24m [4m(nested),[24m [4mç[24m [4mìßá[24m [4mìÝóá[0m [4móôçí[24m [4mÜëëç.[0m [1mSee Also[0m definitionList(). [1m5.5.10. listItem()[0m [1mPurpose[0m ÐñïóèÝôåé ìßá êáôá÷þñçóç óå ìßá ëßóôá. [1mSyntax[0m public void listItem () public void listItem ( String item ) public boolean listItem ( String term, String item ) [1mDescription[0m ÐñïóèÝôåé ìßá êáôá÷þñçóç óå ìßá ëßóôá. Áí ç ðñþôç öüñìá ÷ñçóéìïðïéåßôáé, ôï êåßìåíï ãéá ôçí ôñÝ÷ùí áíôéêåßìåíï ëßóôáò èá ðñÝðåé íá åðéóõíÜðôåôáé óôï ìÞíõìá áöïý ç ìÝèïäïò áõôÞ êáëåßôáé êáé ðñéí Üëëåò ìÝèïäïé ëßóôáò êáëïýíôáé. Óôçí äåýôåñç êáé ôñßôç öüñìá, ôï item êåßìåíï ðñïóäéïñßæåôáé óáí ìßá ðáñÜìåôñïò óôç ìÝèïäï áíôß íá (Þ åðéðñïóèÝôùò óôï íá) åðéóõíÜðôåôáé óôï ìÞíõìá. Ç ôñßôç öüñìá åßíáé åéäéêÞ óôéò ëßóôåò ïñéóìþí êáé ðáñÝ÷åé êáé ôïí üñï êáé ôïõ ïñéóìü ôçò êáôá÷þñçóçò ëßóôáò. [1mParameters[0m [1mitem[0m Ôï êåßìåíï áõôÞò ôçò êáôá÷þñçóçò ëßóôáò. [1mterm[0m Ôï êåßìåíï áõôÞò ôçò ëßóôáò ïñéóìþí ôïõ êïììáôéïý ôïõ üñïõ êáôá÷þñçóçò. [1mSee Also[0m definitionList(), definitionListTerm(), endList(). [1m5.5.11. send()[0m [1mPurpose[0m ÓôÝëíåé ôï HTML ìÞíõìá. [1mSyntax[0m public void send () [1mDescription[0m ÓôÝëíåé ôï HTML ìÞíõìá. [1m5.5.12. title()[0m [1mPurpose[0m Ñõèìßæåé ôï êåßìåíï ãéá ôïí ôßôëï åããñÜöïõ. [1mSyntax[0m public void title ( String title ) [1mDescription[0m Ñõèìßæåé ôï êåßìåíï ãéá ôïí ôßôëï åããñÜöïõ. [1mParameter[0m [1mtitle[0m Ôï êåßìåíï áõôïý ôïõ ôßôëïõ ôïõ ìçíýìáôïò. [1mSee Also[0m author(). [1m5.6. HTML_Test[0m ÁõôÞ ç êëÜóç ðáñÝ÷åé Ýíá ðáñÜäåéãìá ôïõ ðþò íá ÷ñçóéìïðïéåßôå ôçí HTML êëÜóç êáé Ýíá test ðñüãñáììá ðïõ ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá íá åðéâåâáéþóåé üôé ôï ðáêÝôï [4mJava[24m [4mCGI[24m ëåéôïõñãåß óùóôÜ. [1m5.6.1. Ðåñßëçøç ìåëþí[0m main() // Ðñüãñáììá main(). [1m5.6.2. Äåßôå åðßóçò[0m HTML. [1m5.6.3. main()[0m [1mPurpose[0m ÐáñÝ÷åé ìßá main() ìÝèïäï. [1mSyntax[0m public static void main( String argv[] ) [1mDescription[0m Áõôü åßíáé ôï óçìåßï êáôá÷þñçóçò ãéá Ýíá ðñüãñáììá CGI ðïõ åðéóôñÝöåé ìßá ëßóôá ôùí äéáèÝóéìùí üíïìá/ôéìÞ æåõãáñéþí óå Ýíá HTML Ýããñáöï, ìå ôï êÜèå üíïìá/ôéìÞ æåõãÜñé íá áðåéêïíßæåôáé óå Ýíá óôïé÷åßï ëßóôáò ïñéóìþí. [1mÐáñÜìåôñïò[0m [1margv[][0m Åðé÷åéñÞìáôá ðåñáóìÝíá óôï ðñüãñáììá áðü ôï java.cgi óåíÜñéï. Ðñïò ôï ðáñüí äå ÷ñçóéìïðïéïýíôáé. [1m5.7. Text[0m [1m5.7.1. Óýíôáîç êëÜóçò[0m public abstract class Text [1m5.7.2. ÐåñéãñáöÞ êëÜóçò[0m Ç êëÜóç åßíáé ç õðåñêëÜóç ôùí Email êáé HTML êëÜóåùí. Ìçíýìáôá ÷ôßæïíôáé ìå ôéò ìåèüäïõò óå áõôÞí ôçí êëÜóç êáé óõìðëçñþíåôáé êáé äéáìïñöþíåôáé ìå ôéò ìåèüäïõò óå õðïêëÜóåéò. ÁõôÞ ç êëÜóç åßíáé óôï ðáêÝôï ``Orbits.text''. [1m5.7.3. Ðåñßëçøç ìåëþí[0m Text() // ÊáôáóêåõáóôÞò. add() // ÐñïóèÝôåé êåßìåíï óå áõôü ôï áíôéêåßìåíï. addLineBreak() // ÐñïóèÝôåé ìéá äéáêïðÞ ãñáììÞò. addParagraph() // ÐñïóèÝôåé ìßá äéáêïðÞ ðáñáãñÜöïõ. [1m5.7.4. Äåßôå åðßóçò[0m Email, HTML. [1m5.7.5. add()[0m [1mPurpose[0m ÐñïóèÝôåé êåßìåíï óå áõôü ôï áíôéêåßìåíï. [1mSyntax[0m public void add ( char addition ) public void add ( String addition ) public void add ( StringBuffer addition ) [1mDescription[0m ÐñïóèÝôåé addition óôá ðåñéå÷üìåíá áõôïý ôïõ áíôéêåéìÝíïõ êåéìÝíïõ. [1mParameter[0m [1maddition[0m Êåßìåíï ðïõ ðñÝðåé íá ðñïóôåèåß óôï áíôéêåßìåíï êåéìÝíïõ [1mSee Also[0m addLineBreak(), addParagraph(). [1m5.7.6. addLineBreak()[0m [1mPurpose[0m ÁíáãêÜæåé ìßá äéáêïðÞ ãñáììÞò óå áõôü ôï óçìåßï óôï êåßìåíï. [1mSyntax[0m public void addLineBreak () [1mDescription[0m ÐñïóèÝôåé ìßá äéáêïðÞ ãñáììÞò óôï êåßìåíï óôï ôñÝ÷ïí óçìåßï. [1mSee Also[0m add(), addParagraph(). [1m5.7.7. addParagraph()[0m [1mPurpose[0m Áñ÷ßæåé ìßá íÝá ðáñÜãñáöï. [1mSyntax[0m public void add () [1mDescription[0m Áñ÷ßæåé ìßá íÝá ðáñÜãñáöï óå áõôü ôï óçìåßï óôç ñïÞ êåéìÝíïõ. [1mSee Also[0m add(), addLineBreak(). [1m6. ÌåëëïíôéêÜ Ó÷Ýäéá[0m · ÐñïóèÞêç óôçí Email êëÜóç: [1mEmail( int capacity )[0m ×ñçóéìïðïéåßôáé üôáí ãíùñßæïõìå ðüóï ÷þñï ôï ìÞíõìá èá ÷ñåéáóôåß íá Ý÷åé ðáñá÷ùñçìÝíï. [1msendTo( String [] address )[0m ÐñïóèÝôåé ìßá ëßóôá ðñùôáñ÷éêþí ðñïïñéóìþí óôï e-mail ìÞíõìá. [1msendCc( String address )[0m ÐñïóèÝôåé Ýíá Carbon-Copy ðñïïñéóìü óôï e-mail ìÞíõìá. [1msendCc( String [] address )[0m ÐñïóèÝôåé ìßá ëßóôá áðü Carbon-Copy ðñïïñéóìïýò óôï e-mail ìÞíõìá. [1msendBcc( String address )[0m ÐñïóèÝôåé Ýíá Blind Carbon-Copy ðñïïñéóìü óôï e-mail ìÞíõìá. [1msendBcc( String [] address )[0m ÐñïóèÝôåé ìßá ëßóôá áðü Blind Carbon-Copy ðñïïñéóìïýò óôï e-mail ìÞíõìá. · ÐñïóèÞêç óôçí HTML êëÜóç: [1mHTML( int capacity )[0m ×ñçóéìïðïéåßôáé üôáí ãíùñßæïõìå ðüóï ÷þñï ôï ìÞíõìá èá ÷ñåéáóôåß íá Ý÷åé ðáñá÷ùñçìÝíï. [1mpublic void unorderedList()[0m Áñ÷ßæåé ìßá ìç ôáîéíïìçìÝíç ëßóôá. [1mpublic void orderedList()[0m Áñ÷ßæåé ìßá ôáîéíïìçìÝíç ëßóôá. [1mpublic void directoryList()[0m Áñ÷ßæåé ìßá ëßóôá êáôáëüãùí. [1mpublic void menuList()[0m Áñ÷ßæåé ìßá ëßóôá ìåíïý. [1mvoid anchor( String anchorName )[0m Ðñïóäéïñßæåé Ýíá anchor. [1mvoid link( String url, String text )[0m Ðñïóäéïñßæåé Ýíáí äåóìü. [1mvoid applet( String url, String altText )[0m Ðñïóäéïñßæåé Ýíáí äåóìü applet. · ÅðéôñÝðåé öùëéáóìÝíåò (nested) HTML ëßóôåò. · ÐñïóèÞêç êþäéêá åëÝã÷ïõ óöáëìÜôùí ãéá íá åðéâÜëëåé óùóôÞ ôáîéíüìçóç ôçò HTML ëßóôáò êùäéêþí äéáìüñöùóçò. · Ç ôïðïèåóßá ôïõ áñ÷åßïõ ôùí äåäïìÝíùí ðåñéâÜëëïíôïò èá ðñÝðåé íá åßíáé äéáìïñöþóéìï áðü ôï Makefile. · ÁðáëëáãÞ áðü ôï øåýôéêá Üäåéï üíïìá/ôéìÞ æåõãÜñé ðïõ åìöáíßæåôáé ìÝóá óôç ëßóôá üôáí áíôéìåôùðßæïõìå ôçí GET ìÝèïäï ôçò ìåôáöïñÜò äåäïìÝíùí. · ÓêÝøç ãéá íá Ý÷ïõìå ôï CGI íá åêôåëåß ôçí java.util.Enumeration åðéöÜíåéá ãéá íá ðáñÝ÷åé åðéôõ÷þò ïíüìáôá ìåôáâëçôþí. · ÐñïóèÞêç ìéáò Test êëÜóçò, ðïõ èá ÷ñçóéìïðïéïýóå êÜèå ìÝèïäï óå áõôü ôï ðáêÝôï. · Ôåêìçñßùóç ðþò ïé CGI_Test, Email_Test êáé HTML_Test ÷ôßóôçêáí ç ìßá ðÜíù óôçí Üëëç ãéá íá ðáñÝ÷ïõí áõîáíüìåíïõò åëÝã÷ïõò ãéá óêïðïýò åêóöáëìÜôùóçò. · Ôåêìçñßùóç ðþò ç Test ÷ñçóéìïðïéåß êÜèå ÷áñáêôçñéóôéêü äéáèÝóéìï óå áõôü ôï ðáêÝôï. [1m7. ÁëëáãÝò[0m [1m7.1. ÁëëáãÝò áðü ôçí 0.4 óôçí 0.5[0m · ÁëëÜ÷ôçêå ç ôåêìçñßùóç êáé ôá ó÷üëéá ãéá íá áíôéêáôïðôñßæåôáé ç ôåëéêÞ öýóç áõôÞò ôçò êõêëïöïñßáò. [1m7.2. ÁëëáãÝò áðü ôçí 0.3 óôçí 0.4[0m · Åíóáñêþèçêå ç HTML êëÜóç ãéá íá ðáñÝ÷åé åëÜ÷éóôç ëåéôïõñãéêüôçôá. · ÃñÜöôçêå ç HTML_Test êëÜóç êáé ôï javahtmltest.html-dist. · ÐñïóôÝèçêáí ïé HTML ìÝèïäïé ãéá íá áíôéìåôùðéóôåß ìéá ëßóôá ïñéóìþí. [1m7.3. ÁëëáãÝò áðü ôçí 0.2 óôçí 0.3[0m · ÐñïóôÝèçêáí ïé Text êáé Email êëÜóåéò. Ç HTML åðßóçò ðñïóôÝèçêå, áëëÜ Þôáí ìüíï Ýíá áðüêïììá óå áõôü ôï óçìåßï. · ÔïðïèåôÞèçêáí ïé äéÜöïñåò êëÜóåéò óå ðáêÝôá. Ïé êýñéåò êëÜóåéò åßíáé óôï Orbits.net.*, ç êëÜóç õðïóôÞñéîçò Text åßíáé óôï Orbits.text.Text. · ÁëëÜ÷ôçêå ôï CGItest óå CGI_Test. · ÐñïóôÝèçêå ç Email_Test êëÜóç. [1m7.4. ÁëëáãÝò áðü ôçí 0.1 óôçí 0.2[0m · Ïé ìåôáâëçôÝò ðåñéâÜëëïíôïò ôïðïèåôïýíôáé óå Ýíá ðñïóùñéíü áñ÷åßï áíôß íá åßíáé óôïéâáãìÝíåò óôç ãñáììÞ-åíôïëþí ôïõ Java äéåñìçíÝá . Ç CGI êëÜóç êáé ôï java.cgi Ýðñåðå íá ôñïðïðïéçèïýí. · Ôï javacgitest.html Ýããñáöï ãßíåôáé ìÝñïò ôçò äéáíïìÞò. · Ôá áñ÷åßá êåéìÝíïõ ðïõ ôñïðïðïéïýíôáé áðü ôçí make êáôÜ ôçí åãêáôÜóôáóç ðáñÝ÷ïíôáé ìå ïíüìáôá ðïõ ôåëåéþíïõí óå [4m-dist[24m.