Åëëçíéêü 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[lowbar]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[lowbar]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[lowbar]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 ______________________________________________________________________ 1. ÅéóáãùãÞ Åîáéôßáò ôïõ ôñüðïõ ðïõ ç Java åßíáé ó÷åäéáóìÝíç, ï ðñïãñáììáôéóôÞò äåí Ý÷åé åýêïëç ðñüóâáóç óôéò ìåôáâëçôÝò ðåñéâÜëëïíôïò ôïõ óõóôÞìáôïò. Åîáéôßáò ôïõ ôñüðïõ ðïõ åßíáé ñõèìéóìÝíï ôï Java Development Kit (JDK), åßíáé áíáãêáßï íá ÷ñçóéìïðïéåßôå ðïëëáðëÜ óýìâïëá ãéá íá êáëåßôå Ýíá ðñüãñáììá, ôï ïðïßï äåí êïëëÜåé êáé ðïëý êáëÜ ìå ôïí ôõðéêü ôñüðï ëåéôïõñãéþí ìå öüñìåò/CGI ôçò HTML. ÕðÜñ÷ïõí ôñüðïé áíôéìåôþðéóçò áõôþí ôùí ðåñéïñéóìþí, êáé Ý÷ù åöáñìüóåé Ýíáí áðü áõôïýò. ÄéáâÜóôå ðåñáéôÝñù ãéá ëåðôïìÝñåéåò. Áðü ôüôå ðïõ Ýãñáøá ôçí ðñïçãïýìåíç ðáñÜãñáöï ôï 1996, Ý÷ïõí ãßíåé ðïëëÝò áëëáãÝò óôçí ôå÷íïëïãßá Java. Åßíáé ðéèáíüí ðùò ìéá êáëýôåñç ëýóç ãéá íá ôñÝ÷åôå Java ðñïãñÜììáôá óôçí ðëåõñÜ-ôïõ-äéáêïìéóôÞ, åßíáé ôþñá äéáèÝóéìç -- ßóùò íá ðñÝðåé íá ñßîåôå ìéá ìáôéÜ óôá servlets. 1.1. ÐñïãåíÝóôåñç Ãíþóç ÕðïèÝôù üôé Ý÷åôå ìßá ãåíéêÞ ãíþóç ôçò HTML êáé ôùí åííïéþí CGI êáé ôïõëÜ÷éóôïí ìéá åëÜ÷éóôç ãíþóç ôïõ äéáêïìéóôÞ HTTP óáò. Èá ðñÝðåé åðßóçò íá ãíùñßæåôå ðþò íá ðñïãñáììáôßóåôå óå Java, áëëéþò ðïëëÜ áðü áõôÜ äå èá âãÜæïõí íüçìá. 1.2. Áõôü ôï ¸ããñáöï Ç ôåëåõôáßá Ýêäïóç áõôïý ôïõ åããñÜöïõ ìðïñåß íá äéáâáóôåß óôçí http://www.orbits.com/software/Java_CGI.html. 1.3. Ôï ðáêÝôï Ç ôåëåõôáßá Ýêäïóç ôïõ ðáêÝôïõ ðïõ ðåñéãñÜöåôáé åäþ ìðïñåß íá ðñïóðåëáóôåß ìÝóù áíþíõìï 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. 1.4. Ç Ëßóôá Ôá÷õäñïìåßïõ ¸÷ù äçìéïõñãÞóåé ìßá ëßóôá majordomo þóôå íá åðéôñÝðù áíèñþðïõò íá âïçèïýí ï Ýíáò ôïí Üëëïí, íá ëýíïõí áìïéâáßá ôá ðñïâëÞìáôÜ ôïõò åãêáèéóôþíôáò êáé ÷ñçóéìïðïéþíôáò áõôü ôï ëïãéóìéêü. Óôåßëôå Ýíá ìÞíõìá óôçí javacgi-request@orbits.com, ðåñéëáìâÜíïíôáò ôç ëÝîç subscribe. 2. Ñõèìßæïíôáò ôï ÄéáêïìéóôÞ óáò íá ôñÝ÷åé ðñïãñÜììáôá Java CGI (ìå åðåîçãÞóåéò) Áõôü ôï ôìÞìá èá óáò êáèïäçãÞóåé êáôÜ ôçí åãêáôÜóôáóç ôïõ ðáêÝôïõ ìïõ Java CGI ìå Üöèïíåò åðåîçãÞóåéò Ýôóé þóôå íá ãíùñßæåôå ðïéá èá åßíáé ôá áðïôåëÝóìáôá ôùí åíåñãåéþí óáò. Áí áðëþò èÝëåôå íá åãêáôáóôÞóåôå ôá ðñïãñÜììáôá êáé äåí åíäéáöÝñåóôå êáèüëïõ ãéá ôá ãéáôß êáé ãéá ðïéïõò ëüãïõò, ðçãáßíåôå óôçí ``Ñõèìßæïíôáò ôïí ÄéáêïìéóôÞ óáò íá ôñÝ÷åé ðñïãñÜììáôá Java CGI (ï óýíôïìïò ôñüðïò)''. 2.1. ÁðáéôÞóåéò ÓõóôÞìáôïò Áõôü ôï ëïãéóìéêü èá ðñÝðåé íá äïõëåýåé óå êÜèå unix-like äéáêïìéóôÞ éóôïý ðïõ Ý÷åé åãêáôåóôçìÝíï ôï Java Development Kit. Åãþ ôï ÷ñçóéìïðïéþ óå Ýíá óýóôçìá Debian Linux ðïõ ôñÝ÷åé ôïí apache óáí äáßìïíá HTTP. Áí äéáðéóôþóåôå üôé äåí ôñÝ÷åé óôïí äéêü óáò äéáêïìéóôÞ, ðáñáêáëþ åðéêïéíùíÞóôå ìå ôç ëßóôá ôá÷õäñïìåßïõ. Äåßôå ôç ``The Mailing List'' ãéá ëåðôïìÝñåéåò. Äõóôõ÷þò, ï Java run-time äéåñìçíåõôÞò öáßíåôáé íá åßíáé êÜôé óáí öáôáïýëáò ìíÞìçò -- ßóùò íá èÝëåôå íá ñßîåôå ëßãá ðåñéóóüôåñá megabytes áðü RAM óôïí åîõðçñåôçôÞ óáò áí èá ÷ñçóéìïðïéåßôå ðïëý ðñïãñÜììáôá Java CGI. 2.2. Åðéðñüóèåôï Ëïãéóìéêü Java CGI Ôï ëïãéóìéêü ðïõ Ýãñáøá ãéá íá âïçèÞóåé óå áõôü ëÝãåôáé Java CGI. Ìðïñåßôå íá ôï ðÜñåôå áðü ôï ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz. (Ï áñéèìüò Ýêäïóçò ìðïñåß íá Ý÷åé áëëÜîåé). 2.3. ÎåðáêåôÜñïíôáò ôïí ðçãáßï êþäéêá Âñåßôå Ýíáí êáôÜëïãï ðïõ óáò âïëåýåé óôïí ïðïßï èá îåðáêåôÜñåôå áõôü ôï ðáêÝôï. (Áí äåí Ý÷åôå áêüìç Ýíá óôáèåñü ôüðï íá ôïðïèåôåßôå ðáêÝôá, ðñïôåßíù íá ÷ñçóéìïðïéÞóåôå ôïí /usr/local/src.) ÎåðáêåôÜñåôå ôç äéáíïìÞ ìå áõôÞ ôçí åíôïëÞ: gzip -dc java_cgi-0.5.tgz | tar -xvf - ÁõôÞ èá äçìéïõñãÞóåé Ýíáí êáôÜëïãï ìå üíïìá java_cgi-0.5. Åêåß ìÝóá èá âñåßôå ôá áñ÷åßá ðïõ áíáöÝñïíôáé óôï õðüëïéðï áõôïý ôïõ åããñÜöïõ. (Áí ï áñéèìüò Ýêäïóçò Ý÷åé áëëÜîåé, ÷ñçóéìïðïéÞóôå ôéò ïäçãßåò ðïõ âñßóêïíôáé óôç äéáíïìÞ ðïõ êáôåâÜóáôå). 2.4. Áðïöáóßóôå ãéá ôéò ðïëéôéêÝò ôïðéêþí äéáäñïìþí óáò ÐñÝðåé íá áðïöáóßóåôå ðïý èÝëåôå íá æïõí ôá Java CGI ðñïãñÜììáôÜ óáò. ÃåíéêÜ, èá èÝëåôå íá ôá ôïðïèåôÞóåôå óå Ýíáí êáôÜëïãï ðáñÜëëçëá ìå ôïí cgi-bin êáôÜëïãü óáò. Ï äéêüò ìïõ äéáêïìéóôÞò apache Þôáí ñõèìéóìÝíïò íá ÷ñçóéìïðïéÞóåé ôïí /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 áíôß áõôÞò. 2.5. ÅëÝã÷ïíôáò ôçí åãêáôÜóôáóÞ óáò ÅãêáôåóôçìÝíá áðü ôç äéáíïìÞ åßíáé 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 êáôÜëïãü óáò áöïý äåß÷íïõí óôï ÷ñÞóôç ðëçñïöïñßåò ðïõ åßíáé êáíïíéêÜ ìüíï äéáèÝóéìåò óôïí äéáêïìéóôÞ. 3. Ñõèìßæïíôáò ôïí ÄéáêïìéóôÞ óáò íá ôñÝ÷åé ðñïãñÜììáôá Java CGI (ï óýíôïìïò ôñüðïò) · ÐÜñôå ôï ðáêÝôï Java CGI áðü ôï 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 áíôß áõôÞò. · Èá ðñÝðåé íá åßóôå Ýôïéìïé íá îåêéíÞóåôå. 4. Åêôåëþíôáò Ýíá ðñüãñáììá Java CGI 4.1. Åìðüäéá óôï ôñÝîéìï ðñïãñáììÜôùí Java êÜôù áðü ôï ìïíôÝëï CGI ÕðÜñ÷ïõí äýï êýñéá ðñïâëÞìáôá óôï ôñÝîéìï åíüò ðñïãñÜììáôïò Java áðü Ýíáí äéáêïìéóôÞ éóôïý: 4.1.1. Äåí ìðïñåßôå íá ôñÝîåôå ðñïãñÜììáôá Java üðùò ôá êáíïíéêÜ åêôåëÝóéìá. ×ñåéÜæåôáé íá ôñÝîåôå ôïí äéåñìçíÝá Java run-time êáé íá ðáñÝ÷åôå ôçí áñ÷éêÞ êëÜóç (ðñüãñáììá ãéá íá ôñÝîåôå) óôç ãñáììÞ åíôïëþí. Ìå ìßá öüñìá HTML, äåí õðÜñ÷åé êáìßá öñïíôßäá ãéá íá óôÝëíåôå ìßá ãñáììÞ åíôïëþí óôïí äéáêïìéóôÞ éóôïý. 4.1.2. Ç Java äåí Ý÷åé ãåíéêÞ ðñüóâáóç óôï ðåñéâÜëëïí. ÊÜèå ìåôáâëçôÞ ðåñéâÜëëïíôïò ðïõ èá ÷ñåéáóôåß áðü ôï ðñüãñáììá Java ðñÝðåé íá ðåñáóôåß ìå óáöÞíåéá. Äåí õðÜñ÷åé êáìßá ìÝèïäïò ðáñüìïéá ìå ôç ëåéôïõñãßá ôçò C, getenv() . 4.2. Îåðåñíþíôáò ðñïâëÞìáôá óôï ôñÝîéìï ðñïãñáììÜôùí Java CGI Ãéá íá áíôéìåôùðßóåôå áõôÜ ôá åìðüäéá, Ýãñáøá Ýíá CGI ðñüãñáììá êåëýöïõò ðïõ ðáñÝ÷åé ôéò ðëçñïöïñßåò ðïõ ÷ñåéÜæïíôáé áðü ôïí Java äéåñìçíÝá. 4.2.1. Ôï java.cgi script Áõôü ôï óåíÜñéï êåëýöïõò äéá÷åéñßæåôáé ôçí áëëçëåðßäñáóç ìåôáîý ôïõ HTTP äáßìïíá êáé ôïõ ðñïãñÜììáôïò Java CGI ðïõ åðéèõìåßôå íá ÷ñçóéìïðïéÞóåôå. ÅîÜãåé ôï üíïìá ôïõ ðñïãñÜììáôïò ðïõ èÝëåôå íá ôñÝîåôå áðü ôá äåäïìÝíá ðïõ ðáñÝ÷ïíôáé áðü ôï äéáêïìéóôÞ. ÓõëëÝãåé üëá ôá äåäïìÝíá ðåñéâÜëëïíôïò óå Ýíá ðñïóùñéíü áñ÷åßï. ¾óôåñá, ôñÝ÷åé ôïí Java run-time äéåñìçíÝá ìå ôï üíïìá ôïõ áñ÷åßïõ áðü ôéò ðëçñïöïñßåò ðåñéâÜëëïíôïò êáé ôï üíïìá ôïõ ðñïãñÜììáôïò ðïõ ðñïóôÝèçêå óôç ãñáììÞ-åíôïëþí. Ôï java.cgi script äéáìïñöþèçêå êáé åãêáôáóôÜèçêå óôï ``Áðïöáóßóôå ãéá ôéò ðïëéôéêÝò ôïðéêþí äéáäñïìþí óáò''. 4.2.2. Êáëþíôáò ôï java.cgi áðü ìßá öüñìá HTML Ïé öüñìåò ìïõ ðïõ ÷ñçóéìïðïéïýí ðñïãñÜììáôá 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 ãéá íá ôñÝîåôå. 5. ×ñçóéìïðïéþíôáò ôéò Java CGI ÊëÜóåéò ÕðÜñ÷ïõí ðñïò ôï ðáñüí ôñåéò êýñéåò êëÜóåéò ðïõ õðïóôçñßæïíôáé -- ``CGI'', ``Email'' êáé ``HTML''. ÓêÝöôïìáé íá ðñïóèÝóù êëÜóåéò ãéá íá áíôéìåôùðßóù ôá MIME-äéáìïñöùìÝíá åéóáãüìåíá (input) êáé åîáãüìåíá (output) -- MIMEin & MIMEout, áíôßóôïé÷á. ÕðÜñ÷ïõí åðßóçò ìåñéêÝò support êáé test êëÜóåéò. ``CGI_Test'', ``Email_Test'' êáé ``HTML_Test'' óêïðåýïõí íá ÷ñçóéìïðïéçèïýí ãéá íá åëÝãîïõí ôçí åãêáôÜóôáóÞ óáò. Ìðïñïýí åðßóçò íá ÷ñçóéìïðïéçèïýí óáí Ýíá óçìåßï-åêêßíçóçò ãéá ôá äéêÜ óáò ðñïãñÜììáôá Java ðïõ ÷ñçóéìïðïéïýí áõôÞ ôç âéâëéïèÞêç êëÜóåùí. Ç ``Text'' êëÜóç åßíáé ç õðåñêëÜóç êáé ãéá ôéò äýï êëÜóåéò, ôçí Email êáé ôçí HTML. 5.1. CGI 5.1.1. Óýíôáîç êëÜóçò public class CGI 5.1.2. ÐåñéãñáöÞ êëÜóçò Ç CGI êëÜóç êñáôÜåé ôéò ``CGI Ðëçñïöïñßåò'' -- ÌåôáâëçôÝò ðåñéâÜëëïíôïò áðü ôïí äéáêïìéóôÞ éóôïý êáé ôï üíïìá/ôéìÞ ðïõ óôÝëíïíôáé áðü ìßá öüñìá üôáí ç submit åíÝñãåéá åßíáé åðéëåãìÝíç. ¼ëåò ïé ðëçñïöïñßåò áðïèçêåýïíôáé óå Ýíá Properties áíôéêåßìåíï êëÜóçò. ÁõôÞ ç êëÜóç åßíáé óôï ðáêÝôï ``Orbits.net''. 5.1.3. Ðåñßëçøç ìåëþí CGI() // ÊáôáóêåõáóôÞò. getNames() // Ðáßñíåé ôç ëßóôá ïíïìÜôùí. getValue() // Ðáßñíåé ôçí ôéìÞ öüñìáò êáôÜ ðñïóäéïñéóìÝíï üíïìá. 5.1.4. Äåßôå åðßóçò CGI_Test. 5.1.5. CGI() Purpose ÊáôáóêåõÜæåé Ýíá áíôéêåßìåíï ðïõ ðåñéÝ÷åé ôá äéáèÝóéìá CGI äåäïìÝíá. Syntax public CGI() Description ¼ôáí êáôáóêåõÜæåôáé Ýíá áíôéêåßìåíï CGI, üëåò ïé äéáèÝóéìåò CGI ðëçñïöïñßåò áíáññïöïýíôáé óå áðïèÞêç ôïðéêÜ óôï íÝï áíôéêåßìåíï. 5.1.6. getNames() Purpose ÊÜíåé ëßóôá ôùí ïíïìÜôùí ðïõ åßíáé ïñéóìÝíåò ãéá íá Ý÷ïõí áíôßóôïé÷åò ôéìÝò. Syntax public Enumeration getKeys () Description ÐáñÝ÷åé ôçí ðëÞñç ëßóôá ôùí ïíïìÜôùí ãéá ôá ïðïßá áíôßóôïé÷åò ôéìÝò åßíáé ïñéóìÝíåò. Returns Ìßá Enumeration üëùí ôùí ïñéóìÝíùí ïíïìÜôùí. 5.1.7. getValue() Purpose ÅðáíáêôÜ ôçí value óõó÷åôéóìÝíç ìå ôï name ðïõ Ý÷åé ïñéóôåß. Syntax public String getValue ( String name ) Description ÁõôÞ ç ìÝèïäïò ðáñÝ÷åé ôç áíôéóôïé÷ßá ìåôáîý ôùí names êáé values ðïõ óôÝëíïíôáé áðü ìßá HTML öüñìá. ÐáñÜìåôñïò name Ôï êëåéäß êáôÜ ôï ïðïßï ïé ôéìÝò åðéëÝãïíôáé. Returns ¸íá String ðïõ ðåñéëáìâÜíåé ôçí ôéìÞ. 5.2. CGI_Test ÁõôÞ ç êëÜóç ðáñÝ÷åé Ýíá ðáñÜäåéãìá ôïõ ðþò íá ÷ñçóéìïðïéåßôå ôçí êëÜóç CGI êáé Ýíá ðñüãñáììá åëÝã÷ïõ ðïõ ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá íá åðéâåâáéþóåé üôé ôï ðáêÝôï Java CGI ëåéôïõñãåß óùóôÜ. 5.2.1. Ðåñßëçøç ìåëþí main() // Ðñüãñáììá main(). 5.2.2. Äåßôå åðßóçò CGI. 5.2.3. main() Purpose ÐáñÝ÷åé ìßá main() ìÝèïäï. Syntax public static void main( String argv[] ) Description Áõôü åßíáé ôï óçìåßï êáôá÷þñçóçò ãéá Ýíá ðñüãñáììá CGI ðïõ äåí êÜíåé ôßðïôá Üëëï áðü ôï íá áíáöÝñåé ìßá ëßóôá ìå üëá ôá äéáèÝóéìá üíïìá/ôéìÞ æåõãÜñéá êáé ôéò ôñÝ÷ïõóåò ôéìÝò ôïõò. ÐáñÜìåôñïò argv[] Åðé÷åéñÞìáôá ðåñáóìÝíá óôï ðñüãñáììá áðü ôï java.cgi script. Ðñïò ôï ðáñüí á÷ñçóéìïðïßçôç. 5.3. Email 5.3.1. Óýíôáîç ÊëÜóçò public class Email extends Text 5.3.2. ÐåñéãñáöÞ êëÜóçò Ìçíýìáôá ó÷çìáôßæïíôáé ìå ôçí Text êëÜóç add*() ìåèüäïõò êáé ôéò e- mail-óõãêåêñéìÝíåò ìåèüäïõò ðïõ ðñïóôßèåíôáé áðü áõôÞí ôçí êëÜóç. ¼ôáí ïëïêëçñùèåß, ôï ìÞíõìá óôÝëíåôáé óôïí ðñïïñéóìü ôïõ. ÁõôÞ ç êëÜóç åßíáé óôï ðáêÝôï ``Orbits.net''. 5.3.3. Ðåñßëçøç ìåëþí Email() // ÊáôáóêåõáóôÞò. send() // ÓôÝëíåé ôï e-mail ìÞíõìá. sendTo() // ÐñïóèÝôåé Ýíáí ðñïïñéóìü ãéá ôï ìÞíõìá. subject() // Ñõèìßæåé ôï ÈÝìá: ãéá ôï ìÞíõìá. 5.3.4. Äåßôå åðßóçò Email_Test, Text. 5.3.5. Email() Purpose ÊáôáóêåõÜæåé Ýíá áíôéêåßìåíï ôï ïðïßï èá ðåñéÝ÷åé Ýíá email ìÞíõìá. Syntax public Email() Description Ñõèìßæåé Ýíá êåíü ìÞíõìá ãéá íá ïëïêëçñùèåß áðü ôéò Email ìåèüäïõò. See Also Text. 5.3.6. send() Purpose ÓôÝëíåé ôï e-mail ìÞíõìá. Syntax public void send () Description ÁõôÞ äéáìïñöþíåé êáé óôÝëíåé ôï ìÞíõìá. Áí êáìßá äéåýèõíóç ðñïïñéóìïý äåí Ý÷åé ñõèìéóôåß, äå ëáìâÜíåôáé êáìßá åíÝñãåéá. 5.3.7. sendTo() Purpose ÐñïóèÝôåé Ýíáí ðñïïñéóìü ãéá áõôü ôï ìÞíõìá. Syntax public String sendTo ( String address ) Description ÐñïóèÝôåé ôçí address óôç ëßóôá ðñïïñéóìþí ãéá áõôÞí ôçí ìÝèïäï. Äåí õðÜñ÷åé êáíÝíá üñéï ñýèìéóçò óôïí áñéèìü ðñïïñéóìþí ðïõ Ýíá e-mail ìÞíõìá ìðïñåß íá Ý÷åé. Åßìáé óßãïõñïò ðùò áí ó÷çìáôßóåôå ôç ëßóôá áñêåôÜ ìåãÜëç, ìðïñåßôå íá õðåñâåß ôå ôï ìÝãåèïò ôçò ëßóôáò ðáñáìÝôñùí ðïõ ï Mail Transport Agent ìðïñåß íá áðïäå÷èåß Þ íá êáôáíáëþóåôå ôç ìíÞìç óáò. Parameter/ address ¸íáò ðñïïñéóìüò ãéá íá óôåßëåôå áõôü ôï ìÞíõìá. 5.3.8. subject() Purpose ÓôÝëíåé ôï èÝìá ãéá áõôü ôï ìÞíõìá. Syntax public void subject ( String subject ) Description ÁõôÞ ç ìÝèïäïò ñõèìßæåé ôï êåßìåíï ãéá ôçí ãñáììÞ Subject: ôïõ e-mail. Áí êëçèåß ðåñéóóüôåñåò áðü ìßá öïñÝò, ôï ôåëåõôáßï ñõèìéóìÝíï èÝìá åßíáé áõôü ðïõ ÷ñçóéìïðïéåßôáé. Parameter subject Ôï êåßìåíï ôçò Subject: ãñáììÞò áõôïý ôïõ ìçíýìáôïò. 5.4. Email_Test ÁõôÞ ç êëÜóç ðáñÝ÷åé Ýíá ðáñÜäåéãìá ôïõ ðþò íá ÷ñçóéìïðïéåßôå ôçí Email êëÜóç êáé Ýíá test ðñüãñáììá ðïõ ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá íá åðéâåâáéþóåé üôé ôï Java CGI ðáêÝôï ëåéôïõñãåß óùóôÜ. 5.4.1. Ðåñßëçøç ìåëþí main() // Ðñüãñáììá main(). 5.4.2. Äåßôå åðßóçò Email. 5.4.3. main() Purpose ÐáñÝ÷åé ìßá main() ìÝèïäï. Syntax public static void main( String argv[] ) Description Áõôü åßíáé ôï óçìåßï êáôá÷þñçóçò ãéá Ýíá ðñüãñáììá CGI ðïõ áíáöÝñåé ìßá ëßóôá ìå üëá ôá äéáèÝóéìá üíïìá/ôéìÞ æåõãÜñéá êáé ôéò ôñÝ÷ïõóåò ôéìÝò ôïõò. Åðßóçò, èá óôåßëåé áõôÞ ôç ëßóôá óôçí êáèïñéóìÝíç äéåýèõíóç óôçí Email ìåôáâëçôÞ. ÐáñÜìåôñïò argv[] Åðé÷åéñÞìáôá ðåñíéïýíôáé óôï ðñüãñáììá áðü ôï java.cgi óåíÜñéï. Ðñïò ôï ðáñüí á÷ñçóéìïðïßçôá. 5.5. HTML 5.5.1. Óýíôáîç êëÜóçò public class HTML extends Text 5.5.2. ÐåñéãñáöÞ êëÜóçò Ìçíýìáôá ó÷çìáôßæïíôáé ìå ôçí Text êëÜóç add*() ìåèüäïõò êáé ôéò HTML-óõãêåêñéìÝíåò ìåèüäïõò ðïõ ðñïóôßèåíôáé áðü áõôÞí ôçí êëÜóç. ¼ôáí ïëïêëçñùèåß, ôï ìÞíõìá óôÝëíåôáé óôïí ðñïïñéóìü ôïõ. Ðñïò ôï ðáñüí, äåí õðÜñ÷åé Ýëåã÷ïò óöáëìÜôùí ãéá íá åðéâåâáéþóåé üôé ïé ìÝèïäïé äçìéïõñãßáò-ëßóôáò ÷ñçóéìïðïéïýíôáé óå ìßá óùóôÞ óåéñÜ, ïðüôå ï ðñïãñáììáôéóôÞò ðñÝðåé íá ðáßñíåé ìÝôñá ãéá íá ìçí ðáñáâéÜóåé ôçí HTML óýíôáîç. ÁõôÞ ç êëÜóç åßíáé óôï ðáêÝôï ``Orbits.net''. 5.5.3. Ðåñßëçøç ìåëþí HTML() // ÊáôáóêåõáóôÞò. author() // Ñõèìßæåé ôï üíïìá ôïõ óõããñáöÝá ôïõ åããñÜöïõ. definitionList() // ÎåêéíÜ ìßá ëßóôá ïñéóìþí. definitionListTerm() // ÐñïóèÝôåé Ýíáí üñï óôç ëßóôá ïñéóìþí. endList() // Ôåëåéþíåé ìßá ëßóôá. listItem() // ÐñïóèÝôåé ìßá êáôá÷þñéóç óå ìßá ëßóôá. send() // ÓôÝëíåé ôï HTML ìÞíõìá. title() // Ñõèìßæåé ôï êåßìåíï ãéá ôïí ôßôëï ôïõ åããñÜöïõ. 5.5.4. Äåßôå åðßóçò HTML_Test, Text. 5.5.5. HTML() Purpose Äçìéïõñãåß Ýíá áíôéêåßìåíï ðïõ èá ðåñéÝ÷åé Ýíá HTML ìÞíõìá. Syntax public HTML() Description Ñõèìßæåé Ýíá êåíü ìÞíõìá íá óõìðëçñùèåß áðü ôéò HTML ìåèüäïõò. See Also Text. 5.5.6. author() Purpose Ñõèìßæåé ôï üíïìá ôïõ óõããñáöÝá ôïõ åããñÜöïõ. Syntax public void author ( String author ) Description Ñõèìßæåé ôï üíïìá ôïõ óõããñáöÝá ôïõ åããñÜöïõ óå author. Parameter/ author Ôï êåßìåíï ðïõ ðñÝðåé íá ÷ñçóéìïðïéçèåß óáí ï óõããñáöÝáò áõôïý ôïõ ìçíýìáôïò. See Also title(). 5.5.7. definitionList() Purpose Áñ÷ßæåé ìéá ëßóôá ïñéóìþí. Syntax public void definitionList () Description Áñ÷ßæåé ìéá ëßóôá ïñéóìþí. Ç definition list åßíáé ìßá ëßóôá åéäéêåõìÝíç Ýôóé þóôå êÜèå êáôá÷þñéóç óôç ëßóôá åßíáé Ýíáò term áêïëïõèïýìåíïò áðü ôï text ïñéóìþí ãéá áõôüí ôïí üñï. Ç áñ÷Þ ìéáò ëßóôáò ïñéóìþí èá ðñÝðåé íá áêïëïõèåßôáé áðü ôïõëÜ÷éóôïí) Ýíá üñïò/êåßìåíï æåõãÜñé êáé ìßá êëÞóç óôçí endList() ìÝèïäï. Óçìåéþóôå ðùò, ðñïò ôï ðáñüí, ïé ëßóôåò äåí ìðïñïýí íá åßíáé öùëéáóìÝíåò (nested) ç ìßá ìÝóá óôçí Üëëç. See Also definitionListTerm(), endList(), listItem(). 5.5.8. definitionListTerm() Purpose ÐñïóèÝôåé Ýíáí üñï óôç ëßóôá ïñéóìþí. Syntax public void definitionListTerm () Description ÐñïóèÝôåé Ýíáí üñï óôç ëßóôá ïñéóìþí. Ôï êåßìåíï ãéá ôï êïììÜôé ôïõ üñïõ ôçò ôñÝ÷ïõóáò êáôá÷þñçóçò ëßóôáò èá ðñÝðåé íá åðéóõíÜðôåôáé óôï ìÞíõìá áöïý ç ìÝèïäïò áõôïý êáëåßôáé êáé ðñéí ìéá áíôßóôïé÷ç listItem ìÝèïäïò êáëåßôáé. See Also definitionList(), listItem(). 5.5.9. endList() Purpose Ôåëåéþíåé ìéá ëßóôá. Syntax public void endList () Description Ôåëåéþíåé ìéá ëßóôá. ÁõôÞ ç ìÝèïäïò êëåßíåé ìßá ëßóôá. Óçìåéþóôå üôé, ðñïò ôï ðáñüí, ïé ëßóôåò äåí ìðïñïýí íá åßíáé öùëéáóìÝíåò (nested), ç ìßá ìÝóá óôçí Üëëç. See Also definitionList(). 5.5.10. listItem() Purpose ÐñïóèÝôåé ìßá êáôá÷þñçóç óå ìßá ëßóôá. Syntax public void listItem () public void listItem ( String item ) public boolean listItem ( String term, String item ) Description ÐñïóèÝôåé ìßá êáôá÷þñçóç óå ìßá ëßóôá. Áí ç ðñþôç öüñìá ÷ñçóéìïðïéåßôáé, ôï êåßìåíï ãéá ôçí ôñÝ÷ùí áíôéêåßìåíï ëßóôáò èá ðñÝðåé íá åðéóõíÜðôåôáé óôï ìÞíõìá áöïý ç ìÝèïäïò áõôÞ êáëåßôáé êáé ðñéí Üëëåò ìÝèïäïé ëßóôáò êáëïýíôáé. Óôçí äåýôåñç êáé ôñßôç öüñìá, ôï item êåßìåíï ðñïóäéïñßæåôáé óáí ìßá ðáñÜìåôñïò óôç ìÝèïäï áíôß íá (Þ åðéðñïóèÝôùò óôï íá) åðéóõíÜðôåôáé óôï ìÞíõìá. Ç ôñßôç öüñìá åßíáé åéäéêÞ óôéò ëßóôåò ïñéóìþí êáé ðáñÝ÷åé êáé ôïí üñï êáé ôïõ ïñéóìü ôçò êáôá÷þñçóçò ëßóôáò. Parameters item Ôï êåßìåíï áõôÞò ôçò êáôá÷þñçóçò ëßóôáò. term Ôï êåßìåíï áõôÞò ôçò ëßóôáò ïñéóìþí ôïõ êïììáôéïý ôïõ üñïõ êáôá÷þñçóçò. See Also definitionList(), definitionListTerm(), endList(). 5.5.11. send() Purpose ÓôÝëíåé ôï HTML ìÞíõìá. Syntax public void send () Description ÓôÝëíåé ôï HTML ìÞíõìá. 5.5.12. title() Purpose Ñõèìßæåé ôï êåßìåíï ãéá ôïí ôßôëï åããñÜöïõ. Syntax public void title ( String title ) Description Ñõèìßæåé ôï êåßìåíï ãéá ôïí ôßôëï åããñÜöïõ. Parameter title Ôï êåßìåíï áõôïý ôïõ ôßôëïõ ôïõ ìçíýìáôïò. See Also author(). 5.6. HTML_Test ÁõôÞ ç êëÜóç ðáñÝ÷åé Ýíá ðáñÜäåéãìá ôïõ ðþò íá ÷ñçóéìïðïéåßôå ôçí HTML êëÜóç êáé Ýíá test ðñüãñáììá ðïõ ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá íá åðéâåâáéþóåé üôé ôï ðáêÝôï Java CGI ëåéôïõñãåß óùóôÜ. 5.6.1. Ðåñßëçøç ìåëþí main() // Ðñüãñáììá main(). 5.6.2. Äåßôå åðßóçò HTML. 5.6.3. main() Purpose ÐáñÝ÷åé ìßá main() ìÝèïäï. Syntax public static void main( String argv[] ) Description Áõôü åßíáé ôï óçìåßï êáôá÷þñçóçò ãéá Ýíá ðñüãñáììá CGI ðïõ åðéóôñÝöåé ìßá ëßóôá ôùí äéáèÝóéìùí üíïìá/ôéìÞ æåõãáñéþí óå Ýíá HTML Ýããñáöï, ìå ôï êÜèå üíïìá/ôéìÞ æåõãÜñé íá áðåéêïíßæåôáé óå Ýíá óôïé÷åßï ëßóôáò ïñéóìþí. ÐáñÜìåôñïò argv[] Åðé÷åéñÞìáôá ðåñáóìÝíá óôï ðñüãñáììá áðü ôï java.cgi óåíÜñéï. Ðñïò ôï ðáñüí äå ÷ñçóéìïðïéïýíôáé. 5.7. Text 5.7.1. Óýíôáîç êëÜóçò public abstract class Text 5.7.2. ÐåñéãñáöÞ êëÜóçò Ç êëÜóç åßíáé ç õðåñêëÜóç ôùí Email êáé HTML êëÜóåùí. Ìçíýìáôá ÷ôßæïíôáé ìå ôéò ìåèüäïõò óå áõôÞí ôçí êëÜóç êáé óõìðëçñþíåôáé êáé äéáìïñöþíåôáé ìå ôéò ìåèüäïõò óå õðïêëÜóåéò. ÁõôÞ ç êëÜóç åßíáé óôï ðáêÝôï ``Orbits.text''. 5.7.3. Ðåñßëçøç ìåëþí Text() // ÊáôáóêåõáóôÞò. add() // ÐñïóèÝôåé êåßìåíï óå áõôü ôï áíôéêåßìåíï. addLineBreak() // ÐñïóèÝôåé ìéá äéáêïðÞ ãñáììÞò. addParagraph() // ÐñïóèÝôåé ìßá äéáêïðÞ ðáñáãñÜöïõ. 5.7.4. Äåßôå åðßóçò Email, HTML. 5.7.5. add() Purpose ÐñïóèÝôåé êåßìåíï óå áõôü ôï áíôéêåßìåíï. Syntax public void add ( char addition ) public void add ( String addition ) public void add ( StringBuffer addition ) Description ÐñïóèÝôåé addition óôá ðåñéå÷üìåíá áõôïý ôïõ áíôéêåéìÝíïõ êåéìÝíïõ. Parameter addition Êåßìåíï ðïõ ðñÝðåé íá ðñïóôåèåß óôï áíôéêåßìåíï êåéìÝíïõ See Also addLineBreak(), addParagraph(). 5.7.6. addLineBreak() Purpose ÁíáãêÜæåé ìßá äéáêïðÞ ãñáììÞò óå áõôü ôï óçìåßï óôï êåßìåíï. Syntax public void addLineBreak () Description ÐñïóèÝôåé ìßá äéáêïðÞ ãñáììÞò óôï êåßìåíï óôï ôñÝ÷ïí óçìåßï. See Also add(), addParagraph(). 5.7.7. addParagraph() Purpose Áñ÷ßæåé ìßá íÝá ðáñÜãñáöï. Syntax public void add () Description Áñ÷ßæåé ìßá íÝá ðáñÜãñáöï óå áõôü ôï óçìåßï óôç ñïÞ êåéìÝíïõ. See Also add(), addLineBreak(). 6. ÌåëëïíôéêÜ Ó÷Ýäéá · ÐñïóèÞêç óôçí Email êëÜóç: Email( int capacity ) ×ñçóéìïðïéåßôáé üôáí ãíùñßæïõìå ðüóï ÷þñï ôï ìÞíõìá èá ÷ñåéáóôåß íá Ý÷åé ðáñá÷ùñçìÝíï. sendTo( String [] address ) ÐñïóèÝôåé ìßá ëßóôá ðñùôáñ÷éêþí ðñïïñéóìþí óôï e-mail ìÞíõìá. sendCc( String address ) ÐñïóèÝôåé Ýíá Carbon-Copy ðñïïñéóìü óôï e-mail ìÞíõìá. sendCc( String [] address ) ÐñïóèÝôåé ìßá ëßóôá áðü Carbon-Copy ðñïïñéóìïýò óôï e-mail ìÞíõìá. sendBcc( String address ) ÐñïóèÝôåé Ýíá Blind Carbon-Copy ðñïïñéóìü óôï e-mail ìÞíõìá. sendBcc( String [] address ) ÐñïóèÝôåé ìßá ëßóôá áðü Blind Carbon-Copy ðñïïñéóìïýò óôï e-mail ìÞíõìá. · ÐñïóèÞêç óôçí HTML êëÜóç: HTML( int capacity ) ×ñçóéìïðïéåßôáé üôáí ãíùñßæïõìå ðüóï ÷þñï ôï ìÞíõìá èá ÷ñåéáóôåß íá Ý÷åé ðáñá÷ùñçìÝíï. public void unorderedList() Áñ÷ßæåé ìßá ìç ôáîéíïìçìÝíç ëßóôá. public void orderedList() Áñ÷ßæåé ìßá ôáîéíïìçìÝíç ëßóôá. public void directoryList() Áñ÷ßæåé ìßá ëßóôá êáôáëüãùí. public void menuList() Áñ÷ßæåé ìßá ëßóôá ìåíïý. void anchor( String anchorName ) Ðñïóäéïñßæåé Ýíá anchor. void link( String url, String text ) Ðñïóäéïñßæåé Ýíáí äåóìü. void applet( String url, String altText ) Ðñïóäéïñßæåé Ýíáí äåóìü applet. · ÅðéôñÝðåé öùëéáóìÝíåò (nested) HTML ëßóôåò. · ÐñïóèÞêç êþäéêá åëÝã÷ïõ óöáëìÜôùí ãéá íá åðéâÜëëåé óùóôÞ ôáîéíüìçóç ôçò HTML ëßóôáò êùäéêþí äéáìüñöùóçò. · Ç ôïðïèåóßá ôïõ áñ÷åßïõ ôùí äåäïìÝíùí ðåñéâÜëëïíôïò èá ðñÝðåé íá åßíáé äéáìïñöþóéìï áðü ôï Makefile. · ÁðáëëáãÞ áðü ôï øåýôéêá Üäåéï üíïìá/ôéìÞ æåõãÜñé ðïõ åìöáíßæåôáé ìÝóá óôç ëßóôá üôáí áíôéìåôùðßæïõìå ôçí GET ìÝèïäï ôçò ìåôáöïñÜò äåäïìÝíùí. · ÓêÝøç ãéá íá Ý÷ïõìå ôï CGI íá åêôåëåß ôçí java.util.Enumeration åðéöÜíåéá ãéá íá ðáñÝ÷åé åðéôõ÷þò ïíüìáôá ìåôáâëçôþí. · ÐñïóèÞêç ìéáò Test êëÜóçò, ðïõ èá ÷ñçóéìïðïéïýóå êÜèå ìÝèïäï óå áõôü ôï ðáêÝôï. · Ôåêìçñßùóç ðþò ïé CGI_Test, Email_Test êáé HTML_Test ÷ôßóôçêáí ç ìßá ðÜíù óôçí Üëëç ãéá íá ðáñÝ÷ïõí áõîáíüìåíïõò åëÝã÷ïõò ãéá óêïðïýò åêóöáëìÜôùóçò. · Ôåêìçñßùóç ðþò ç Test ÷ñçóéìïðïéåß êÜèå ÷áñáêôçñéóôéêü äéáèÝóéìï óå áõôü ôï ðáêÝôï. 7. ÁëëáãÝò 7.1. ÁëëáãÝò áðü ôçí 0.4 óôçí 0.5 · ÁëëÜ÷ôçêå ç ôåêìçñßùóç êáé ôá ó÷üëéá ãéá íá áíôéêáôïðôñßæåôáé ç ôåëéêÞ öýóç áõôÞò ôçò êõêëïöïñßáò. 7.2. ÁëëáãÝò áðü ôçí 0.3 óôçí 0.4 · Åíóáñêþèçêå ç HTML êëÜóç ãéá íá ðáñÝ÷åé åëÜ÷éóôç ëåéôïõñãéêüôçôá. · ÃñÜöôçêå ç HTML_Test êëÜóç êáé ôï javahtmltest.html-dist. · ÐñïóôÝèçêáí ïé HTML ìÝèïäïé ãéá íá áíôéìåôùðéóôåß ìéá ëßóôá ïñéóìþí. 7.3. ÁëëáãÝò áðü ôçí 0.2 óôçí 0.3 · ÐñïóôÝèçêáí ïé Text êáé Email êëÜóåéò. Ç HTML åðßóçò ðñïóôÝèçêå, áëëÜ Þôáí ìüíï Ýíá áðüêïììá óå áõôü ôï óçìåßï. · ÔïðïèåôÞèçêáí ïé äéÜöïñåò êëÜóåéò óå ðáêÝôá. Ïé êýñéåò êëÜóåéò åßíáé óôï Orbits.net.*, ç êëÜóç õðïóôÞñéîçò Text åßíáé óôï Orbits.text.Text. · ÁëëÜ÷ôçêå ôï CGItest óå CGI_Test. · ÐñïóôÝèçêå ç Email_Test êëÜóç. 7.4. ÁëëáãÝò áðü ôçí 0.1 óôçí 0.2 · Ïé ìåôáâëçôÝò ðåñéâÜëëïíôïò ôïðïèåôïýíôáé óå Ýíá ðñïóùñéíü áñ÷åßï áíôß íá åßíáé óôïéâáãìÝíåò óôç ãñáììÞ-åíôïëþí ôïõ Java äéåñìçíÝá . Ç CGI êëÜóç êáé ôï java.cgi Ýðñåðå íá ôñïðïðïéçèïýí. · Ôï javacgitest.html Ýããñáöï ãßíåôáé ìÝñïò ôçò äéáíïìÞò. · Ôá áñ÷åßá êåéìÝíïõ ðïõ ôñïðïðïéïýíôáé áðü ôçí make êáôÜ ôçí åãêáôÜóôáóç ðáñÝ÷ïíôáé ìå ïíüìáôá ðïõ ôåëåéþíïõí óå -dist.