Java CGI HOWTO by David H. Silber javacgi-document@orbits.com 1998³â 12¿ù 1ÀÏ ¹öÀü 0.5 ¿Å±äÀÌ:¹ÚÁÖÈñ(jhpark@osnn.hanyang.ac.kr) ÀÌ HOWTO ¹®¼´Â ¾î¶»°Ô ÀÚ¹Ù·Î ÀÛ¼ºµÈ CGI ÇÁ·Î±×·¥ÀÌ ¼¹ö¿¡¼ »ç¿ë°¡´É Çϵµ·Ï ¼³Á¤ ÇÏ¸ç ¶Ç CGI ÇÁ·Î±×·¥À» ÀÛ¼ºÇϱâ À§ÇØ ¾î¶»°Ô ÀÚ¹Ù¸¦ »ç¿ëÇÏ´ÂÁö¸¦ ¼³¸íÇÑ´Ù. HOWTO ¹®¼µéÀº ¸®´ª½º ¿î¿µÃ¼Á¦¿¡¼ÀÇ »ç¿ëÀ» ¸ñÀûÀ¸·Î ÀÛ¼ºµÇÁö¸¸, ƯÁ¤ÇÑ À¯´Ð½º ¹öÀü¿¡ »ó°ü ¾øÀÌ Àû¿ëµÈ´Ù. ______________________________________________________________________ ¸ñÂ÷ 1. ¼Ò°³ 1.1 »çÀü Áö½Ä 1.2 º» ¹®¼¿¡ °üÇÏ¿© 1.3 ÆÐÅ°Áö 1.4 ¸ÞÀϸµ ¸®½ºÆ® AID CDATA mailing-list(LABEL)LABEL 2. ÀÚ¹Ù CGIÇÁ·Î±×·¥À» ½ÇÇàÇϱâ À§ÇØ ¼¹ö ¼ÂÆÃÇϱâ (¼³¸í ÷ºÎ) AID CDATA install-long(LABEL)LABEL 2.1 ½Ã½ºÅÛ ¿ä±¸»çÇ× 2.2 Java CGI ¾Öµå-¿Â ¼ÒÇÁÆ®¿þ¾î 2.3 ¼Ò½º ¾ÐÃà Ç®±â 2.4 Áö¿ª °æ·Î(local path)¿¡ °üÇÑ ¹æħÀ» Á¤Ç϶ó AID CDATA make-programs(LABEL)LABEL 2.5 ÀνºÅç Å×½ºÆ®Çϱâ AID CDATA install-test(LABEL)LABEL 3. Java CGI ÇÁ·Î±×·¥À» ½ÇÇà½ÃÅ°±â À§ÇÏ¿© ¼¹ö ¼¼ÆÃÇϱâ(¿ä¾àÇüÅÂ) AID CDATA install-short(LABEL)LABEL 4. Java CGI ÇÁ·Î±×·¥ ½ÇÇàÇϱâ 4.1 CGI ¸ðµ¨ »ó¿¡¼ ÀÚ¹Ù ÇÁ·Î±×·¥ÀÇ ½ÇÇàÀ» ¸·´Â Àå¾Ö¹° 4.1.1 ÀÚ¹Ù ÇÁ·Î±×·¥À» º¸Åë ½ÇÇàÆÄÀÏó·³ ½ÇÇà½Ãų ¼ö ¾ø´Ù. 4.1.2 Àڹٴ ȯ°æ(º¯¼ö)¿¡ ´ëÇØ ÀϹÝÀûÀÎ ¾×¼¼½ºÇÒ ¼ö ¾ø´Ù. 4.2 Java CGIÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¶§ÀÇ ¹®Á¦Á¡ ±Øº¹ 4.2.1 java.cgi ½ºÅ©¸³Æ® 4.2.2 HTML formÀ¸·Î ºÎÅÍ java.cgi È£ÃâÇϱâ 5. Java CGIŬ·¡½º »ç¿ëÇϱâ 5.1 CGIAID CDATA cgi-class(LABEL)LABEL 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_TestAID CDATA cgi-test-class(LABEL)LABEL 5.2.1 ¸â¹ö¿ä¾à 5.2.2 ÂüÁ¶ 5.2.3 main() 5.3 EmailAID CDATA email-class(LABEL)LABEL 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_TestAID CDATA email-test-class(LABEL)LABEL 5.4.1 ¸â¹ö ¿ä¾à 5.4.2 ÂüÁ¶ 5.4.3 main() 5.5 HTMLAID CDATA html-class(LABEL)LABEL 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_TestAID CDATA html-test-class(LABEL)LABEL 5.6.1 ¸â¹ö ¿ä¾à 5.6.2 ÂüÁ¶ 5.6.3 main() 5.7 TextAID CDATA text-class(LABEL)LABEL 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 Development Kit (JDK)°¡ ¼Â¾÷µÈ ¹æ½Ä ¶§¹®¿¡, ÇÁ·Î±×·¥À» È£ÃâÇϱâ À§Çؼ´Â ¿©·¯ °³ÀÇ ÅäÅ«À» ÀÌ¿ëÇØ¾ß Çϸç, À̰͵µ Ç¥ÁØ HTMLÆû/CGI ÀÛµ¿¹æ½Ä°ú Àß ¸ÂÁö ¾Ê´Â´Ù. ÀÌ·¯ÇÑ ÇÑ°è¿¡ ´ëÇÑ ¸î °¡Áö ¹æ¹ýÀÌ ÀÖÀ¸¸ç, ÇÊÀÚ°¡ ±× Áß Çϳª¸¦ ±¸ÇöÇÏ¿´´Ù.ÀÚ¼¼ÇÑ °ÍÀº µÚ¸¦ ´õ Àо±æ ¹Ù¶õ´Ù. ÀÌÀüÀÇ ¹®´ÜÀ» 1996³â¿¡ ÀÛ¼ºÇÑ ÀÌ·¡·Î ÀÚ¹ÙÀÇ ±â¼ú¿¡µµ ¸¹Àº º¯È°¡ ÀÖ¾î¿Ô´Ù. ¼¹ö-Ãø(server-side) ÀÚ¹Ù ÇÁ·Î±×·¥À» ½ÇÇà½ÃÅ°´Â °ÍÀÌ ´õ ³ªÀº ¹æ¹ýÀÏ ¼ö ÀÖÀ¸¸ç -- ¼ºê¸´ÂÊÀ» »ìÆ캸¾Æµµ ±¦ÂúÀ» °ÍÀÌ´Ù. 1.1. »çÀü Áö½Ä ÇÊÀÚ´Â µ¶ÀÚµéÀÌ HTML°ú CGI °³³äµé¿¡ °üÇÑ ÀϹÝÀû Áö½Ä°ú ÃÖ¼ÒÇÑÀÇ HTTP¼¹ö¿¡ °üÇÏ¿© ±âº»ÀûÀÎ Áö½ÄÀ» °®°í ÀÖ´Ù°í °¡Á¤ÇÑ´Ù. ¹°·Ð ÀÚ¹Ù·Î ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â ¹ýÀ» ¾Ë¾Æ¾ß ÇÏ¸ç ±×·¸Áö ¸øÇϸé ÀÌ ¹®¼´Â ÀÌÇØÇϱâ Èûµé´Ù. 1.2. º» ¹®¼¿¡ °üÇÏ¿© º» ¹®¼ÀÇ ÃÖ±Ù ÆÇÀº http://www.orbits.com/software/Java_CGI.html¿¡¼ ÀÐÀ» ¼ö ÀÖ´Ù. 1.3. ÆÐÅ°Áö º» ¹®¼¿¡¼ ¼³¸íÇÏ´Â ÆÐÅ°Áö´Â ´ÙÀ½ÀÇ anonymous FTP¿¡¼ ¿¢¼¼½ºÇÒ ¼ö ÀÖ´Ù. ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz. ÆÐÅ°Áö¿¡´Â º» ¹®¼ÀÇ SGML ¼Ò½ºµµ Æ÷ÇԵǾî ÀÖ´Ù. º» ÆÐÅ°Áö´Â GNU Library General Public License Á¶Ç׿¡ ÀÇ°ÅÇØ ¹èÆ÷µÈ´Ù. º» ¹®¼´Â ¸®´ª½º HOWTO ÆDZÇ(copyright) ÁÖÀÇ»çÇ׿¡ ÀÇ°ÅÇؼ ¹èÆ÷µÈ´Ù. ¸¸¾à º» ¼ÒÇÁÆ®¿þ¾î¸¦ »ç¿ëÇÑ´Ù¸é, ´Ù¸¥ »ç¶÷µéÀÌ Java CGIŬ·¡½º¸¦ ãÀ» ¼ö ÀÖµµ·Ï http://www.orbits.com/software/Java_CGI.html¸¦ ÂüÁ¶Çϱ⠹ٶõ´Ù. ÇÊÀÚ°¡ º» ÆÐÅ°Áö¸¦ À¯ÁöÇÏ°í Áö¿øÇϴµ¥ »ç¿ëÇÒ ½Ã°£ÀÌ ¾ø¾î¼ º» ¹®¼°¡ ¾Æ¸¶ ¸¶Áö¸· ÆÇÀÌ µÉ °ÍÀÌ´Ù. ¾Æ¹«¶óµµ º» ¼ÒÇÁÆ®¿þ¾î¸¦ ¾Æ³¢¾î À¯Áöº¸¼ö¸¦ ÀμöÇÏ·Á ÇÑ´Ù¸é, javacgi-document@orbits.comÀ¸·Î ¿¬¶ô ¹Ù¶õ´Ù. 1.4. ¸ÞÀϸµ ¸®½ºÆ® »ç¶÷µéÀÌ º» ¼ÒÇÁÆ®¿þ¾î¸¦ ÀνºÅçÇÏ°í »ç¿ëÇϴµ¥ ÀÖ¾î¼ÀÇ »óÈ£ÀÇ ¹®Á¦Á¡µéÀ» ¼·Î µ½°íÀÚ ÇÊÀÚ°¡ majordomo (¿ªÀÚÁÖ:¸ÞÀϸµ ¸®½ºÆ® ¸Þ´ÏÀúÀÇ Çϳª) ¸®½ºÆ®¸¦ ¸¸µé¾ú´Ù. subscribe¶ó´Â ¸»À» Àû¾î¼ javacgi- request@orbits.com·Î ¸Þ½ÃÁö¸¦ º¸³»±â ¹Ù¶õ´Ù. 2. ÀÚ¹Ù CGIÇÁ·Î±×·¥À» ½ÇÇàÇϱâ À§ÇØ ¼¹ö ¼ÂÆÃÇϱâ (¼³¸í ÷ºÎ) ÀÌ ºÎºÐÀº ¼³Ä¡ ÀÛ¾÷ÀÌ ¾î¶² ¿µÇâÀ» ³¢Ä¡´ÂÁö ¿©·¯ºÐ ÀÚ½ÅÀÌ ¾Ë°Ô Çϱâ À§ÇØ Ç³ºÎÇÑ ¼³¸í°ú ÇÔ²² ÇÊÀÚÀÇ Java CGI ÆÐÅ°Áö¸¦ ÀνºÅç ÇÒ °ÍÀÌ´Ù. ¸¸¾à º» ÇÁ·Î±×·¥À» ÀνºÅ縸 ÇÏ°í ¿ÖÀÎÁö ±×¸®°í ¿Ö ±×·¡¾ß¸¸ ÇÏ´ÂÁö¿¡ ´ëÇÑ °ÍÀº ½Å°æ ¾² Áö ¾Ê´Â´Ù¸é, ´ÙÀ½À¸·Î ³Ñ¾î°¡¶ó. ``ÀÚ¹Ù CGIÇÁ·Î±×·¥À» ½ÇÇàÇϱâ À§ÇØ ¼¹ö ¼ÂÆÃÇϱâ (¿ä¾à)''. 2.1. ½Ã½ºÅÛ ¿ä±¸»çÇ× º» ¼ÒÇÁÆ®¿þ¾î´Â Java Development KitÀÌ ÀνºÅçµÈ ´ëºÎºÐÀÇ À¯´Ð½º ÇüÅÂÀÇ À¥ ¼¹ö¿¡¼ ÀÛµ¿ÇÒ °ÍÀÌ´Ù. ÇÊÀÚ´Â apache¸¦ HTTP µ¥¸óÀ¸·Î ½ÇÇà½ÃÅ°¸ç Debian Linux¸¦ »ç ¿ëÇÏ°í ÀÖ´Ù. ¸¸¾à ½ÇÇàµÇÁö ¾ÊÀ¸¸é, ¸ÞÀϸµ ¸®½ºÆ®¸¦ ã¾Æº¸±æ ¹Ù¶õ´Ù. ÀÚ¼¼ÇÑ °ÍÀº ``¸ÞÀϸµ ¸®½ºÆ®''¸¦ ÂüÁ¶Ç϶ó. ºÒÇàÈ÷µµ ÀÚ¹Ù ·±Å¸ÀÓ ÀÎÅÍÇÁ¸®ÅÍ´Â ¸Þ¸ð¸®¸¦ ¸¹ÀÌ ÇÊ¿ä·Î ÇÏ´Â °Í °°´Ù-- 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. Áö¿ª °æ·Î(local path)¿¡ °üÇÑ ¹æħÀ» Á¤Ç϶ó Java CGIÇÁ·Î±×·¥µéÀ» ¾îµð¿¡ µÑÁö °áÁ¤ÇÑ´Ù. º¸Åë, cgi-binµð·ºÅ丮¿¡ °°ÀÌ µÑ °ÍÀÌ´Ù. ÇÊÀÚÀÇ apache ¼¹ö´Â cgi-bin µð·ºÅ丮·Î½á /var/www/cgi-binÀ» »ç¿ëÇÏ°Ô ¼³Á¤µÇ¾î ÀÖ¾î¼, Java CGI ÇÁ·Î±×·¥µéÀ» ³Ö¾îµÑ µð·ºÅ丮·Î´Â /var/www/javacgi¸¦ »ç¿ëÇÑ´Ù. ÁöÁ¤µÈ CLASSPATH µð·ºÅ丮¿¡ Java CGI ÇÁ·Î±×·¥µéÀ» ±ò°í ½ÍÁö ¾ÊÀ» Áöµµ ¸ð¸¥´Ù. ½Ã½ºÅÛ ¼³Á¤À» ¹Ý¿µÇϱâ À§ÇØ MakefileÀ» ÆíÁýÇÑ´Ù. root·Î ·Î±×ÀÎ ÇÑ °ÍÀ» È®ÀÎÇÏ°í make install À» ½ÇÇàÇÑ´Ù. ÀÌ ¸í·ÉÀÌ ÀÚ¹Ù ÇÁ·Î±×·¥µéÀ» ÄÄÆÄÀÏÇÏ°í, java.cgi ½ºÅ©¸³Æ®¸¦ ½Ã½ºÅÛ¿¡ ¸Â°Ô º¯°æÇÏ°í Àû´çÇÑ °÷¿¡ ±× ÇÁ·Î±×·¥µéÀ» ÀνºÅçÇÑ´Ù. Ãß°¡·Î, º» ¹®¼ÀÇ HTML ¹öÀüÀ̳ª HTMLÅ×½ºÆ® ¹®¼¸¦ ¿øÇÑ´Ù¸é, ´ë½Å make all À» ½ÇÇàÇÑ´Ù. 2.5. ÀνºÅç Å×½ºÆ®Çϱ⠹èÆ÷ÆÇÀ¸·ÎºÎÅÍ ÀνºÅçµÈ °ÍÀº javacgitest.html, javaemailtest.html ¿Í javahtmltest.htmlÀ̶ó´Â HTML¹®¼µéÀÌ´Ù. ¾ÕÀå¿¡¼ all·Î ÀνºÅçÇß´Ù¸é, Makefile¿¡¼ WEBDIR·Î ¼³Á¤µÈ µð·ºÅä ¸®¿¡ ÀÌ ¹®¼µéÀÌ ÀÖÀ» °ÍÀÌ´Ù. ±×·¸Áö ¾Ê´Ù¸é javacgitest.html-dist, javaemailtest.html-dist ¿Í javahtmltest.html-dist·ÎºÎÅÍ ºôµå(build)Çϱâ À§ÇØmake test¸¦ ½ÇÇàÇØ µµ µÈ´Ù. ÀνºÅçÇÑ °ÍÀÌ Á¤È®ÇÏ°Ô µ¿ÀÛÇÒ ¶§, JAVACGI µð·ºÅ丮·ÎºÎÅÍ CGI_Test.class, Email_Test.class¿Í HTML_Test.class¸¦, WEBDIR µð·ºÅ丮·Î ºÎÅÍ´Â javacgitest.html, javaemailtest.html ¿Í javahtmltest.htmlÀ» Áö¿ì°í ½ÍÀ»Áöµµ ¸ð¸¥´Ù. º¸Åë ¼¹ö¿¡°Ô¸¸ »ç¿ë °¡´ÉÇÑ »ç¿ëÀÚ Á¤º¸¸¦ º¸¿©Áֱ⠶§¹®ÀÌ´Ù. 3. Java CGI ÇÁ·Î±×·¥À» ½ÇÇà½ÃÅ°±â À§ÇÏ¿© ¼¹ö ¼¼ÆÃÇϱâ(¿ä¾àÇüÅÂ) o ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz·ÎºÎÅÍ Java CGIÆÐ Å°Áö¸¦ ¾ò´Â´Ù. (¹öÀüÀÌ º¯ÇßÀ»Áöµµ ¸ð¸¥´Ù) o ´ÙÀ½ ¸í·É¾î·Î ¹èÆ÷ÆÇÀ» Ǭ´Ù: gzip -dc java_cgi-0.5.tgz | tar -xvf - (¹öÀüÀÌ ¹Ù²î¾ú´Ù¸é, Áö±ÝºÎÅÍ´Â ±× ¹èÆ÷ÆÇÀÇ ¼³¸íÀ» Âü°íÇ϶ó) o »õ·ÎÀÌ »ý¼ºµÈjava_cgi-0.5 µð·ºÅ丮¿¡¼ ½Ã½ºÅÛ¿¡ ¸Â°ÔMakefileÀ» ÆíÁýÇÑ´Ù. o root·Î½á make installÀ» ½ÇÇàÇÑ´Ù. ÀÌ ¸í·ÉÀÌ ÀÚ¹Ù ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇÏ°í, ¿©·¯ºÐÀÇ ½Ã½ºÅÛ¿¡ °ü·ÃµÈ Á¤º¸µéÀ» Àû¿ë(apply)½ÃÅ°°í ´Ù¾çÇÑ ÆÄÀϵéÀ» ÀνºÅç ÇÑ´Ù. ¸¸¾à HTML·ÎµÈ º» ¹®¼¿Í HTMLÅ×½ºÆ® ¹®¼¸¦ ¿øÇÑ´Ù¸é, ´ë½Å make allÀ» ½ÇÇàÇÑ´Ù. o ÀÌÁ¦ Áغñ°¡ µÇ¾ú´Ù. 4. Java CGI ÇÁ·Î±×·¥ ½ÇÇàÇϱâ 4.1. CGI ¸ðµ¨ »ó¿¡¼ ÀÚ¹Ù ÇÁ·Î±×·¥ÀÇ ½ÇÇàÀ» ¸·´Â Àå¾Ö¹° À¥ ¼¹ö¿¡¼ ÀÚ¹Ù ÇÁ·Î±×·¥À» ½ÇÇà½ÃÅ°´Âµ¥ ÀÖ¾î¼ µÎ °¡Áö ¹®Á¦Á¡ÀÌ ÀÖ´Ù: 4.1.1. ÀÚ¹Ù ÇÁ·Î±×·¥À» º¸Åë ½ÇÇàÆÄÀÏó·³ ½ÇÇà½Ãų ¼ö ¾ø´Ù. Ä¿¸àµå ¶óÀλ󿡼 ÀÚ¹Ù ·±Å¸ÀÓ ÀÎÅÍÇÁ¸®Å͸¦ ½ÇÇàÇÏ°í (ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÉ ¼ö ÀÖµµ·Ï) ÃʱâÈ Å¬·¡½º°¡ ÀÖ¾î¾ß ÇÑ´Ù. HTML ÇüÅ·δ Ŀ¸àµå ¶óÀÎÀ» À¥ ¼¹ö¿¡ º¸³¾ ¼ö ¾ø´Ù. 4.1.2. Àڹٴ ȯ°æ(º¯¼ö)¿¡ ´ëÇØ ÀϹÝÀûÀÎ ¾×¼¼½ºÇÒ ¼ö ¾ø´Ù. ÀÚ¹Ù ÇÁ·Î±×·¥ÀÌ ÇÊ¿ä·Î ÇÏ´Â °³°³ÀÇ È¯°æº¯¼ö´Â Á¤È®ÀÌ ³Ñ°ÜÁ®¾ß(pass) ÇÑ´Ù. C ¿¡¼ÀÇ getenv() ÇÔ¼ö °°Àº ¸Þ¼Òµå´Â ¾ø´Ù. 4.2. Java CGIÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¶§ÀÇ ¹®Á¦Á¡ ±Øº¹ À§ÀÇ Àå¾Ö¹°À» ó¸®Çϱâ À§ÇØ, ÀÚ¹Ù ÀÎÅÍÇÁ¸®ÅÍ¿¡°Ô ÇÊ¿äÇÑ Á¤º¸¸¦ Á¦°øÇÏ´Â ½© CGIÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ¿´´Ù. 4.2.1. java.cgi ½ºÅ©¸³Æ® ÀÌ ½© ½ºÅ©¸³Æ®´Â »ç¿ëÇÏ°íÀÚ ÇÏ´Â Java CGIÇÁ·Î±×·¥°ú HTTPµ¥¸ó »çÀÌÀÇ »óÈ£ÀÛ¿ë(interaction)À» °ü¸®ÇÑ´Ù. ÀÌ ½ºÅ©¸³Æ®´Â ½ÇÇàÇÏ°íÀÚ ÇÏ´Â ÇÁ·Î±×·¥ÀÇ À̸§À» ¼¹ö°¡ Á¦°øÇÏ´Â µ¥ÀÌŸ·ÎºÎÅÍ »Ì¾Æ³»¸ç ÀÓÀÇÀÇ Àӽà ÆÄÀÏ ¾È¿¡ ȯ°æ µ¥ÀÌŸ(environment data) ¸ðµÎ¸¦ ¸ðÀº´Ù. ±×¸®°í³ª¼ Ä¿¸àµå ¶óÀο¡ µ¡ºÙ¿©Áø ȯ°æ Á¤º¸ ÆÄÀÏÀÇ À̸§°ú ÇÁ·Î±×·¥ À̸§À» °¡Áö°í ÀÚ¹Ù ·±Å¸ÀÓ ÀÎÅÍÇÁ¸®Å͸¦ ½ÇÇà½ÃŲ´Ù. java.cgi½ºÅ©¸³Æ®´Â ``Áö¿ª °æ·Î¿¡ °üÇÑ ¹æħÀ» Á¤Ç϶ó'' ¿¡¼ ±¸¼ºµÇ¾úÀ¸¸ç ÀνºÅçµÇ¾ú´Ù. 4.2.2. HTML formÀ¸·Î ºÎÅÍ java.cgi È£ÃâÇϱâ Java CGI ÇÁ·Î±×·¥À» »ç¿ëÇÏ´Â ÇÊÀÚÀÇ ÆûÀº ´ÙÀ½°ú °°ÀÌ form actionÀ» ¸í½ÃÇÑ´Ù: <form action="/cgi-bin/java.cgi/CGI_Test" method="POST"> ¿©±â¼ /cgi-bin/ Àº ¿©·¯ºÐÀÇ CGI ¹ÙÀ̳ʸ® µð·ºÅ丮À̸ç, java.cgi´Â À¥»ó¿¡¼ Java ÇÁ·Î±×·¥À» ½ÇÇà½ÃÅ°°Ô ÇØÁÖ´Â ÀÚ¹Ù front-end À̸ç, CGI_Test´Â ½ÇÇà½Ãų ÀÚ¹Ù ÇÁ·Î±×·¥ À̸§ÀÇ ¿¹ÀÌ´Ù. 5. Java CGIŬ·¡½º »ç¿ëÇϱâ ÇöÀç ¼¼°³ÀÇ ¸ÞÀΠŬ·¡½º°¡ Á¦°øµÈ´Ù. ``CGI''¿Í ``Email''°ú ``HTML''ÀÌ´Ù. ÇÊÀÚ´Â MIME ÇüÅÂÀÇ ÀÔÃâ·ÂÀ» ´Ù·ç´Â °¢°¢ÀÇ Å¬·¡½º- MIMEin °ú MIMEout - ¸¦ Ãß°¡ÇÒ »ý°¢ÀÌ´Ù. Áö¿ø¿ëŬ·¡½º¿Í Å×½ºÆ® Ŭ·¡½ºµµ ¸î °³ ÀÖ´Ù. ``CGI_Test'', ``Email_Test'' ¿Í ``HTML_Test''´Â ÀνºÅçÀ» Å×½ºÆ®Çϱâ À§ÇÑ °ÍÀÌ´Ù. À̵é Ŭ·¡½º´Â ÀÌ Å¬·¡½º ¶óÀ̺귯¸®´Â »ç¿ëÇÏ´Â ÀÚ¹Ù ÇÁ·Î±×·¥¿¡¼ ½ÃÀÛÁ¡(starting- point)ó·³ »ç¿ëµÉ ¼öµµ ÀÖÀ»°ÍÀÌ´Ù. ``Text'' Ŭ·¡½º´Â Email ¿Í HTML Ŭ·¡½ºÀÇ ¼öÆÛŬ·¡½ºÀÌ´Ù. 5.1. CGI 5.1.1. Ŭ·¡½º ¹®¹ý public class CGI 5.1.2. Ŭ·¡½º ¼³¸í CGI Ŭ·¡½º´Â "CGI Á¤º¸" (À¥ ¼¹ö°¡ Á¤ÇÑ È¯°æ º¯¼öµé°ú submit µ¿ÀÛÀÌ ¼±ÅõǾúÀ» ¶§ formÀ¸·ÎºÎÅÍ º¸³½ name/value)¸¦ °¡Áø´Ù. ¸ðµç Á¤º¸´Â Properties Ŭ·¡½º °´Ã¼¿¡ ÀúÀåµÈ´Ù. ÀÌ Å¬·¡½º´Â "Orbits.net" ÆÐÅ°Áö¿¡ µé¾îÀÖ´Ù. 5.1.3. ¸â¹ö ¿ä¾à ______________________________________________________________________ CGI() // »ý¼ºÀÚ. getNames() // À̸§µéÀÇ ¸®½ºÆ®¸¦ ¾ò´Â´Ù. getValue() // À̸§À» ¸í½ÃÇÔÀ¸·Î½á formÀÇ value¸¦ ¾ò´Â´Ù. ______________________________________________________________________ 5.1.4. ÂüÁ¶ CGI_Test. 5.1.5. CGI() ¸ñÀû »ç¿ë °¡´ÉÇÑ CGI Å×ÀÌŸ¸¦ °¡Áø °´Ã¼¸¦ »ý¼ºÇÑ´Ù. ¹®¹ý public CGI() ¼³¸í CGI °´Ã¼°¡ »ý¼º µÇ¾úÀ» ¶§, ¸ðµç »ç¿ë °¡´ÉÇÑ CGIÁ¤º¸°¡ ±× °´Ã¼¿¡ ´ëÇØ ·ÎÄÃÀÎ ÀúÀå¼Ò·Î º¸³»Áø´Ù. 5.1.6. getNames() ¸ñÀû ÇØ´çÇÏ´Â value¸¦ °®µµ·Ï Á¤ÀÇµÈ nameµéÀ» º¸ÀδÙ. ¹®¹ý public Enumeration getKeys () ¼³¸í ÇØ´çÇÏ´Â value°¡ Á¤ÀÇµÈ nameÀÇ Àüü ¸®½ºÆ®¸¦ Á¦°øÇÑ´Ù. ¸®ÅÏ Á¤ÀÇµÈ ¸ðµç À̸§ÀÇ Enumeration 5.1.7. getValue() ¸ñÀû nameÀÌ ¸í½ÃµÈ value¸¦ ÃëÇÑ´Ù. ¹®¹ý public String getValue ( String name ) ¼³¸í HTML formÀ¸·ÎºÎÅÍ º¸³»Áø name°ú value»çÀÌ¿¡ ´ëÀÀÇÏ´Â °ÍÀ» ¸®ÅÏÇÔ. ÆĶó¸ÞÅÍ name value¸¦ ¼±ÅÃÇÏ´Â Å° ¸®ÅÏ value¸¦ ´ã°í ÀÖ´Â String 5.2. CGI_Test ÀÌ Å¬·¡½º¿¡´Â CGIŬ·¡½º¸¦ ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö¿¡ °üÇÑ ¿¹Á¦¿Í Java CGI ÆÐÅ°Áö°¡ Á¤È®ÇÏ°Ô µ¿ÀÛÇÏ´ÂÁö È®ÀÎÇϴµ¥ »ç¿ëµÇ´Â Å×½ºÆ® ÇÁ·Î±×·¥ÀÌ µé¾î ÀÖ´Ù. 5.2.1. ¸â¹ö¿ä¾à ______________________________________________________________________ main() // ÇÁ·Î±×·¥ main(). ______________________________________________________________________ 5.2.2. ÂüÁ¶ CGI. 5.2.3. main() ¸ñÀû main() ¸Þ¼Òµå¸¦ Á¦°øÇÑ´Ù. ¹®¹ý public static void main( String argv[] ) ¼³¸í »ç¿ë °¡´ÉÇÑ name/value ½ÖÀÇ ¸®½ºÆ®¿Í ÇöÀç °ªÀ» ¸®ÅÏÇÏ´Â CGI ÇÁ·Î±×·¥¿¡ ´ëÇÑ ÁøÀÔÁ¡(entry point)ÀÌ´Ù. ÆĶó¸ÞÅÍ argv[] java.cgi ½ºÅ©¸³Æ®¿¡ ÀÇÇØ ÇÁ·Î±×·¥¿¡ Àü´ÞµÇ´Â ÀÎÀÚµé. ÇöÀç »ç¿ë ¾ÈÇÔ 5.3. Email 5.3.1. Ŭ·¡½º ¹®¹ý public class Email extends Text 5.3.2. Ŭ·¡½º ¹®¹ý ¸Þ½ÃÁö´Â TextŬ·¡½ºÀÇ add* () ¸Þ¼Òµå¿Í ÀÌ Å¬·¡½º¿¡ ÀÇÇØ Ãß°¡µÈ e-mail °ü·Ã(e-mail-specific) ¸Þ¼Òµå·Î ¸¸µé¾îÁø´Ù. ´Ù ¸¶Ä¡¸é, ¸Þ½ÃÁö´Â ¸ñÀûÁö·Î º¸³»Áø´Ù. ÀÌ Å¬·¡½º´Â "Orbits.net"ÆÐÅ°Áö¿¡ µé¾îÀÖ´Ù. 5.3.3. ¸â¹ö ¿ä¾à ______________________________________________________________________ Email() // »ý¼ºÀÚ. send() // ÀüÀÚ¸ÞÀÏ ¸Þ½ÃÁö¸¦ º¸³½´Ù. sendTo() // ¸Þ½ÃÁö¿¡ ¸ñÀûÁö¸¦ Ãß°¡ÇÑ´Ù. subject() // ¸ÞÁöÁö¿¡ ÁÖÁ¦(Subject:)¸¦ Á¤ÇÑ´Ù. ______________________________________________________________________ 5.3.4. Âü°í Email_Test, Text. 5.3.5. Email() ¸ñÀû ÀüÀÚ¸ÞÀÏ ¸Þ½ÃÁö¸¦ ´ãÀº °³Ã¼¸¦ »ý¼ºÇÑ´Ù. ¹®¹ý public Email() ¼³¸í Email¸Þ¼Òµå·Î¼ ¿Ï¼º(complete)µÉ ºó ¸Þ½ÃÁö¸¦ ¼Â¾÷ÇÑ´Ù. ÂüÁ¶ Text. 5.3.6. send() ¸ñÀû ÀüÀÚ¸ÞÀÏ ¸Þ½Ã½Ã¸¦ º¸³½´Ù. ¹®¹ý public void send () ¼³¸í ¸ÞÁö½Ã¸¦ Á¤ÇüÈ(format)ÇÏ°í º¸³½´Ù. ¸ñÀûÁö°¡ Á¤ÇØÁöÁö ¾Ê¾ÒÀ¸¸é, ¾Æ¹« Àϵµ ¹ß»ýÇÏÁö ¾Ê´Â´Ù. 5.3.7. sendTo() ¸ñÀû ¸Þ½ÃÁö¿¡ ¸ñÀûÁö¸¦ Ãß°¡ÇÑ´Ù. ¹®¹ý public String sendTo ( String address ) ¼³¸í ÀÌ ¸Þ¼ÒµåÀÇ ¸ñÀûÁö ¸®½ºÆ®¿¡ ÁÖ¼Ò ¸¦ Ãß°¡ÇÑ´Ù. ÀüÀÚ¸ÞÀÏ ¸Þ½ÃÁö°¡ °¡Áú ¼ö ÀÖ´Â ¸ñÀûÁöÀÇ ¼ö¿¡´Â Á¤ÇØÁø ÇÑ°è°¡ ¾ø´Ù. ¸®½ºÆ®ÀÇ Å©±â¸¦ ÃæºÐÈ÷ Å©°Ô ¸¸µç´Ù¸é, ¸ÞÀÏ Àü¼Û ¿¡ÀÌÀüÆ®(Mail Transport Agent) °¡ Çã¿ëÇÒ ¼ö ÀÖ´Â ÆĶó¸ÞÅÍ ¸®½ºÆ®ÀÇ »çÀÌÁ ÃÊ°úÇÒ ¼ö ÀÖÀ¸¸ç ±×·¸Áö ¾Ê´Ù¸é ¸Þ¸ð¸®¸¦ ´Ù ½á¹ö¸± °ÍÀÌ´Ù. ÆĶó¸ÞÅÍ/ address ¸Þ½ÃÁö¸¦ º¸³¾ ¸ñÀûÁö. 5.3.8. subject() ¸ñÀû ¸Þ½ÃÁöÀÇ ÁÖÁ¦¸¦ Á¤ÇÑ´Ù. ¹®¹ý public void subject ( String subject ) ¼³¸í ÀüÀÚ¸ÞÀÏÀÇ Subject: ÁÙÀÇ ÅؽºÆ®¸¦ Á¤ÇÑ´Ù. ¸¸¾à Çѹø ÀÌ»ó È£ÃâµÇ¸é, ¸Ç ¸¶Áö¸·¿¡ Á¤ÇÑ subject°¡ »ç¿ëµÈ´Ù. ÆĶó¸ÞÅÍ subject ¸Þ½ÃÁöÀÇ Subject: ÁÙÀÇ ÅؽºÆ® 5.4. Email_Test ÀÌ Å¬·¡½º´Â Email Ŭ·¡½º¸¦ ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö¿¡ °üÇÑ ¿¹Á¦¿Í Java CGI ÆÐÅ°Áö°¡ Á¤È®ÇÏ°Ô µ¿ÀÛÇÏ´ÂÁö È®ÀÎÇϴµ¥ »ç¿ëµÇ´Â Å×½ºÆ® ÇÁ·Î±×·¥ ¿¹Á¦°¡ µé¾îÀÖ´Ù. 5.4.1. ¸â¹ö ¿ä¾à ______________________________________________________________________ main() // ÇÁ·Î±×·¥ main(). ______________________________________________________________________ 5.4.2. ÂüÁ¶ Email. 5.4.3. main() ¸ñÀû main() ¸Þ¼Òµå¸¦ Á¦°øÇÑ´Ù. ¹®¹ý public static void main( String argv[] ) ¼³¸í »ç¿ë °¡´ÉÇÑ name/value ½Ö°ú ÇöÀç ±× ½ÖÀÇ ¸®½ºÆ®¸¦ ¸®ÅÏÇÏ´Â CGI ÇÁ·Î±×·¥¿¡ ´ëÇÑ ÁøÀÔÁ¡(entry point)ÀÌ´Ù. Email º¯¼ö¿¡ ¸í½ÃµÈ ÁÖ¼Ò¿¡µµ ÀÌ ¸®½ºÆ®¸¦ º¸³½´Ù. ÆĶó¸ÞÅÍ argv[] java.cgi ½ºÅ©¸³Æ®¿¡ ÀÇÇØ ÇÁ·Î±×·¥¿¡ Àü´ÞµÇ´Â ÀÎÀÚµé. ÇöÀç »ç¿ë ¾ÈÇÔ. 5.5. HTML 5.5.1. Ŭ·¡½º ¹®¹ý public class HTML extends Text 5.5.2. Ŭ·¡½º ¼³¸í ¸Þ½ÃÁö´Â TextŬ·¡½ºÀÇ add* () ¸Þ¼Òµå¿Í ÀÌ Å¬·¡½º¿¡ ÀÇÇØ Ãß°¡µÈ HTML°ü·Ã(HTML-specific) ¸Þ¼Òµå·Î ¸¸µé¾îÁø´Ù. ¿Ï¼ºµÇ¸é, ¸Þ½ÃÁö´Â ¸ñÀûÁö·Î º¸³»Áø´Ù. ÇöÀç, ¸®½ºÆ®¸¦ ¸¸µå´Â ¸Þ¼ÒµåµéÀÌ Á¤È®ÇÑ ¼ø¼·Î »ç¿ëµÇ¾ú´ÂÁö È®½ÅÇÒ ¿¡·¯ üŷÀ» ÇÏÁö ¾Ê¾Æ¼, ÇÁ·Î±×·¡¸Ó°¡ HTML ¹®¹ýÀ» ¾î±âÁö ¾Êµµ·Ï ÁÖÀÇÇØ¾ß ÇÑ´Ù. ÀÌ Å¬·¡½º´Â "Orbits.net"ÆÐÅ°Áö¿¡ µé¾îÀÖ´Ù. 5.5.3. ¸â¹ö ¿ä¾à ______________________________________________________________________ HTML() // »ý¼ºÀÚ. author() // ¹®¼ ÀúÀÚÀÇ À̸§À» Á¤ÇÑ´Ù. definitionList() // Á¤ÀÇ ¸®½ºÆ®¸¦ ½ÃÀÛÇÑ´Ù. definitionListTerm() // Á¤ÀÇ ¸®½ºÆ®¿¡ ¿ë¾î(term)¸¦ Ãß°¡ÇÑ´Ù. endList() // ¸®½ºÆ®¸¦ ³¡¸Î´Â´Ù. listItem() // ¸®½ºÆ®¿¡ ¿£Æ®¸®¸¦ Ãß°¡ÇÑ´Ù. send() // HTML¸Þ½ÃÁö¸¦ º¸³½´Ù. title() // ¹®¼ Á¦¸ñ¿ë ÅؽºÅ©¸¦ Á¤ÇÑ´Ù. ______________________________________________________________________ 5.5.4. ÂüÁ¶ HTML_Test, Text. 5.5.5. HTML() ¸ñÀû HTML¸Þ½ÃÁö¸¦ ´ãÀ» °´Ã¼¸¦ »ý¼ºÇÑ´Ù. ¹®¹ý public HTML() ¼³¸í HTML ¸Þ¼Òµå¿¡ ÀÇÇؼ ¿Ï¼ºµÉ ºó ¸Þ½ÃÁö¸¦ ¸¸µç´Ù. ÂüÁ¶ Text. 5.5.6. author() ¸ñÀû ¹®Àú ÀúÀÚÀÇ À̸§À» Á¤ÇÑ´Ù. Syntax public void author ( String author ) ¼³¸í ¹®¼ÀÇ ÀúÀÚ¸¦ author·Î Á¤ÇÑ´Ù. ÆĶó¸ÞÅÍ/ author ¸Þ½ÃÁöÀÇ ÀúÀÚ·Î »ç¿ëµÉ ÅؽºÆ®. ÂüÁ¶ title(). 5.5.7. definitionList() ¸ñÀû Á¤ÀÇ ¸®½ºÆ®¸¦ ½ÃÀÛÇÑ´Ù. ¹®¹ý public void definitionList () ¼³¸í Á¤ÀÇ ¸®½ºÆ®¸¦ ½ÃÀÛÇÑ´Ù. Á¤ÀÇ ¸®½ºÆ®´Â ¸®½ºÆ® ¾ÈÀÇ °¢°¢ÀÇ ¿£Æ®¸®°¡ ±× ¿ë¾î(term)ÀÇ Á¤ÀÇ ÅؽºÆ®(text) ´ÙÀ½¿¡ ³ª¿À´Â Ç׸ñÀÎ ¸®½ºÆ®ÀÌ´Ù. Á¤ÀÇ ¸®½ºÆ®ÀÇ ½ÃÀÛÀº (ÃÖ¼ÒÇÑ) ÇϳªÀÇ ¿ë¾î/ÅؽºÆ® ½ÖÀ» »ý¼ºÇÏ°í endList() ¸Þ¼Òµå°¡ Çѹø È£ÃâµÈ ÀÌÈÄ À̾î¾ß ÇÑ´Ù. ÇöÀç ¸®½ºÆ®µéÀº ³×½ºÆ®(nest)µÉ ¼ö ¾øÀ½À» ÁÖÀÇÇ϶ó. ÂüÁ¶ definitionListTerm(), endList(), listItem(). 5.5.8. definitionListTerm() ¸ñÀû Á¤ÀÇ ¸®½ºÆ®¿¡ ÇϳªÀÇ ¿ë¾î¸¦ Ãß°¡ÇÑ´Ù. ¹®¹ý public void definitionListTerm () ¼³¸í Á¤ÀÇ ¸®½ºÆ®¿¡ ÇϳªÀÇ ¿ë¾î¸¦ Ãß°¡ÇÑ´Ù. Çö ¸®½ºÆ® ¿£Æ®¸®ÀÇ ¿ë¾î ºÎºÐÀÇ ÅؽºÆ®´Â ÀÌ ¸Þ¼Òµå°¡ È£ÃâµÇ°í ÇØ´çµÇ´Â listItem¸Þ¼Òµå°¡ È£ÃâµÇ±â Àü¿¡ ¸Þ½ÃÁö¿¡ µ¡ºÙ¿©Á®¾ß ÇÑ´Ù. ÂüÁ¶ definitionList(), listItem(). 5.5.9. endList() ¸ñÀû ¸®½ºÆ®¸¦ ³¡¸Î´Â´Ù. ¹®¹ý public void endList () ¼³¸í ¸®½ºÆ®¸¦ ³¡¸Î´Â´Ù. ÀÌ ¸Þ¼Òµå´Â ÇÑ ¸®½ºÆ®¸¦ ³¡³½´Ù. ÇöÀç ¸®½ºÆ®µéÀº ³×½ºÆ®µÉ ¼ö ¾øÀ½À» ÁÖ¸ñÇ϶ó. ÂüÁ¶ definitionList(). 5.5.10. listItem() ¸ñÀû ¸®½ºÆ®¿¡ ¿£Æ®¸® Çϳª¸¦ Ãß°¡ÇÑ´Ù. ¹®¹ý public void listItem () public void listItem ( String item ) public boolean listItem ( String term, String item ) ¼³¸í ¸®½ºÆ®¿¡ ¿£Æ®¸® Çϳª¸¦ Ãß°¡ÇÑ´Ù. ¸¸¾à ù¹ø° Æû(form)ÀÌ »ç¿ëµÈ´Ù¸é, Çö ¸®½ºÆ® ¾ÆÀÌÅÛÀÇ ÅؽºÆ®´Â ÀÌ ¸Þ¼Òµå°¡ È£ÃâµÈ ´ÙÀ½¿¡ ±×¸®°í ´Ù¸¥ ¸®½ºÆ® ¸Þ¼Òµå°¡ È£ÃâµÇ±â Àü¿¡ ¸Þ½ÃÁö¿¡ ºÙ¿©Á®¾ß ÇÑ´Ù. µÎ¹ø°¿Í ¼¼¹ø° Æû¿¡¼´Â, item ÅؽºÆ®´Â ÀÌ ¸Þ½ÃÁö¿¡ µ¡ºÙ¿©Áö´Â ´ë½Å¿¡(ȤÀº Ãß°¡·Î) ¸Þ¼ÒµåÀÇ ÆĶó¸ÞÅÍ·Î½á ¸í½ÃµÈ´Ù.¼¼¹ø°´Â Á¤ÀÇ ¸®½ºÆ®¿¡ °ü·ÃµÇ°í(specific), ¿ë¾î¿Í ¸®½ºÆ® ¿£Æ®¸®ÀÇ Á¤ÀǸ¦ Á¦°øÇÑ´Ù. ÆĶó¸ÞÅÍ item ¸®½ºÆ® ¿£Æ®¸®ÀÇ ÅؽºÆ®. term Á¤ÀÇ ¸®½ºÆ® ¿£Æ®¸®ÀÇ ¿ë¾î ºÎºÐÀÇ ÅؽºÆ®. ÂüÁ¶ definitionList(), definitionListTerm(), endList(). 5.5.11. send() ¸ñÀû HTML¸Þ½ÃÁö¸¦ º¸³½´Ù. ¹®¹ý public void send () ¼³¸í HTML ¸Þ½ÃÁö¸¦ º¸³½´Ù. 5.5.12. title() ¸ñÀû ¹®¼ Á¦¸ñÀÇ ÅؽºÆ®¸¦ Á¤ÇÑ´Ù. ¹®¹ý public void title ( String title ) ¼³¸í ¹®¼ Á¦¸ñÀÇ ÅؽºÆ®¸¦ Á¤ÇÑ´Ù. ÆĶó¸ÞÅÍ title ¸Þ½ÃÁö Á¦¸ñÀÇ ÅؽºÆ®. ÂüÁ¶ author(). 5.6. HTML_Test ÀÌ Å¬·¡½º¿¡´Â HTMLŬ·¡½º¸¦ ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö¿¡ °üÇÑ ¿¹Á¦¿Í Java CGI ÆÐÅ°Áö°¡ Á¤È®ÇÏ°Ô µ¿ÀÛÇÏ´ÂÁö¸¦ È®ÀÎÇϴµ¥ »ç¿ëµÇ´Â Å×½ºÆ® ÇÁ·Î±×·¥ÀÌ µé¾îÀÖ´Ù. 5.6.1. ¸â¹ö ¿ä¾à ______________________________________________________________________ main() // ÇÁ·Î±×·¥ main(). ______________________________________________________________________ 5.6.2. ÂüÁ¶ HTML. 5.6.3. main() ¸ñÀû main() ¸Þ¼Òµå¸¦ Á¦°øÇÑ´Ù. ¹®¹ý public static void main( String argv[] ) ¼³¸í HTML¹®¼¿¡¼ Á¤ÀÇ ¸®½ºÆ® ¿ø¼Ò¿¡¼ °¢°¢ÀÇ name/valueÀÇ ½ÖÀ» º¸ÀÌ¸ç »ç¿ë °¡´ÉÇÑ name/valueÀÇ ½ÖÀÇ ¸®½ºÆ®¸¦ ¸®ÅÏÇÏ´Â CGIÇÁ·Î±×·¥¿¡ ´ëÇÑ ÁøÀÔÁ¡ÀÌ´Ù. ÆĶó¸ÞÅÍ argv[] java.cgi½ºÅ©¸³Æ®¿¡ ÀÇÇØ ÇÁ·Î±×·¥¿¡ Àü´ÞµÇ´Â ÀÎÀÚµé. ÇöÀç »ç¿ë ¾ÈÇÔ. 5.7. Text 5.7.1. Ŭ·¡½º ¹®¹ý public abstract class Text 5.7.2. Ŭ·¡½º ¼³¸í ÀÌ Å¬·¡½º´Â Email °ú HTML Ŭ·¡½ºÀÇ ¼öÆÛŬ·¡½ºÀÌ´Ù. ¸Þ½ÃÁö´Â ÀÌ Å¬·¡½º¾ÈÀÇ ¸Þ¼Òµå¿¡ ÀÇÇØ ¸¸µé¾îÁö°í ¼ºêŬ·¡½ºÀÇ ¸Þ¼Òµå·Î½á ¿Ï¼ºµÇ¸ç(completed) Çü½ÄÈ(formatted)µÈ´Ù. ÀÌ Å¬·¡½º´Â "Orbits.text"ÆÐÅ°Áö ¾È¿¡ µé¾îÀÖ´Ù. 5.7.3. ¸â¹ö ¿ä¾à ______________________________________________________________________ Text() // »ý¼ºÀÚ. add() // ÀÌ °´Ã¼¿¡ ÅؽºÆ®¸¦ Ãß°¡ÇÑ´Ù. addLineBreak() // °èÇà Ãß°¡. addParagraph() // ´Ü¶ô°èÇà Ãß°¡. ______________________________________________________________________ 5.7.4. Âü°í Email, HTML. 5.7.5. add() ¸ñÀû ¾ÆÀÌÅÛ¿¡ ÅؽºÆ®¸¦ Ãß°¡ÇÑ´Ù. ¹®¹ý public void add ( char addition ) public void add ( String addition ) public void add ( StringBuffer addition ) ¼³¸í ÅؽºÆ® ¾ÆÀÌÅÛÀÇ ³»¿ë¿¡ addition¸¦ Ãß°¡ÇÑ´Ù. ÆĶó¸ÞÅÍ addition ÅؽºÆ® ¾ÆÀÌÅÛ¿¡ Ãß°¡µÉ ÅؽºÆ®. ÂüÁ¶ addLineBreak(), addParagraph(). 5.7.6. addLineBreak() ¸ñÀû Çö ½ÃÁ¡¿¡¼ ÅؽºÆ®¿¡ °èÇàÀ» ÇÑ´Ù. ¹®¹ý public void addLineBreak () ¼³¸í Çö ½ÃÁ¡¿¡¼ ÅؽºÆ®¿¡ °èÇàÀ» ÇÑ´Ù. ÂüÁ¶ add(), addParagraph(). 5.7.7. addParagraph() ¸ñÀû »õ·Î¿î ´Ü¶ôÀ» ½ÃÀÛÇÑ´Ù. ¹®¹ý public void add () ¼³¸í ÅؽºÆ® È帧ÀÇ Çö ½ÃÁ¡¿¡¼ »õ ´Ü¶ôÀ» ½ÃÀÛÇÑ´Ù. ÂüÁ¶ add(), addLineBreak(). 6. ÇâÈÄ °èȹ o Email Ŭ·¡½º¿¡ Ãß°¡: Email( int capacity ) ¸Þ½ÃÁö°¡ ÇÒ´çµÇ±â À§Çؼ ¾ó¸¶³ª ¸¹Àº °ø°£ÀÌ ÇÊ¿äÇÑÁö ¾Ë°í ÀÖÀ» ¶§ »ç¿ë. sendTo( String [] address ) ÀüÀÚ¸ÞÀÏ ¸Þ½ÃÁö¿¡ ÁÖ(primary) ¸ñÀûÁö ¸®½ºÆ® Ãß°¡. sendCc( String address ) ÀüÀÚ¸ÞÀÏ ¸Þ½ÃÁö¿¡ Ä«º»Ä«ÇÇ(º¹»çº») ¸ñÀûÁö Ãß°¡. sendCc( String [] address ) ÀüÀÚ¸ÞÀÏ ¸Þ½ÃÁö¿¡ Ä«º»Ä«ÇÇ(º¹»çº») ¸ñÀûÁö Ãß°¡. sendBcc( String address ) ÀüÀÚ¸ÞÀÏ ¸Þ½ÃÁö¿¡ ºí¶óÀεå Ä«º» Ä«ÇÇ(ÀÍ¸í º¹»çº») ¸ñÀûÁö Ãß°¡. sendBcc( String [] address ) ÀüÀÚ¸ÞÀÏ ¸Þ½ÃÁö¿¡ ºí¶óÀεå Ä«º» Ä«ÇÇ(ÀÍ¸í º¹»çº») ¸ñÀûÁö Ãß°¡. o 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 ) ¾ÖÇø´ ¸µÅ©¸¦ ¸í½Ã. o HTML¸®½ºÆ®°¡ ³×½ºÆ® µÇ°Ô ÇÑ´Ù. o HTML ¸®½ºÆ® Æ÷¸ËÆÃ(formatting) ÄÚµåÀÇ ¿Ã¹Ù¸¥ Á¤·ÄÀ» ¼öÇàÇÒ ¿¡·¯ üŷ Äڵ带 Ãß°¡ÇÑ´Ù. o Makefile¿¡¼ ȯ°æ µ¥ÀÌŸ ÆÄÀÏÀÇ À§Ä¡¸¦ Á¶Á¤ÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. o µ¥ÀÌŸ Àü¼ÛÀÎ GET¸Þ¼Òµå¸¦ »ç¿ëÇÒ ¶§ ¸®½ºÆ®¿¡¼ ³ªÅ¸³ª´Â ºó name/value ½ÖÀ» ¾ø¾Ø´Ù. o °è¼ÓÇؼ º¯¼ö À̸§À» Á¦°øÇÒ java.util.Enumeration ÀÎÅÍÆäÀ̽ºÀÇ CGI·ÎÀÇ ±¸ÇöÀ» »ý°¢Áß. o ÀÌ ÆÐÅ°Áö¿¡ ÀÖ´Â ¸ðµç ¸Þ¼Òµå¸¦ »ç¿ëÇÏ´Â, Test Ŭ·¡½º¸¦ Ãß°¡ÇÑ´Ù. o µð¹ö±ë ¸ñÀûÀ¸·Î Á¡ÁøÀûÀÎ Å×½ºÆ®¸¦ Çϱâ À§ÇØ CGI_Test, Email_Test ¿Í HTML_Test ¼·Î°¡ ¾î¶»°Ô ºôµå µÇ´ÂÁö ¹®¼ÈÇÑ´Ù. o ¾î¶»°Ô Test°¡ ÀÌ ÆÐÅ°Áö¿¡¼ °¡´ÉÇÑ ¸ðµç ±â´ÉÀ» ÀÌ¿ëÇÏ´ÂÁö ¹®¼ÈÇÑ´Ù. 7. º¯È 7.1. 0.4¿¡¼ 0.5°£ÀÇ º¯È o ¸¶Áö¸· ÆÇÀ» ¹Ý¿µÇÏ´Â º¯ÈµÈ ¹®¼È¿Í ÁÖ¼® 7.2. 0.3¿¡¼ 0.4°£ÀÇ º¯È o ÃÖ¼ÒÇÑÀÇ ±â´ÉÀ» Á¦°øÇÏ´Â HTML Ŭ·¡½ºÀÇ °ñÀÚ ¹èÆ÷. o HTML_Test Ŭ·¡½º¿Í javahtmltest.html-dist ÀÛ¼º. o Á¤ÀÇ ¸®½ºÆ®¸¦ ´Ù·ç±â À§ÇÑ HTML ¸Þ¼Òµå¸¦ Ãß°¡. 7.3. 0.2¿¡¼ 0.3°£ÀÇ º¯È o Text ¿Í Email Ŭ·¡½º¸¦ Ãß°¡. HTML Ŭ·¡½ºµµ Ãß°¡µÇ¾úÀ¸³ª, ÀÌ ½Ã±â¿¡´Â ½ÃÀÛ ´Ü°è Á¤µµ. o ÆÐÅ°Áö¿¡ ´Ù¾çÇÑ Å¬·¡½º¸¦ ³ÖÀ½. ÁÖµÈ Å¬·¡½º´Â Orbits.net.*¿¡ µé¾î ÀÖÀ¸¸ç, Áö¿ø Ŭ·¡½º Text´Â Orbits.text.Text¾È¿¡ ÀÖÀ½. o CGItest °¡ CGI_Test ·Î ¹Ù²ñ. o Email_Test Ŭ·¡½º Ãß°¡. 7.4. 0.1¿¡¼ 0.2°£ÀÇ º¯È o ȯ°æº¯¼ö¸¦ ÀÚ¹Ù ÀÎÅÍÇÁ¸®ÅÍÀÇ Ä¿¸àµå ¶óÀÎ ¾È¿¡ ³Ö´Â ´ë½Å¿¡ Àӽà ÆÄÀÏ¿¡ ³õÀÓ. CGI Ŭ·¡½º¿Í java.cgi°¡ ¼öÁ¤µÇ¾úÀ½. o Javacgitest.html ¹®¼°¡ ¹èÆ÷ÆÇ¿¡ Æ÷ÇÔµÊ. o ÀνºÅç °úÁ¤ÀÇ make¿¡ ÀÇÇØ ¼öÁ¤µÈ ÅؽºÆ® ÆÄÀÏ¿¡ -dist·Î ³¡³ª´Â À̸§À» ºÙÀÓ.