Java CGI HOWTO <author>by David H. Silber <tt><htmlurl url="mailto:javacgi-document@orbits.com" name="javacgi-document@orbits.com"></tt> <date>1998³â 12¿ù 1ÀÏ ¹öÀü 0.5 <trans>¿Å±äÀÌ:<htmlurl url="mailto:jhpark@osnn.hanyang.ac.kr" name="¹ÚÁÖÈñ(jhpark@osnn.hanyang.ac.kr)"> <abstract> ÀÌ HOWTO ¹®¼­´Â ¾î¶»°Ô ÀÚ¹Ù·Î ÀÛ¼ºµÈ CGI ÇÁ·Î±×·¥ÀÌ ¼­¹ö¿¡¼­ »ç¿ë°¡´É Çϵµ·Ï ¼³Á¤ ÇÏ¸ç ¶Ç CGI ÇÁ·Î±×·¥À» ÀÛ¼ºÇϱâ À§ÇØ ¾î¶»°Ô ÀÚ¹Ù¸¦ »ç¿ëÇÏ´ÂÁö¸¦ ¼³¸íÇÑ´Ù. HOWTO ¹®¼­µéÀº ¸®´ª½º ¿î¿µÃ¼Á¦¿¡¼­ÀÇ »ç¿ëÀ» ¸ñÀûÀ¸·Î ÀÛ¼ºµÇÁö¸¸, ƯÁ¤ÇÑ À¯´Ð½º ¹öÀü¿¡ »ó°ü ¾øÀÌ Àû¿ëµÈ´Ù. </abstract> <toc> <sect>¼Ò°³ <p> ÀÚ¹Ù°¡ µðÀÚÀÎµÈ ¹æ½Ä ¶§¹®¿¡ ÇÁ·Î±×·¡¸Ó´Â ½Ã½ºÅÛÀÇ È¯°æ º¯¼öµéÀ» ½±°Ô ¾×¼¼½ºÇÒ ¼ö ¾ø´Ù. Java Development Kit (JDK)°¡ ¼Â¾÷µÈ ¹æ½Ä ¶§¹®¿¡, ÇÁ·Î±×·¥À» È£ÃâÇϱâ À§Çؼ­´Â ¿©·¯ °³ÀÇ ÅäÅ«À» ÀÌ¿ëÇØ¾ß Çϸç, À̰͵µ Ç¥ÁØ HTMLÆû/CGI ÀÛµ¿¹æ½Ä°ú Àß ¸ÂÁö ¾Ê´Â´Ù. ÀÌ·¯ÇÑ ÇÑ°è¿¡ ´ëÇÑ ¸î °¡Áö ¹æ¹ýÀÌ ÀÖÀ¸¸ç, ÇÊÀÚ°¡ ±× Áß Çϳª¸¦ ±¸ÇöÇÏ¿´´Ù.ÀÚ¼¼ÇÑ °ÍÀº µÚ¸¦ ´õ Àо±æ ¹Ù¶õ´Ù. ÀÌÀüÀÇ ¹®´ÜÀ» 1996³â¿¡ ÀÛ¼ºÇÑ ÀÌ·¡·Î ÀÚ¹ÙÀÇ ±â¼ú¿¡µµ ¸¹Àº º¯È­°¡ ÀÖ¾î¿Ô´Ù. ¼­¹ö-Ãø(server-side) ÀÚ¹Ù ÇÁ·Î±×·¥À» ½ÇÇà½ÃÅ°´Â °ÍÀÌ ´õ ³ªÀº ¹æ¹ýÀÏ ¼ö ÀÖÀ¸¸ç -- ¼­ºê¸´ÂÊÀ» »ìÆ캸¾Æµµ ±¦ÂúÀ» °ÍÀÌ´Ù. <sect1>»çÀü Áö½Ä <p> ÇÊÀÚ´Â µ¶ÀÚµéÀÌ HTML°ú CGI °³³äµé¿¡ °üÇÑ ÀϹÝÀû Áö½Ä°ú ÃÖ¼ÒÇÑÀÇ HTTP¼­¹ö¿¡ °üÇÏ¿© ±âº»ÀûÀÎ Áö½ÄÀ» °®°í ÀÖ´Ù°í °¡Á¤ÇÑ´Ù. ¹°·Ð ÀÚ¹Ù·Î ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â ¹ýÀ» ¾Ë¾Æ¾ß ÇÏ¸ç ±×·¸Áö ¸øÇϸé ÀÌ ¹®¼­´Â ÀÌÇØÇϱâ Èûµé´Ù. <sect1>º» ¹®¼­¿¡ °üÇÏ¿© <p> º» ¹®¼­ÀÇ ÃÖ±Ù ÆÇÀº <htmlurl url="http://www.orbits.com/software/Java_CGI.html" name="http://www.orbits.com/software/Java_CGI.html">¿¡¼­ ÀÐÀ» ¼ö ÀÖ´Ù. <sect1>ÆÐÅ°Áö <p> º» ¹®¼­¿¡¼­ ¼³¸íÇÏ´Â ÆÐÅ°Áö´Â ´ÙÀ½ÀÇ anonymous FTP¿¡¼­ ¿¢¼¼½ºÇÒ ¼ö ÀÖ´Ù. <htmlurl url="ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz" name="ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz">. ÆÐÅ°Áö¿¡´Â º» ¹®¼­ÀÇ SGML ¼Ò½ºµµ Æ÷ÇԵǾî ÀÖ´Ù. º» ÆÐÅ°Áö´Â GNU Library General Public License Á¶Ç׿¡ ÀÇ°ÅÇØ ¹èÆ÷µÈ´Ù. º» ¹®¼­´Â ¸®´ª½º HOWTO ÆDZÇ(copyright) ÁÖÀÇ»çÇ׿¡ ÀÇ°ÅÇؼ­ ¹èÆ÷µÈ´Ù. ¸¸¾à º» ¼ÒÇÁÆ®¿þ¾î¸¦ »ç¿ëÇÑ´Ù¸é, ´Ù¸¥ »ç¶÷µéÀÌ Java CGIŬ·¡½º¸¦ ãÀ» ¼ö ÀÖµµ·Ï <htmlurl url="http://www.orbits.com/software/Java_CGI.html" name="http://www.orbits.com/software/Java_CGI.html">¸¦ ÂüÁ¶Çϱ⠹ٶõ´Ù. ÇÊÀÚ°¡ º» ÆÐÅ°Áö¸¦ À¯ÁöÇÏ°í Áö¿øÇϴµ¥ »ç¿ëÇÒ ½Ã°£ÀÌ ¾ø¾î¼­ º» ¹®¼­°¡ ¾Æ¸¶ ¸¶Áö¸· ÆÇÀÌ µÉ °ÍÀÌ´Ù. ¾Æ¹«¶óµµ º» ¼ÒÇÁÆ®¿þ¾î¸¦ ¾Æ³¢¾î À¯Áöº¸¼ö¸¦ ÀμöÇÏ·Á ÇÑ´Ù¸é, <tt><htmlurl url="mailto:javacgi-document@orbits.com" name="javacgi-document@orbits.com"></tt>À¸·Î ¿¬¶ô ¹Ù¶õ´Ù. <sect1>¸ÞÀϸµ ¸®½ºÆ® <label id="mailing-list"> <p> »ç¶÷µéÀÌ º» ¼ÒÇÁÆ®¿þ¾î¸¦ ÀνºÅçÇÏ°í »ç¿ëÇϴµ¥ À־ÀÇ »óÈ£ÀÇ ¹®Á¦Á¡µéÀ» ¼­·Î µ½°íÀÚ ÇÊÀÚ°¡ majordomo (¿ªÀÚÁÖ:¸ÞÀϸµ ¸®½ºÆ® ¸Þ´ÏÀúÀÇ Çϳª) ¸®½ºÆ®¸¦ ¸¸µé¾ú´Ù. <em>subscribe</em>¶ó´Â ¸»À» Àû¾î¼­ <tt><htmlurl url="mailto:javacgi-request@orbits.com" name="javacgi-request@orbits.com"></tt>·Î ¸Þ½ÃÁö¸¦ º¸³»±â ¹Ù¶õ´Ù. <sect>ÀÚ¹Ù CGIÇÁ·Î±×·¥À» ½ÇÇàÇϱâ À§ÇØ ¼­¹ö ¼ÂÆÃÇϱâ (¼³¸í ÷ºÎ) <label id="install-long"> <p> ÀÌ ºÎºÐÀº ¼³Ä¡ ÀÛ¾÷ÀÌ ¾î¶² ¿µÇâÀ» ³¢Ä¡´ÂÁö ¿©·¯ºÐ ÀÚ½ÅÀÌ ¾Ë°Ô Çϱâ À§ÇØ Ç³ºÎÇÑ ¼³¸í°ú ÇÔ²² ÇÊÀÚÀÇ <em>Java CGI</em> ÆÐÅ°Áö¸¦ ÀνºÅç ÇÒ °ÍÀÌ´Ù. ¸¸¾à º» ÇÁ·Î±×·¥À» ÀνºÅ縸 ÇÏ°í ¿ÖÀÎÁö ±×¸®°í ¿Ö ±×·¡¾ß¸¸ ÇÏ´ÂÁö¿¡ ´ëÇÑ °ÍÀº ½Å°æ ¾² Áö ¾Ê´Â´Ù¸é, ´ÙÀ½À¸·Î ³Ñ¾î°¡¶ó. <ref id="install-short" name="ÀÚ¹Ù CGIÇÁ·Î±×·¥À» ½ÇÇàÇϱâ À§ÇØ ¼­¹ö ¼ÂÆÃÇϱâ (¿ä¾à)">. <sect1>½Ã½ºÅÛ ¿ä±¸»çÇ× <p> º» ¼ÒÇÁÆ®¿þ¾î´Â Java Development KitÀÌ ÀνºÅçµÈ ´ëºÎºÐÀÇ À¯´Ð½º ÇüÅÂÀÇ À¥ ¼­¹ö¿¡¼­ ÀÛµ¿ÇÒ °ÍÀÌ´Ù. ÇÊÀÚ´Â <em>apache</em>¸¦ HTTP µ¥¸óÀ¸·Î ½ÇÇà½ÃÅ°¸ç <em>Debian Linux</em>¸¦ »ç ¿ëÇÏ°í ÀÖ´Ù. ¸¸¾à ½ÇÇàµÇÁö ¾ÊÀ¸¸é, ¸ÞÀϸµ ¸®½ºÆ®¸¦ ã¾Æº¸±æ ¹Ù¶õ´Ù. ÀÚ¼¼ÇÑ °ÍÀº <ref id="mailing-list" name="¸ÞÀϸµ ¸®½ºÆ®">¸¦ ÂüÁ¶Ç϶ó. ºÒÇàÈ÷µµ ÀÚ¹Ù ·±Å¸ÀÓ ÀÎÅÍÇÁ¸®ÅÍ´Â ¸Þ¸ð¸®¸¦ ¸¹ÀÌ ÇÊ¿ä·Î ÇÏ´Â °Í °°´Ù-- Java CGI ÇÁ·Î±×·¥µéÀ» ¿©·¯ ¹ø ½ÇÇàÇÑ´Ù¸é ·¥ÀÌ ´õ ÇÊ¿äÇÒ °ÍÀÌ´Ù. <sect1>Java CGI ¾Öµå-¿Â ¼ÒÇÁÆ®¿þ¾î <p> º» ¹®¼­¿¡¼­ ¼³¸íÇÏ·Á´Â ¼ÒÇÁÆ®¿þ¾î´Â <em>Java CGI</em>¶ó°í ÇÑ´Ù. <htmlurl url="ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz" name="ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz">¿¡¼­ ¾òÀ» ¼ö ÀÖ´Ù. ¹öÀüÀÌ º¯ÇßÀ»Áöµµ ¸ð¸¥´Ù. <sect1>¼Ò½º ¾ÐÃà Ç®±â <p> º» ÆÐÅ°Áö¸¦ Ç®¾î µÑ Àû´çÇÑ µð·ºÅ丮¸¦ ã´Â´Ù. (´Ù¸¥ ÆÐÅ°Áö¸¦ Ç®¾î µÐ ÀÏÁ¤ÇÑ °÷ÀÌ ¾ø´Ù¸é, <tt>/usr/local/src</tt>¸¦ »ç¿ëÇ϶ó.) ´ÙÀ½ÀÇ ¸í·ÉÀ¸·Î ¹èÆ÷ÆÇÀ» Ǭ´Ù. <verb> gzip -dc java_cgi-0.5.tgz | tar -xvf - </verb> <tt>java_cgi-0.5</tt>µð·ºÅ丮°¡ »ý¼ºµÉ °ÍÀÌ´Ù.. °Å±â¿¡ ÀÌ ´ÙÀ½ ´Ü°èºÎÅÍ ÂüÁ¶ ÆÄÀÏÀÌ ÀÖÀ» °ÍÀÌ´Ù. (¹öÀüÀÌ ¹Ù²î¾ú´Ù¸é, Áö±ÝºÎÅÍ´Â ±× ¹èÆ÷ÆÇÀÇ ¼³¸íÀ» Âü°íÇ϶ó) <sect1>Áö¿ª °æ·Î(local path)¿¡ °üÇÑ ¹æħÀ» Á¤Ç϶ó <label id="make-programs"> <p> Java CGIÇÁ·Î±×·¥µéÀ» ¾îµð¿¡ µÑÁö °áÁ¤ÇÑ´Ù. º¸Åë, <tt>cgi-bin</tt>µð·ºÅ丮¿¡ °°ÀÌ µÑ °ÍÀÌ´Ù. ÇÊÀÚÀÇ <em>apache</em> ¼­¹ö´Â cgi-bin µð·ºÅ丮·Î½á <tt>/var/www/cgi-bin</tt>À» »ç¿ëÇÏ°Ô ¼³Á¤µÇ¾î À־, Java CGI ÇÁ·Î±×·¥µéÀ» ³Ö¾îµÑ µð·ºÅ丮·Î´Â <tt>/var/www/javacgi</tt>¸¦ »ç¿ëÇÑ´Ù. ÁöÁ¤µÈ <tt>CLASSPATH</tt> µð·ºÅ丮¿¡ Java CGI ÇÁ·Î±×·¥µéÀ» ±ò°í ½ÍÁö ¾ÊÀ» Áöµµ ¸ð¸¥´Ù. ½Ã½ºÅÛ ¼³Á¤À» ¹Ý¿µÇϱâ À§ÇØ MakefileÀ» ÆíÁýÇÑ´Ù. root·Î ·Î±×ÀÎ ÇÑ °ÍÀ» È®ÀÎÇÏ°í <tt>make install</tt> À» ½ÇÇàÇÑ´Ù. ÀÌ ¸í·ÉÀÌ ÀÚ¹Ù ÇÁ·Î±×·¥µéÀ» ÄÄÆÄÀÏÇÏ°í, <tt>java.cgi</tt> ½ºÅ©¸³Æ®¸¦ ½Ã½ºÅÛ¿¡ ¸Â°Ô º¯°æÇÏ°í Àû´çÇÑ °÷¿¡ ±× ÇÁ·Î±×·¥µéÀ» ÀνºÅçÇÑ´Ù. Ãß°¡·Î, º» ¹®¼­ÀÇ HTML ¹öÀüÀ̳ª HTMLÅ×½ºÆ® ¹®¼­¸¦ ¿øÇÑ´Ù¸é, ´ë½Å <tt>make all</tt> À» ½ÇÇàÇÑ´Ù. <sect1>ÀνºÅç Å×½ºÆ®Çϱâ <label id="install-test"> <p> ¹èÆ÷ÆÇÀ¸·ÎºÎÅÍ ÀνºÅçµÈ °ÍÀº <tt>javacgitest.html</tt>, <tt>javaemailtest.html</tt> ¿Í <tt>javahtmltest.html</tt>À̶ó´Â HTML¹®¼­µéÀÌ´Ù. ¾ÕÀå¿¡¼­ <tt>all</tt>·Î ÀνºÅçÇß´Ù¸é, <tt>Makefile</tt>¿¡¼­ WEBDIR·Î ¼³Á¤µÈ µð·ºÅä ¸®¿¡ ÀÌ ¹®¼­µéÀÌ ÀÖÀ» °ÍÀÌ´Ù. ±×·¸Áö ¾Ê´Ù¸é <tt>javacgitest.html-dist</tt>, <tt>javaemailtest.html-dist</tt> ¿Í <tt>javahtmltest.html-dist</tt>·ÎºÎÅÍ ºôµå(build)Çϱâ À§ÇØ<tt>make test</tt>¸¦ ½ÇÇàÇØ µµ µÈ´Ù. ÀνºÅçÇÑ °ÍÀÌ Á¤È®ÇÏ°Ô µ¿ÀÛÇÒ ¶§, JAVACGI µð·ºÅ丮·ÎºÎÅÍ <tt>CGI_Test.class</tt>, <tt>Email_Test.class</tt>¿Í <tt>HTML_Test.class</tt>¸¦, WEBDIR µð·ºÅ丮·Î ºÎÅÍ´Â <tt>javacgitest.html</tt>, <tt>javaemailtest.html</tt> ¿Í <tt>javahtmltest.html</tt>À» Áö¿ì°í ½ÍÀ»Áöµµ ¸ð¸¥´Ù. º¸Åë ¼­¹ö¿¡°Ô¸¸ »ç¿ë °¡´ÉÇÑ »ç¿ëÀÚ Á¤º¸¸¦ º¸¿©Áֱ⠶§¹®ÀÌ´Ù. <sect>Java CGI ÇÁ·Î±×·¥À» ½ÇÇà½ÃÅ°±â À§ÇÏ¿© ¼­¹ö ¼¼ÆÃÇϱâ(¿ä¾àÇüÅÂ) <label id="install-short"> <p> <itemize> <item> <htmlurl url="ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz" name="ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz">·ÎºÎÅÍ <em>Java CGI</em>ÆÐ Å°Áö¸¦ ¾ò´Â´Ù. (¹öÀüÀÌ º¯ÇßÀ»Áöµµ ¸ð¸¥´Ù) </item> <item> ´ÙÀ½ ¸í·É¾î·Î ¹èÆ÷ÆÇÀ» Ǭ´Ù: <verb> gzip -dc java_cgi-0.5.tgz | tar -xvf - </verb> (¹öÀüÀÌ ¹Ù²î¾ú´Ù¸é, Áö±ÝºÎÅÍ´Â ±× ¹èÆ÷ÆÇÀÇ ¼³¸íÀ» Âü°íÇ϶ó) </item> <item> »õ·ÎÀÌ »ý¼ºµÈ<tt>java_cgi-0.5</tt> µð·ºÅ丮¿¡¼­ ½Ã½ºÅÛ¿¡ ¸Â°Ô<tt>Makefile</tt>À» ÆíÁýÇÑ´Ù. </item> <item> root·Î½á <tt>make install</tt>À» ½ÇÇàÇÑ´Ù. ÀÌ ¸í·ÉÀÌ ÀÚ¹Ù ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇÏ°í, ¿©·¯ºÐÀÇ ½Ã½ºÅÛ¿¡ °ü·ÃµÈ Á¤º¸µéÀ» Àû¿ë(apply)½ÃÅ°°í ´Ù¾çÇÑ ÆÄÀϵéÀ» ÀνºÅç ÇÑ´Ù. ¸¸¾à HTML·ÎµÈ º» ¹®¼­¿Í HTMLÅ×½ºÆ® ¹®¼­¸¦ ¿øÇÑ´Ù¸é, ´ë½Å <tt>make all</tt>À» ½ÇÇàÇÑ´Ù. </item> <item> ÀÌÁ¦ Áغñ°¡ µÇ¾ú´Ù. </item> </itemize> <sect>Java CGI ÇÁ·Î±×·¥ ½ÇÇàÇϱâ <p> <sect1>CGI ¸ðµ¨ »ó¿¡¼­ ÀÚ¹Ù ÇÁ·Î±×·¥ÀÇ ½ÇÇàÀ» ¸·´Â Àå¾Ö¹° <p> À¥ ¼­¹ö¿¡¼­ ÀÚ¹Ù ÇÁ·Î±×·¥À» ½ÇÇà½ÃÅ°´Âµ¥ À־ µÎ °¡Áö ¹®Á¦Á¡ÀÌ ÀÖ´Ù: <sect2>ÀÚ¹Ù ÇÁ·Î±×·¥À» º¸Åë ½ÇÇàÆÄÀÏó·³ ½ÇÇà½Ãų ¼ö ¾ø´Ù. <p> Ä¿¸àµå ¶óÀλ󿡼­ ÀÚ¹Ù ·±Å¸ÀÓ ÀÎÅÍÇÁ¸®Å͸¦ ½ÇÇàÇÏ°í (ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÉ ¼ö ÀÖµµ·Ï) ÃʱâÈ­ Ŭ·¡½º°¡ ÀÖ¾î¾ß ÇÑ´Ù. HTML ÇüÅ·δ Ŀ¸àµå ¶óÀÎÀ» À¥ ¼­¹ö¿¡ º¸³¾ ¼ö ¾ø´Ù. <sect2>Àڹٴ ȯ°æ(º¯¼ö)¿¡ ´ëÇØ ÀϹÝÀûÀÎ ¾×¼¼½ºÇÒ ¼ö ¾ø´Ù. <p> ÀÚ¹Ù ÇÁ·Î±×·¥ÀÌ ÇÊ¿ä·Î ÇÏ´Â °³°³ÀÇ È¯°æº¯¼ö´Â Á¤È®ÀÌ ³Ñ°ÜÁ®¾ß(pass) ÇÑ´Ù. <bf>C</bf> ¿¡¼­ÀÇ <tt>getenv()</tt> ÇÔ¼ö °°Àº ¸Þ¼Òµå´Â ¾ø´Ù. <sect1>Java CGIÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¶§ÀÇ ¹®Á¦Á¡ ±Øº¹ <p> À§ÀÇ Àå¾Ö¹°À» ó¸®Çϱâ À§ÇØ, ÀÚ¹Ù ÀÎÅÍÇÁ¸®ÅÍ¿¡°Ô ÇÊ¿äÇÑ Á¤º¸¸¦ Á¦°øÇÏ´Â ½© CGIÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ¿´´Ù. <sect2> java.cgi ½ºÅ©¸³Æ® <p> ÀÌ ½© ½ºÅ©¸³Æ®´Â »ç¿ëÇÏ°íÀÚ ÇÏ´Â Java CGIÇÁ·Î±×·¥°ú HTTPµ¥¸ó »çÀÌÀÇ »óÈ£ÀÛ¿ë(interaction)À» °ü¸®ÇÑ´Ù. ÀÌ ½ºÅ©¸³Æ®´Â ½ÇÇàÇÏ°íÀÚ ÇÏ´Â ÇÁ·Î±×·¥ÀÇ À̸§À» ¼­¹ö°¡ Á¦°øÇÏ´Â µ¥ÀÌŸ·ÎºÎÅÍ »Ì¾Æ³»¸ç ÀÓÀÇÀÇ Àӽà ÆÄÀÏ ¾È¿¡ ȯ°æ µ¥ÀÌŸ(environment data) ¸ðµÎ¸¦ ¸ðÀº´Ù. ±×¸®°í³ª¼­ Ä¿¸àµå ¶óÀο¡ µ¡ºÙ¿©Áø ȯ°æ Á¤º¸ ÆÄÀÏÀÇ À̸§°ú ÇÁ·Î±×·¥ À̸§À» °¡Áö°í ÀÚ¹Ù ·±Å¸ÀÓ ÀÎÅÍÇÁ¸®Å͸¦ ½ÇÇà½ÃŲ´Ù. <tt>java.cgi</tt>½ºÅ©¸³Æ®´Â <ref id="make-programs" name="Áö¿ª °æ·Î¿¡ °üÇÑ ¹æħÀ» Á¤Ç϶ó"> ¿¡¼­ ±¸¼ºµÇ¾úÀ¸¸ç ÀνºÅçµÇ¾ú´Ù. <sect2>HTML formÀ¸·Î ºÎÅÍ java.cgi È£ÃâÇϱâ <p> Java CGI ÇÁ·Î±×·¥À» »ç¿ëÇÏ´Â ÇÊÀÚÀÇ ÆûÀº ´ÙÀ½°ú °°ÀÌ form actionÀ» ¸í½ÃÇÑ´Ù: <verb> <form action="/cgi-bin/java.cgi/CGI_Test" method="POST"> </verb> ¿©±â¼­ <tt>/cgi-bin/</tt> Àº ¿©·¯ºÐÀÇ CGI ¹ÙÀ̳ʸ® µð·ºÅ丮À̸ç, <tt>java.cgi</tt>´Â À¥»ó¿¡¼­ Java ÇÁ·Î±×·¥À» ½ÇÇà½ÃÅ°°Ô ÇØÁÖ´Â ÀÚ¹Ù front-end À̸ç, <tt>CGI_Test</tt>´Â ½ÇÇà½Ãų ÀÚ¹Ù ÇÁ·Î±×·¥ À̸§ÀÇ ¿¹ÀÌ´Ù. <sect>Java CGIŬ·¡½º »ç¿ëÇϱâ <p> ÇöÀç ¼¼°³ÀÇ ¸ÞÀΠŬ·¡½º°¡ Á¦°øµÈ´Ù. <ref id="cgi-class" name=CGI>¿Í <ref id="email-class" name=Email>°ú <ref id="html-class" name=HTML>ÀÌ´Ù. ÇÊÀÚ´Â MIME ÇüÅÂÀÇ ÀÔÃâ·ÂÀ» ´Ù·ç´Â °¢°¢ÀÇ Å¬·¡½º- MIMEin °ú MIMEout - ¸¦ Ãß°¡ÇÒ »ý°¢ÀÌ´Ù. <p> Áö¿ø¿ëŬ·¡½º¿Í Å×½ºÆ® Ŭ·¡½ºµµ ¸î °³ ÀÖ´Ù. <ref id="cgi-test-class" name="CGI_Test">, <ref id="email-test-class" name="Email_Test"> ¿Í <ref id="email-test-class" name="HTML_Test">´Â ÀνºÅçÀ» Å×½ºÆ®Çϱâ À§ÇÑ °ÍÀÌ´Ù. À̵é Ŭ·¡½º´Â ÀÌ Å¬·¡½º ¶óÀ̺귯¸®´Â »ç¿ëÇÏ´Â ÀÚ¹Ù ÇÁ·Î±×·¥¿¡¼­ ½ÃÀÛÁ¡(starting- point)ó·³ »ç¿ëµÉ ¼öµµ ÀÖÀ»°ÍÀÌ´Ù. <ref id="text-class" name=Text> Ŭ·¡½º´Â <tt>Email</tt> ¿Í <tt>HTML</tt> Ŭ·¡½ºÀÇ ¼öÆÛŬ·¡½ºÀÌ´Ù. <sect1>CGI<label id="cgi-class"> <p> <sect2>Ŭ·¡½º ¹®¹ý <p> <tt>public class CGI</tt> <sect2>Ŭ·¡½º ¼³¸í <p> CGI Ŭ·¡½º´Â "CGI Á¤º¸" (À¥ ¼­¹ö°¡ Á¤ÇÑ È¯°æ º¯¼öµé°ú <bf>submit</bf> µ¿ÀÛÀÌ ¼±ÅõǾúÀ» ¶§ formÀ¸·ÎºÎÅÍ º¸³½ name/value)¸¦ °¡Áø´Ù. ¸ðµç Á¤º¸´Â <tt>Properties</tt> Ŭ·¡½º °´Ã¼¿¡ ÀúÀåµÈ´Ù. ÀÌ Å¬·¡½º´Â "Orbits.net" ÆÐÅ°Áö¿¡ µé¾îÀÖ´Ù. <sect2>¸â¹ö ¿ä¾à <p> <code> CGI() // »ý¼ºÀÚ. getNames() // À̸§µéÀÇ ¸®½ºÆ®¸¦ ¾ò´Â´Ù. getValue() // À̸§À» ¸í½ÃÇÔÀ¸·Î½á formÀÇ value¸¦ ¾ò´Â´Ù. </code> <sect2>ÂüÁ¶ <p> <tt>CGI_Test</tt>. <sect2>CGI() <p> <descrip> <tag/¸ñÀû/ »ç¿ë °¡´ÉÇÑ CGI Å×ÀÌŸ¸¦ °¡Áø °´Ã¼¸¦ »ý¼ºÇÑ´Ù. <tag/¹®¹ý/ <tt>public CGI()</tt> <tag/¼³¸í/ CGI °´Ã¼°¡ »ý¼º µÇ¾úÀ» ¶§, ¸ðµç »ç¿ë °¡´ÉÇÑ CGIÁ¤º¸°¡ ±× °´Ã¼¿¡ ´ëÇØ ·ÎÄÃÀÎ ÀúÀå¼Ò·Î º¸³»Áø´Ù. </descrip> <sect2>getNames() <p> <descrip> <tag/¸ñÀû/ ÇØ´çÇÏ´Â value¸¦ °®µµ·Ï Á¤ÀÇµÈ nameµéÀ» º¸ÀδÙ. <tag/¹®¹ý/ <tt>public Enumeration getKeys ()</tt> <tag/¼³¸í/ ÇØ´çÇÏ´Â value°¡ Á¤ÀÇµÈ nameÀÇ Àüü ¸®½ºÆ®¸¦ Á¦°øÇÑ´Ù. <tag/¸®ÅÏ/ Á¤ÀÇµÈ ¸ðµç À̸§ÀÇ <tt>Enumeration</tt> </descrip> <sect2>getValue() <p> <descrip> <tag/¸ñÀû/<bf>name</bf>ÀÌ ¸í½ÃµÈ<bf> value</bf>¸¦ ÃëÇÑ´Ù. <tag/¹®¹ý/ <tt>public String getValue ( String name )</tt> <tag/¼³¸í/ HTML formÀ¸·ÎºÎÅÍ º¸³»Áø <tt>name</tt>°ú <tt>value</tt>»çÀÌ¿¡ ´ëÀÀÇÏ´Â °ÍÀ» ¸®ÅÏÇÔ. <tag>ÆĶó¸ÞÅÍ <descrip> <tag/name/ value¸¦ ¼±ÅÃÇÏ´Â Å° </descrip> <tag/¸®ÅÏ/ value¸¦ ´ã°í ÀÖ´Â <tt>String</tt> </descrip> <sect1>CGI_Test<label id="cgi-test-class"> <p> ÀÌ Å¬·¡½º¿¡´Â <tt>CGI</tt>Ŭ·¡½º¸¦ ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö¿¡ °üÇÑ ¿¹Á¦¿Í <em>Java CGI</em> ÆÐÅ°Áö°¡ Á¤È®ÇÏ°Ô µ¿ÀÛÇÏ´ÂÁö È®ÀÎÇϴµ¥ »ç¿ëµÇ´Â Å×½ºÆ® ÇÁ·Î±×·¥ÀÌ µé¾î ÀÖ´Ù. <sect2>¸â¹ö¿ä¾à <p> <code> main() // ÇÁ·Î±×·¥ main(). </code> <sect2>ÂüÁ¶ <p> <tt>CGI</tt>. <sect2>main() <p> <descrip> <tag/¸ñÀû/ <tt>main()</tt> ¸Þ¼Òµå¸¦ Á¦°øÇÑ´Ù. <tag/¹®¹ý/ <tt>public static void main( String argv[] )</tt> <tag/¼³¸í/ »ç¿ë °¡´ÉÇÑ name/value ½ÖÀÇ ¸®½ºÆ®¿Í ÇöÀç °ªÀ» ¸®ÅÏÇÏ´Â CGI ÇÁ·Î±×·¥¿¡ ´ëÇÑ ÁøÀÔÁ¡(entry point)ÀÌ´Ù. <tag>ÆĶó¸ÞÅÍ <descrip> <tag/argv[]/ <tt>java.cgi</tt> ½ºÅ©¸³Æ®¿¡ ÀÇÇØ ÇÁ·Î±×·¥¿¡ Àü´ÞµÇ´Â ÀÎÀÚµé. ÇöÀç »ç¿ë ¾ÈÇÔ </descrip> </descrip> <sect1>Email<label id="email-class"> <p> <sect2>Ŭ·¡½º ¹®¹ý <p> <tt>public class Email extends Text</tt> <sect2>Ŭ·¡½º ¹®¹ý <p> ¸Þ½ÃÁö´Â <tt>Text</tt>Ŭ·¡½ºÀÇ <tt>add* ()</tt> ¸Þ¼Òµå¿Í ÀÌ Å¬·¡½º¿¡ ÀÇÇØ Ãß°¡µÈ e-mail °ü·Ã(e-mail-specific) ¸Þ¼Òµå·Î ¸¸µé¾îÁø´Ù. ´Ù ¸¶Ä¡¸é, ¸Þ½ÃÁö´Â ¸ñÀûÁö·Î º¸³»Áø´Ù. ÀÌ Å¬·¡½º´Â "Orbits.net"ÆÐÅ°Áö¿¡ µé¾îÀÖ´Ù. <sect2>¸â¹ö ¿ä¾à <p> <code> Email() // »ý¼ºÀÚ. send() // ÀüÀÚ¸ÞÀÏ ¸Þ½ÃÁö¸¦ º¸³½´Ù. sendTo() // ¸Þ½ÃÁö¿¡ ¸ñÀûÁö¸¦ Ãß°¡ÇÑ´Ù. subject() // ¸ÞÁöÁö¿¡ ÁÖÁ¦(Subject:)¸¦ Á¤ÇÑ´Ù. </code> <sect2>Âü°í <p> <tt>Email_Test, Text</tt>. <sect2>Email() <p> <descrip> <tag/¸ñÀû/ ÀüÀÚ¸ÞÀÏ ¸Þ½ÃÁö¸¦ ´ãÀº °³Ã¼¸¦ »ý¼ºÇÑ´Ù. <tag/¹®¹ý/ <tt>public Email()</tt> <tag/¼³¸í/ Email¸Þ¼Òµå·Î¼­ ¿Ï¼º(complete)µÉ ºó ¸Þ½ÃÁö¸¦ ¼Â¾÷ÇÑ´Ù. <tag/ÂüÁ¶/ <tt>Text</tt>. </descrip> <sect2>send() <p> <descrip> <tag/¸ñÀû/ ÀüÀÚ¸ÞÀÏ ¸Þ½Ã½Ã¸¦ º¸³½´Ù. <tag/¹®¹ý/ <tt>public void send ()</tt> <tag/¼³¸í/ ¸ÞÁö½Ã¸¦ Á¤ÇüÈ­(format)ÇÏ°í º¸³½´Ù. ¸ñÀûÁö°¡ Á¤ÇØÁöÁö ¾Ê¾ÒÀ¸¸é, ¾Æ¹« Àϵµ ¹ß»ýÇÏÁö ¾Ê´Â´Ù. </descrip> <sect2>sendTo() <p> <descrip> <tag/¸ñÀû/ ¸Þ½ÃÁö¿¡ ¸ñÀûÁö¸¦ Ãß°¡ÇÑ´Ù. <tag/¹®¹ý/ <tt>public String sendTo ( String address )</tt> <tag/¼³¸í/ ÀÌ ¸Þ¼ÒµåÀÇ ¸ñÀûÁö ¸®½ºÆ®¿¡ <tt>ÁÖ¼Ò</tt> ¸¦ Ãß°¡ÇÑ´Ù. ÀüÀÚ¸ÞÀÏ ¸Þ½ÃÁö°¡ °¡Áú ¼ö ÀÖ´Â ¸ñÀûÁöÀÇ ¼ö¿¡´Â Á¤ÇØÁø ÇÑ°è°¡ ¾ø´Ù. ¸®½ºÆ®ÀÇ Å©±â¸¦ ÃæºÐÈ÷ Å©°Ô ¸¸µç´Ù¸é,<em> ¸ÞÀÏ Àü¼Û ¿¡ÀÌÀüÆ®(Mail Transport Agent)</em> °¡ Çã¿ëÇÒ ¼ö ÀÖ´Â ÆĶó¸ÞÅÍ ¸®½ºÆ®ÀÇ »çÀÌÁ ÃÊ°úÇÒ ¼ö ÀÖÀ¸¸ç ±×·¸Áö ¾Ê´Ù¸é ¸Þ¸ð¸®¸¦ ´Ù ½á¹ö¸± °ÍÀÌ´Ù. <tag>ÆĶó¸ÞÅÍ/ <descrip> <tag/address/ ¸Þ½ÃÁö¸¦ º¸³¾ ¸ñÀûÁö. </descrip> </descrip> <sect2>subject() <p> <descrip> <tag/¸ñÀû/ ¸Þ½ÃÁöÀÇ ÁÖÁ¦¸¦ Á¤ÇÑ´Ù. <tag/¹®¹ý/ <tt>public void subject ( String subject )</tt> <tag/¼³¸í/ ÀüÀÚ¸ÞÀÏÀÇ <tt>Subject:</tt> ÁÙÀÇ ÅؽºÆ®¸¦ Á¤ÇÑ´Ù. ¸¸¾à Çѹø ÀÌ»ó È£ÃâµÇ¸é, ¸Ç ¸¶Áö¸·¿¡ Á¤ÇÑ subject°¡ »ç¿ëµÈ´Ù. <tag/ÆĶó¸ÞÅÍ/ <descrip> <tag/subject/ ¸Þ½ÃÁöÀÇ <tt>Subject:</tt> ÁÙÀÇ ÅؽºÆ® </descrip> </descrip> <sect1>Email_Test<label id="email-test-class"> <p> ÀÌ Å¬·¡½º´Â <tt>Email</tt> Ŭ·¡½º¸¦ ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö¿¡ °üÇÑ ¿¹Á¦¿Í <tt>Java CGI</tt> ÆÐÅ°Áö°¡ Á¤È®ÇÏ°Ô µ¿ÀÛÇÏ´ÂÁö È®ÀÎÇϴµ¥ »ç¿ëµÇ´Â Å×½ºÆ® ÇÁ·Î±×·¥ ¿¹Á¦°¡ µé¾îÀÖ´Ù. <sect2>¸â¹ö ¿ä¾à <p> <code> main() // ÇÁ·Î±×·¥ main(). </code> <sect2>ÂüÁ¶ <p> <tt>Email</tt>. <sect2>main() <p> <descrip> <tag/¸ñÀû/ <tt>main()</tt> ¸Þ¼Òµå¸¦ Á¦°øÇÑ´Ù. <tag/¹®¹ý/ <tt>public static void main( String argv[] )</tt> <tag/¼³¸í/ »ç¿ë °¡´ÉÇÑ name/value ½Ö°ú ÇöÀç ±× ½ÖÀÇ ¸®½ºÆ®¸¦ ¸®ÅÏÇÏ´Â CGI ÇÁ·Î±×·¥¿¡ ´ëÇÑ ÁøÀÔÁ¡(entry point)ÀÌ´Ù. <tt>Email</tt> º¯¼ö¿¡ ¸í½ÃµÈ ÁÖ¼Ò¿¡µµ ÀÌ ¸®½ºÆ®¸¦ º¸³½´Ù. <tag>ÆĶó¸ÞÅÍ <descrip> <tag/argv[]/ <tt>java.cgi</tt> ½ºÅ©¸³Æ®¿¡ ÀÇÇØ ÇÁ·Î±×·¥¿¡ Àü´ÞµÇ´Â ÀÎÀÚµé. ÇöÀç »ç¿ë ¾ÈÇÔ. </descrip> </descrip> <sect1>HTML<label id="html-class"> <p> <sect2>Ŭ·¡½º ¹®¹ý <p> <tt>public class HTML extends Text</tt> <sect2>Ŭ·¡½º ¼³¸í <p> ¸Þ½ÃÁö´Â <tt>Text</tt>Ŭ·¡½ºÀÇ <tt>add* () </tt>¸Þ¼Òµå¿Í ÀÌ Å¬·¡½º¿¡ ÀÇÇØ Ãß°¡µÈ HTML°ü·Ã(HTML-specific) ¸Þ¼Òµå·Î ¸¸µé¾îÁø´Ù. ¿Ï¼ºµÇ¸é, ¸Þ½ÃÁö´Â ¸ñÀûÁö·Î º¸³»Áø´Ù. ÇöÀç, ¸®½ºÆ®¸¦ ¸¸µå´Â ¸Þ¼ÒµåµéÀÌ Á¤È®ÇÑ ¼ø¼­·Î »ç¿ëµÇ¾ú´ÂÁö È®½ÅÇÒ ¿¡·¯ üŷÀ» ÇÏÁö ¾Ê¾Æ¼­, ÇÁ·Î±×·¡¸Ó°¡ HTML ¹®¹ýÀ» ¾î±âÁö ¾Êµµ·Ï ÁÖÀÇÇØ¾ß ÇÑ´Ù. ÀÌ Å¬·¡½º´Â "Orbits.net"ÆÐÅ°Áö¿¡ µé¾îÀÖ´Ù. <sect2>¸â¹ö ¿ä¾à <p> <code> HTML() // »ý¼ºÀÚ. author() // ¹®¼­ ÀúÀÚÀÇ À̸§À» Á¤ÇÑ´Ù. definitionList() // Á¤ÀÇ ¸®½ºÆ®¸¦ ½ÃÀÛÇÑ´Ù. definitionListTerm() // Á¤ÀÇ ¸®½ºÆ®¿¡ ¿ë¾î(term)¸¦ Ãß°¡ÇÑ´Ù. endList() // ¸®½ºÆ®¸¦ ³¡¸Î´Â´Ù. listItem() // ¸®½ºÆ®¿¡ ¿£Æ®¸®¸¦ Ãß°¡ÇÑ´Ù. send() // HTML¸Þ½ÃÁö¸¦ º¸³½´Ù. title() // ¹®¼­ Á¦¸ñ¿ë ÅؽºÅ©¸¦ Á¤ÇÑ´Ù. </code> <sect2>ÂüÁ¶ <p> <tt>HTML_Test, Text</tt>. <sect2>HTML() <p> <descrip> <tag/¸ñÀû/ HTML¸Þ½ÃÁö¸¦ ´ãÀ» °´Ã¼¸¦ »ý¼ºÇÑ´Ù. <tag/¹®¹ý/ <tt>public HTML()</tt> <tag/¼³¸í/ HTML ¸Þ¼Òµå¿¡ ÀÇÇؼ­ ¿Ï¼ºµÉ ºó ¸Þ½ÃÁö¸¦ ¸¸µç´Ù. <tag/ÂüÁ¶/ <tt>Text</tt>. </descrip> <sect2>author() <p> <descrip> <tag/¸ñÀû/¹®Àú ÀúÀÚÀÇ À̸§À» Á¤ÇÑ´Ù. <tag/Syntax/ <tt>public void author ( String author )</tt> <tag/¼³¸í/¹®¼­ÀÇ ÀúÀÚ¸¦ <tt>author</tt>·Î Á¤ÇÑ´Ù. <tag>ÆĶó¸ÞÅÍ/ <descrip> <tag/author/ ¸Þ½ÃÁöÀÇ ÀúÀÚ·Î »ç¿ëµÉ ÅؽºÆ®. </descrip> <tag/ÂüÁ¶/ <tt>title()</tt>. </descrip> <sect2>definitionList() <p> <descrip> <tag/¸ñÀû/ Á¤ÀÇ ¸®½ºÆ®¸¦ ½ÃÀÛÇÑ´Ù. <tag/¹®¹ý/ <tt>public void definitionList ()</tt> <tag/¼³¸í/ Á¤ÀÇ ¸®½ºÆ®¸¦ ½ÃÀÛÇÑ´Ù. <em>Á¤ÀÇ</em> ¸®½ºÆ®´Â ¸®½ºÆ® ¾ÈÀÇ °¢°¢ÀÇ ¿£Æ®¸®°¡ ±× <em>¿ë¾î(term)</em>ÀÇ Á¤ÀÇ <em>ÅؽºÆ®(text)</em> ´ÙÀ½¿¡ ³ª¿À´Â Ç׸ñÀÎ ¸®½ºÆ®ÀÌ´Ù. Á¤ÀÇ ¸®½ºÆ®ÀÇ ½ÃÀÛÀº (ÃÖ¼ÒÇÑ) ÇϳªÀÇ ¿ë¾î/ÅؽºÆ® ½ÖÀ» »ý¼ºÇÏ°í <tt>endList()</tt> ¸Þ¼Òµå°¡ Çѹø È£ÃâµÈ ÀÌÈÄ À̾î¾ß ÇÑ´Ù. <em>ÇöÀç ¸®½ºÆ®µéÀº ³×½ºÆ®(nest)µÉ ¼ö ¾øÀ½À» ÁÖÀÇÇ϶ó.</em> <tag/ÂüÁ¶/ <tt>definitionListTerm()</tt>, <tt>endList()</tt>, <tt>listItem()</tt>. </descrip> <sect2>definitionListTerm() <p> <descrip> <tag/¸ñÀû/ Á¤ÀÇ ¸®½ºÆ®¿¡ ÇϳªÀÇ ¿ë¾î¸¦ Ãß°¡ÇÑ´Ù. <tag/¹®¹ý/ <tt>public void definitionListTerm ()</tt> <tag/¼³¸í/ Á¤ÀÇ ¸®½ºÆ®¿¡ ÇϳªÀÇ ¿ë¾î¸¦ Ãß°¡ÇÑ´Ù. Çö ¸®½ºÆ® ¿£Æ®¸®ÀÇ ¿ë¾î ºÎºÐÀÇ ÅؽºÆ®´Â ÀÌ ¸Þ¼Òµå°¡ È£ÃâµÇ°í ÇØ´çµÇ´Â<tt> listItem</tt>¸Þ¼Òµå°¡ È£ÃâµÇ±â Àü¿¡ ¸Þ½ÃÁö¿¡ µ¡ºÙ¿©Á®¾ß ÇÑ´Ù. <tag/ÂüÁ¶/ <tt>definitionList()</tt>, <tt>listItem()</tt>. </descrip> <sect2>endList() <p> <descrip> <tag/¸ñÀû/ ¸®½ºÆ®¸¦ ³¡¸Î´Â´Ù. <tag/¹®¹ý/ <tt>public void endList ()</tt> <tag/¼³¸í/ ¸®½ºÆ®¸¦ ³¡¸Î´Â´Ù. ÀÌ ¸Þ¼Òµå´Â ÇÑ ¸®½ºÆ®¸¦ ³¡³½´Ù. <em>ÇöÀç ¸®½ºÆ®µéÀº ³×½ºÆ®µÉ ¼ö ¾øÀ½À» ÁÖ¸ñÇ϶ó.</em> <tag/ÂüÁ¶/ <tt>definitionList()</tt>. </descrip> <sect2>listItem() <p> <descrip> <tag/¸ñÀû/¸®½ºÆ®¿¡ ¿£Æ®¸® Çϳª¸¦ Ãß°¡ÇÑ´Ù. <tag/¹®¹ý/ <tt>public void listItem ()</tt> <tag// <tt>public void listItem ( String item )</tt> <tag// <tt>public boolean listItem ( String term, String item )</tt> <tag/¼³¸í/ ¸®½ºÆ®¿¡ ¿£Æ®¸® Çϳª¸¦ Ãß°¡ÇÑ´Ù. ¸¸¾à ù¹ø° Æû(form)ÀÌ »ç¿ëµÈ´Ù¸é, Çö ¸®½ºÆ® ¾ÆÀÌÅÛÀÇ ÅؽºÆ®´Â ÀÌ ¸Þ¼Òµå°¡ È£ÃâµÈ ´ÙÀ½¿¡ ±×¸®°í ´Ù¸¥ ¸®½ºÆ® ¸Þ¼Òµå°¡ È£ÃâµÇ±â Àü¿¡ ¸Þ½ÃÁö¿¡ ºÙ¿©Á®¾ß ÇÑ´Ù. µÎ¹ø°¿Í ¼¼¹ø° Æû¿¡¼­´Â, <tt>item</tt> ÅؽºÆ®´Â ÀÌ ¸Þ½ÃÁö¿¡ µ¡ºÙ¿©Áö´Â ´ë½Å¿¡(ȤÀº Ãß°¡·Î) ¸Þ¼ÒµåÀÇ ÆĶó¸ÞÅÍ·Î½á ¸í½ÃµÈ´Ù.¼¼¹ø°´Â Á¤ÀÇ ¸®½ºÆ®¿¡ °ü·ÃµÇ°í(specific), ¿ë¾î¿Í ¸®½ºÆ® ¿£Æ®¸®ÀÇ Á¤ÀǸ¦ Á¦°øÇÑ´Ù. <tag/ÆĶó¸ÞÅÍ/ <descrip> <tag/item/ ¸®½ºÆ® ¿£Æ®¸®ÀÇ ÅؽºÆ®. <tag/term/ Á¤ÀÇ ¸®½ºÆ® ¿£Æ®¸®ÀÇ ¿ë¾î ºÎºÐÀÇ ÅؽºÆ®. </descrip> <tag/ÂüÁ¶/ <tt>definitionList()</tt>, <tt>definitionListTerm()</tt>, <tt>endList()</tt>. </descrip> <sect2>send() <p> <descrip> <tag/¸ñÀû/ HTML¸Þ½ÃÁö¸¦ º¸³½´Ù. <tag/¹®¹ý/ <tt>public void send ()</tt> <tag/¼³¸í/ HTML ¸Þ½ÃÁö¸¦ º¸³½´Ù. </descrip> <sect2>title() <p> <descrip> <tag/¸ñÀû/ ¹®¼­ Á¦¸ñÀÇ ÅؽºÆ®¸¦ Á¤ÇÑ´Ù. <tag/¹®¹ý/ <tt>public void title ( String title )</tt> <tag/¼³¸í/ ¹®¼­ Á¦¸ñÀÇ ÅؽºÆ®¸¦ Á¤ÇÑ´Ù. <tag/ÆĶó¸ÞÅÍ/ <descrip> <tag/title/ ¸Þ½ÃÁö Á¦¸ñÀÇ ÅؽºÆ®. </descrip> <tag/ÂüÁ¶/ <tt>author()</tt>. </descrip> <sect1>HTML_Test<label id="html-test-class"> <p> ÀÌ Å¬·¡½º¿¡´Â <tt>HTML</tt>Ŭ·¡½º¸¦ ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö¿¡ °üÇÑ ¿¹Á¦¿Í <em>Java CGI</em> ÆÐÅ°Áö°¡ Á¤È®ÇÏ°Ô µ¿ÀÛÇÏ´ÂÁö¸¦ È®ÀÎÇϴµ¥ »ç¿ëµÇ´Â Å×½ºÆ® ÇÁ·Î±×·¥ÀÌ µé¾îÀÖ´Ù. <sect2>¸â¹ö ¿ä¾à <p> <code> main() // ÇÁ·Î±×·¥ main(). </code> <sect2>ÂüÁ¶ <p> <tt>HTML</tt>. <sect2>main() <p> <descrip> <tag/¸ñÀû/ <tt>main()</tt> ¸Þ¼Òµå¸¦ Á¦°øÇÑ´Ù. <tag/¹®¹ý/ <tt>public static void main( String argv[] )</tt> <tag/¼³¸í/ HTML¹®¼­¿¡¼­ Á¤ÀÇ ¸®½ºÆ® ¿ø¼Ò¿¡¼­ °¢°¢ÀÇ name/valueÀÇ ½ÖÀ» º¸ÀÌ¸ç »ç¿ë °¡´ÉÇÑ name/valueÀÇ ½ÖÀÇ ¸®½ºÆ®¸¦ ¸®ÅÏÇÏ´Â CGIÇÁ·Î±×·¥¿¡ ´ëÇÑ ÁøÀÔÁ¡ÀÌ´Ù. <tag>ÆĶó¸ÞÅÍ <descrip> <tag/argv[]/ <tt>java.cgi</tt>½ºÅ©¸³Æ®¿¡ ÀÇÇØ ÇÁ·Î±×·¥¿¡ Àü´ÞµÇ´Â ÀÎÀÚµé. ÇöÀç »ç¿ë ¾ÈÇÔ. </descrip> </descrip> <sect1>Text<label id="text-class"> <p> <sect2>Ŭ·¡½º ¹®¹ý <p> <tt>public abstract class Text</tt> <sect2>Ŭ·¡½º ¼³¸í <p> ÀÌ Å¬·¡½º´Â <tt>Email</tt> °ú <tt>HTML</tt> Ŭ·¡½ºÀÇ ¼öÆÛŬ·¡½ºÀÌ´Ù. ¸Þ½ÃÁö´Â ÀÌ Å¬·¡½º¾ÈÀÇ ¸Þ¼Òµå¿¡ ÀÇÇØ ¸¸µé¾îÁö°í ¼­ºêŬ·¡½ºÀÇ ¸Þ¼Òµå·Î½á ¿Ï¼ºµÇ¸ç(completed) Çü½ÄÈ­(formatted)µÈ´Ù. ÀÌ Å¬·¡½º´Â "Orbits.text"ÆÐÅ°Áö ¾È¿¡ µé¾îÀÖ´Ù. <sect2>¸â¹ö ¿ä¾à <p> <code> Text() // »ý¼ºÀÚ. add() // ÀÌ °´Ã¼¿¡ ÅؽºÆ®¸¦ Ãß°¡ÇÑ´Ù. addLineBreak() // °èÇà Ãß°¡. addParagraph() // ´Ü¶ô°èÇà Ãß°¡. </code> <sect2>Âü°í <p> <tt>Email</tt>, <tt>HTML</tt>. <sect2>add() <p> <descrip> <tag/¸ñÀû/ ¾ÆÀÌÅÛ¿¡ ÅؽºÆ®¸¦ Ãß°¡ÇÑ´Ù. <tag/¹®¹ý/ <tt>public void add ( char addition )</tt> <tag// <tt>public void add ( String addition )</tt> <tag// <tt>public void add ( StringBuffer addition )</tt> <tag/¼³¸í/ ÅؽºÆ® ¾ÆÀÌÅÛÀÇ ³»¿ë¿¡ <tt>addition</tt>¸¦ Ãß°¡ÇÑ´Ù. <tag/ÆĶó¸ÞÅÍ/ <descrip> <tag/addition/ ÅؽºÆ® ¾ÆÀÌÅÛ¿¡ Ãß°¡µÉ ÅؽºÆ®. </descrip> <tag/ÂüÁ¶/ <tt>addLineBreak()</tt>, <tt>addParagraph()</tt>. </descrip> <sect2>addLineBreak() <p> <descrip> <tag/¸ñÀû/ Çö ½ÃÁ¡¿¡¼­ ÅؽºÆ®¿¡ °èÇàÀ» ÇÑ´Ù. <tag/¹®¹ý/ <tt>public void addLineBreak ()</tt> <tag/¼³¸í/ Çö ½ÃÁ¡¿¡¼­ ÅؽºÆ®¿¡ °èÇàÀ» ÇÑ´Ù. <tag/ÂüÁ¶/ <tt>add()</tt>, <tt>addParagraph()</tt>. </descrip> <sect2>addParagraph() <p> <descrip> <tag/¸ñÀû/ »õ·Î¿î ´Ü¶ôÀ» ½ÃÀÛÇÑ´Ù. <tag/¹®¹ý/ <tt>public void add ()</tt> <tag/¼³¸í/ ÅؽºÆ® È帧ÀÇ Çö ½ÃÁ¡¿¡¼­ »õ ´Ü¶ôÀ» ½ÃÀÛÇÑ´Ù. <tag/ÂüÁ¶/ <tt>add()</tt>, <tt>addLineBreak()</tt>. </descrip> <sect>ÇâÈÄ °èȹ <p> <itemize> <item> Email Ŭ·¡½º¿¡ Ãß°¡: <descrip> <tag/Email( int capacity )/ ¸Þ½ÃÁö°¡ ÇÒ´çµÇ±â À§Çؼ­ ¾ó¸¶³ª ¸¹Àº °ø°£ÀÌ ÇÊ¿äÇÑÁö ¾Ë°í ÀÖÀ» ¶§ »ç¿ë. <tag/sendTo( String [] address )/ ÀüÀÚ¸ÞÀÏ ¸Þ½ÃÁö¿¡ ÁÖ(primary) ¸ñÀûÁö ¸®½ºÆ® Ãß°¡. <tag/sendCc( String address )/ ÀüÀÚ¸ÞÀÏ ¸Þ½ÃÁö¿¡ Ä«º»Ä«ÇÇ(º¹»çº») ¸ñÀûÁö Ãß°¡. <tag/sendCc( String [] address )/ ÀüÀÚ¸ÞÀÏ ¸Þ½ÃÁö¿¡ Ä«º»Ä«ÇÇ(º¹»çº») ¸ñÀûÁö Ãß°¡. <tag/sendBcc( String address )/ ÀüÀÚ¸ÞÀÏ ¸Þ½ÃÁö¿¡ ºí¶óÀεå Ä«º» Ä«ÇÇ(ÀÍ¸í º¹»çº») ¸ñÀûÁö Ãß°¡. <tag/sendBcc( String [] address )/ ÀüÀÚ¸ÞÀÏ ¸Þ½ÃÁö¿¡ ºí¶óÀεå Ä«º» Ä«ÇÇ(ÀÍ¸í º¹»çº») ¸ñÀûÁö Ãß°¡. </descrip> </item> <item> HTML Ŭ·¡½º¿¡ Ãß°¡: <descrip> <tag/HTML( int capacity )/ ¸Þ½ÃÁö°¡ ÇÒ´çµÇ±â À§Çؼ­ ¾ó¸¶³ª ¸¹Àº °ø°£ÀÌ ÇÊ¿äÇÑÁö ¾Ë ¶§ »ç¿ë. <tag/public void unorderedList()/ ¹«Á¤·Ä ¸®½ºÆ®¸¦ ½ÃÀÛ. <tag/public void orderedList()/ ¹«Á¤·Ä ¸®¸£Æ®¸¦ ½ÃÀÛ. <tag/public void directoryList()/ ¸ñ·Ï ¸®½ºÆ®¸¦ ½ÃÀÛ. <tag/public void menuList()/ ¸Þ´º ¸®½ºÆ®¸¦ ½ÃÀÛ. <tag/void anchor( String anchorName )/ anchor¸¦ ¸í½Ã. <tag/void link( String url, String text )/ ¸µÅ©¸¦ ¸í½Ã. <tag/void applet( String url, String altText )/ ¾ÖÇø´ ¸µÅ©¸¦ ¸í½Ã. </descrip> </item> <item> HTML¸®½ºÆ®°¡ ³×½ºÆ® µÇ°Ô ÇÑ´Ù. </item> <item> HTML ¸®½ºÆ® Æ÷¸ËÆÃ(formatting) ÄÚµåÀÇ ¿Ã¹Ù¸¥ Á¤·ÄÀ» ¼öÇàÇÒ ¿¡·¯ üŷ Äڵ带 Ãß°¡ÇÑ´Ù. </item> <item> <tt>Makefile</tt>¿¡¼­ ȯ°æ µ¥ÀÌŸ ÆÄÀÏÀÇ À§Ä¡¸¦ Á¶Á¤ÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. </item> <item> µ¥ÀÌŸ Àü¼ÛÀÎ GET¸Þ¼Òµå¸¦ »ç¿ëÇÒ ¶§ ¸®½ºÆ®¿¡¼­ ³ªÅ¸³ª´Â ºó name/value ½ÖÀ» ¾ø¾Ø´Ù. </item> <item> °è¼ÓÇؼ­ º¯¼ö À̸§À» Á¦°øÇÒ java.util.Enumeration ÀÎÅÍÆäÀ̽ºÀÇ CGI·ÎÀÇ ±¸ÇöÀ» »ý°¢Áß. </item> <item> ÀÌ ÆÐÅ°Áö¿¡ ÀÖ´Â ¸ðµç ¸Þ¼Òµå¸¦ »ç¿ëÇÏ´Â,<tt> Test</tt> Ŭ·¡½º¸¦ Ãß°¡ÇÑ´Ù. </item> <item> µð¹ö±ë ¸ñÀûÀ¸·Î Á¡ÁøÀûÀÎ Å×½ºÆ®¸¦ Çϱâ À§ÇØ <tt>CGI_Test</tt>, <tt>Email_Test</tt> ¿Í <tt>HTML_Test</tt> ¼­·Î°¡ ¾î¶»°Ô ºôµå µÇ´ÂÁö ¹®¼­È­ÇÑ´Ù. </item> <item> ¾î¶»°Ô Test°¡ ÀÌ ÆÐÅ°Áö¿¡¼­ °¡´ÉÇÑ ¸ðµç ±â´ÉÀ» ÀÌ¿ëÇÏ´ÂÁö ¹®¼­È­ÇÑ´Ù. </item> </itemize> <sect>º¯È­ <p> <sect1> 0.4¿¡¼­ 0.5°£ÀÇ º¯È­ <p> <itemize> <item> ¸¶Áö¸· ÆÇÀ» ¹Ý¿µÇÏ´Â º¯È­µÈ ¹®¼­È­¿Í ÁÖ¼® </item> </itemize> <sect1>0.3¿¡¼­ 0.4°£ÀÇ º¯È­ <p> <itemize> <item> ÃÖ¼ÒÇÑÀÇ ±â´ÉÀ» Á¦°øÇÏ´Â HTML Ŭ·¡½ºÀÇ °ñÀÚ ¹èÆ÷. </item> <item> HTML_Test Ŭ·¡½º¿Í javahtmltest.html-dist ÀÛ¼º. </item> <item> Á¤ÀÇ ¸®½ºÆ®¸¦ ´Ù·ç±â À§ÇÑ HTML ¸Þ¼Òµå¸¦ Ãß°¡. </item> </itemize> <sect1>0.2¿¡¼­ 0.3°£ÀÇ º¯È­ <p> <itemize> <item> Text ¿Í Email Ŭ·¡½º¸¦ Ãß°¡. HTML Ŭ·¡½ºµµ Ãß°¡µÇ¾úÀ¸³ª, ÀÌ ½Ã±â¿¡´Â ½ÃÀÛ ´Ü°è Á¤µµ. </item> <item> ÆÐÅ°Áö¿¡ ´Ù¾çÇÑ Å¬·¡½º¸¦ ³ÖÀ½. ÁÖµÈ Å¬·¡½º´Â <tt>Orbits.net.*</tt>¿¡ µé¾î ÀÖÀ¸¸ç, Áö¿ø Ŭ·¡½º<tt> Text</tt>´Â <tt>Orbits.text.Text</tt>¾È¿¡ ÀÖÀ½. </item> <item> <tt>CGItest</tt> °¡ CGI_Test ·Î ¹Ù²ñ. </item> <item> <tt>Email_Test</tt> Ŭ·¡½º Ãß°¡. </item> </itemize> <sect1>0.1¿¡¼­ 0.2°£ÀÇ º¯È­ <p> <itemize> <item> ȯ°æº¯¼ö¸¦ ÀÚ¹Ù ÀÎÅÍÇÁ¸®ÅÍÀÇ Ä¿¸àµå ¶óÀÎ ¾È¿¡ ³Ö´Â ´ë½Å¿¡ Àӽà ÆÄÀÏ¿¡ ³õÀÓ.<tt> CGI</tt> Ŭ·¡½º¿Í <tt>java.cgi</tt>°¡ ¼öÁ¤µÇ¾úÀ½. </item> <item> <tt>Javacgitest.html</tt> ¹®¼­°¡ ¹èÆ÷ÆÇ¿¡ Æ÷ÇÔµÊ. </item> <item> ÀνºÅç °úÁ¤ÀÇ <tt>make</tt>¿¡ ÀÇÇØ ¼öÁ¤µÈ ÅؽºÆ® ÆÄÀÏ¿¡<em> -dist</em>·Î ³¡³ª´Â À̸§À» ºÙÀÓ. </item> </itemize> </article>