Java CGI HOWTO by David H. Silber dhs@orbits.com 1996³â 11¿ù 18ÀÏ ¹öÀü 0.4 ¹ø¿ª : ¹ÚÁÖÈñ ( jhpark91@cse.hanyang.ac.kr ) ÀÌ HOWTO ¹®¼´Â ¼¹ö¿¡¼ ÀÚ¹Ù·Î ÀÛ¼ºµÈ CGI ÇÁ·Î±×·¥À» ¾î¶»°Ô ¼Â¾÷ÇÏ¸ç ¶Ç CGI ÇÁ·Î±×·¥À» ÀÛ¼ºÇϱâÀ§ÇØ ¾î¶»°Ô ÀÚ¹Ù¸¦ »ç¿ëÇÏ´ÂÁö¸¦ ¼³¸íÇÑ´Ù. HOWTO ¹®¼´Â ¸®´ª½º ¿î¿µÃ¼Á¦¸¦ ¸ñÀûÀ¸·Î ÀÛ¼ºµÇÁö¸¸, ÀÌ ¹®¼´Â ƯÁ¤ÇÑ À¯´Ð½º ¹öÀü¿¡ »ó°ü ¾øÀÌ Àû¿ëµÈ´Ù. 1. ¼Ò°³ ÀÚ¹Ù°¡ µðÀÚÀÎµÈ ¹æ½Ä ¶§¹®¿¡ ÇÁ·Î±×·¡¸Ó´Â ½Ã½ºÅÛÀÇ È¯°æ º¯¼öµéÀ» ½±°Ô ¾×¼¼½ºÇÒ ¼ö ¾ø´Ù. Java Development Kit (JDK)ÀÌ Á¦ÀÛµÈ ¹æ½Ä ¶§¹®¿¡, ÇÁ·Î±×·¥À» È£ÃâÇϱâ À§Çؼ´Â ¿©·¯ °³ÀÇ ÅäÅ«À» ÀÌ¿ëÇØ¾ß Çϸç, À̰͵µ Ç¥ÁØ HTMLÆû/CGI ÀÛµ¿¹æ½Ä°ú Àß ¸ÂÁö ¾Ê´Â´Ù. ÀÌ·¯ÇÑ ÇѰ迡 ¸î °¡Áö ¹æ¹ýÀÌ ÀÖÀ¸¸ç, º»ÀÎÀÌ ±× Áß Çϳª¸¦ ±¸ÇöÇÏ¿´´Ù. ÀÚ¼¼ÇÑ °ÍÀº µÚ¸¦ ´õ Àо¶ó. 1.1. »çÀü Áö½Ä HTML°ú CGI °³³ä¿¡ °üÇÑ ÀϹÝÀû Áö½Ä°ú ÃÖ¼ÒÇÑ HTTP¼¹ö¿¡ °üÇÏ¿© ±âº»ÀûÀÎ Áö½ÄÀº ¾Ë°íÀÖ´Ù°í °¡Á¤ÇÑ´Ù. ¹°·Ð ÀÚ¹Ù·Î ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â ¹ýÀ» ¾Ë¾Æ¾ß ÇÏ¸ç ±×·¸Áö ¸øÇϸé ÀÌ ¹®¼´Â ÀÌÇØÇϱâ Èûµé´Ù. 1.2 º» ¹®¼¿¡ °üÇÏ¿© º» ¹®¼ÀÇ ÃÖ±Ù ÆÇÀº http://www.orbits.com/software/Java_CGI.html ¿¡¼ ÀÐÀ» ¼ö ÀÖ´Ù. 1.3 ÆÐŰÁö ¿©±â ÀûÈù ÆÐŰÁö´Â ftp://ftp.orbits.com/pub/software/java_cgi-0.4.tgz ¿¡¼ anonymous FTP·Î ¾òÀ» ¼ö ÀÖ´Ù. ÀÌ ÆÐŰÁö ¹èÆ÷ÆÇ¿¡´Â º» ¹®¼ÀÇ SGML ¼Ò½ºµµ µé¾îÀÖ´Ù. ÀÌ ÆÐŰÁö´Â GNU Library General Public LicenseÁ¶Ç׿¡ ÀǰÅÇØ ¹èÆ÷µÈ´Ù. º» ¹®¼´Â ¸®´ª½º HOWTO ÆÇ±Ç ÁÖÀÇ»çÇ׿¡ ÀǰÅÇØ¼ ¹èÆ÷ µÈ´Ù. ¸¸¾à º» ¼ÒÇÁÆ®¿þ¾î¸¦ »ç¿ë ÇÑ´Ù¸é, ´Ù¸¥ »ç¶÷µéÀÌ ÀÌ Java CGIŬ·¡½º¸¦ ¹ß°ßÇÒ ¼ö ÀÖ°Ô http://www.orbits.com/software/Java_CGI.html ÀÇ ·¹ÆÛ·±½º¸¦ ´Þ±â ¹Ù¶õ´Ù. 1.4 ¼±Àü ÇѸ¶µð ÀÌ ¹®¼´Â Stellar Orbits Technology Services¿¡ ÀÇÇØ Á¦°øµÇ¾ú´Ù. (¿ì¸®°¡ ÇÏ´Â °ÍÀ» º¸°í ½Í´Ù¸é http://www.orbits.com/ ¸¦ µÑ·¯º¸¶ó) 2. ÀÚ¹Ù CGIÇÁ·Î±×·¥À» ½ÇÇàÇϱâ À§ÇØ ¼¹ö ¼ÂÆÃÇϱâ (¼³¸í°ú ÇÔ²²) ÀÌ ºÎºÐÀº ¿©·¯ºÐÀÇ ¼³Ä¡ ÀÛ¾÷ÀÌ ¾î¶² ¿µÇâÀ» ³¢Ä¡´ÂÁö ¿©·¯ºÐ ÀÚ½ÅÀÌ ¾Ë¾Æº¸°Ô Çϱâ À§ÇØ Ç³ºÎÇÑ ¼³¸í°ú ÇÔ²² º»ÀÎÀÇ Java CGIÆÐŰÁö¸¦ ÀνºÅç ÇÒ °ÍÀÌ´Ù.¸¸¾à ÀÌ ÇÁ·Î±×·¥À» ÀνºÅ縸Çϰí ÀÚÁú±¸·¹ÇÑ °ÍÀº ¾Ë±â ½È´Ù¸é "Java CGI ÇÁ·Î±×·¥µéÀ» ½ÇÇàÇϱâ À§ÇØ ¼¹ö ¼Â¾÷Çϱâ" ·Î ³Ñ¾î°¡¶ó. 2.1. ½Ã½ºÅÛ ¿ä±¸»çÇ× ÀÌ ¼ÒÇÁÆ®¿þ¾î´Â Java Development KitÀÌ ÀνºÅçµÈ ´ëºÎºÐÀÇ À¯´Ð½º ÇüÅÂÀÇ À¥ ¼¹ö¿¡¼ ÀÛµ¿ÇÑ´Ù. º»ÀÎÀº apache¸¦ HTTPµ¥¸óÀ¸·Î ½ÇÇà½ÃŰ¸ç µ¥ºñ¾È ¸®´ª½º¸¦ »ç¿ëÇϰí ÀÖ´Ù. ¸¸¾à ¿©·¯ºÐÀÇ ¼¹ö¿¡¼ ÀÛµ¿ÇÏÁö ¾ÊÀ¸¸é dhs@orbits.comÀ¸·Î ¿¬¶ô ÇØÁֱ⠹ٶõ´Ù. ºÒÇàÈ÷µµ ÀÚ¹Ù ·±Å¸ÀÓ ÀÎÅÍÇÁ¸®ÅÍ´Â ¸Þ¸ð¸®¸¦ ¸¹ÀÌ ÇÊ¿äÇÑ °Í ó·³ º¸ÀδÙ. Java CGI ÇÁ·Î±×·¥µéÀ» ¿©·¯ ¹ø ½ÇÇà ÇÑ´Ù¸é ¸î ¸Þ°¡¹ÙÀÌÆ®ÀÇ ·¥À» ¼¹ö¿¡ ´õ ±ò¾Æ¾ß µÉ °ÍÀÌ´Ù. 2.2. Java CGI ¾Öµå-¿Â ¼ÒÇÁÆ®¿þ¾î ÀÌ ¹®¼¿¡¼ ¼³¸íÇÏ·Á ÇÏ´Â º»ÀÎÀÌ ÀÛ¼ºÇÑ ¼ÒÇÁÆ®¿þ¾î´Â Java CGI ¶ó°í ÇÑ´Ù. ftp://www.orbits.com/pub/software/java_cgi-0.4.tgz ¿¡¼ ¾òÀ» ¼ö ÀÖ´Ù. (¹öÀüÀÇ ¼ýÀÚ´Â ¹Ù²î¾úÀ»Áöµµ ¸ð¸¥´Ù.) 2.3 ¼Ò½º ¾ÐÃà Ç®±â ÀÌ ÆÐŰÁö¸¦ Ç®¾îµÑ Àû´çÇÑ µð·ºÅ丮¸¦ ã¾Æ¶ó. ( ´Ù¸¥ ÆÐŰÁö¸¦ Ç®¾î µÐ ÀÏÁ¤ÇÑ °÷ÀÌ ¾ø´Ù¸é, /usr/local/src ¸¦ »ç¿ëÇ϶ó.) ´ÙÀ½ÀÇ ¸í·ÉÀ¸·Î ¹èÆ÷ÆÇÀ» Ǭ´Ù. gzip -dc java_cgi-0.4.tgz | tar -xvf - ÀÌ ¸í·ÉÀÌjava_cgi-0.4¶ó´Â µð·ºÅ丮¸¦ »ý¼ºÇÒ °ÍÀÌ´Ù. °Å±â¿¡ ÀÌ ´ÙÀ½ ´Ü°èºÎÅÍ Âü°íÇÒ ÆÄÀÏÀÌ ÀÖÀ» °ÍÀÌ´Ù. (¹öÀüÀÇ ¼ýÀÚ°¡ ¹Ù²î¾ú´Ù¸é, Áö±ÝºÎÅÍ´Â ±× ¹èÆ÷ÆÇÀÇ ¼³¸íÀ» Âü°íÇ϶ó) 2.4 ¿©·¯ºÐÀÇ Áö¿ª ÆÐ½º(Local Path)¿¡ °üÇÑ ¹æÄ§À» Á¤Ç϶ó Java CGIÇÁ·Î±×·¥µéÀ» ¾îµð¿¡ µÑÁö °áÁ¤Ç϶ó. º¸Åë, ¿©·¯ºÐÀÇ cgi-binµð·ºÅ丮¿¡ °°ÀÌ µÑ °ÍÀÌ´Ù. º»ÀÎÀÇ ¾ÆÆÄÄ¡ ¼¹ö´Â cgi-bin µð·ºÅ丮·Î½á /var/web/cgi-binÀ» »ç¿ëÇÏ°Ô ¼³Á¤µÇ¾î ÀÖ¾î¼, Java CGI ÇÁ·Î±×·¥µéÀ» ³Ö¾îµÑ µð·ºÅ丮·Î´Â /var/web/javacgi ¸¦ »ç¿ëÇÑ´Ù. ¿©·¯ºÐÀº ÁöÁ¤µÈ CLASSPATH µð·ºÅ丮¿¡ Java CGI ÇÁ·Î±×·¥µéÀ» ³Ö°í ½ÍÁö ¾ÊÀ» Áöµµ ¸ð¸¥´Ù. ½Ã½ºÅÛ ¼³Á¤À» ¹Ý¿µÇϱâ À§ÇØ Makefile À» ÆíÁýÇ϶ó. root·Î ·Î±×ÀÎ ÇÑ °ÍÀ» È®ÀÎÇϰí make installÀ» ½ÇÇàÇ϶ó. ÀÌ ¸í·ÉÀÌ ÀÚ¹Ù ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇϰí,java.cgi ¶ó´Â ½ºÅ©¸³Æ®¸¦ ½Ã½ºÅÛ¿¡ ¸Â°Ô º¯°æÇϰí Àû´çÇÑ °÷¿¡ ±× ÇÁ·Î±×·¥µéÀ» ÀνºÅçÇÑ´Ù. Ãß°¡·Î, ÀÌ ¹®¼ÀÇ HTML ¹öÀüÀ̳ª HTMLÅ×½ºÆ® ¹®¼¸¦ ¿øÇÑ´Ù¸é,´ë½Å make all À» ½ÇÇàÇ϶ó. 2.5 ÀνºÅç Å×½ºÆ®Çغ¸±â ¹èÆ÷ÆÇÀ¸·ÎºÎÅÍ ÀνºÅçµÈ °ÍÀº javacgitest.html , javaemailtest.html , javahtmltest.html À̶õ HTML¹®¼µéÀÌ´Ù. ¾Õ¿¡¼ ¾²¿©Áø ±×´ë·Î ¸ðµÎ ÀνºÅç Çß´Ù¸é, 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. ÀÚ¹Ù CGI ÇÁ·Î±×·¥À» ½ÇÇàÇϱâ À§ÇØ ¼¹ö ¼Â¾÷Çϱâ (¿ä¾à) * ftp://www.orbits.com/pub/software/java_cgi-0.4.tgz·ÎºÎÅÍ Java CGI ÆÐŰÁö¸¦ ¹Þ¾Æ¶ó (¹öÀü ¼ýÀÚ´Â ¹Ù²î¾úÀ»Áöµµ ¸ð¸¥´Ù.) * ÀÌ ¹èÆ÷ÆÇÀ» ´ÙÀ½ÀÇ ¸í·É¾î·Î ¾ÐÃàÀ» Ç®¾î¶ó gzip -dc java_cgi-0.4.tgz | tar -xvf - (¸¸¾à ¹öÀüÀÇ ¼ýÀÚ°¡ ¹Ù²î¾ú´Ù¸é, Áö±ÝºÎÅÍ´Â ±× ¹èÆ÷ÆÇ ¾È¿¡ ÀÖ´Â ¼³¸íÀ» µû¸£¶ó) * »õ·ÎÀÌ »ý¼ºµÈ java_cgi-0.4 µð·ºÅ丮¿¡¼ ½Ã½ºÅÛ¿¡ ¸Â°Ô MakefileÀ» ÆíÁýÇ϶ó. * root·Î½á make installÀ» ½ÇÇàÇ϶ó. ÀÌ ¸í·ÉÀÌ ÀÚ¹Ù ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇϰí, ¿©·¯ºÐÀÇ ½Ã½ºÅÛ¿¡ °ü·ÃµÈ Á¤º¸µéÀ» Àû¿ë(apply)½ÃŰ°í ´Ù¾çÇÑ ÆÄÀϵéÀ» ÀνºÅç ÇÑ´Ù. ¸¸¾à HTML·ÎµÈ ÀÌ ¹®¼¿Í HTMLÅ×½ºÆ® ¹®¼¸¦ ¿øÇϸé, ´ë½Å make allÀ» ½ÇÇàÇ϶ó. * ½ÇÇà½Ãų Áغñ°¡ µÇ¾úÀ» °ÍÀÌ´Ù. 4. Java CGI ÇÁ·Î±×·¥ ½ÇÇà½Ã۱â 4.1. CGI ¸ðµ¨¿¡¼ ÀÚ¹Ù ÇÁ·Î±×·¥ÀÇ ½ÇÇàÀ» ¸·´Â Àå¾Ö¹° À¥ ¼¹ö¿¡¼ ÀÚ¹Ù ÇÁ·Î±×·¥À» ½ÇÇà½Ã۴µ¥ ÀÖ¾î¼ µÎ °¡Áö ¹®Á¦Á¡ÀÌ ÀÖ´Ù: 4.1.1. ÀÚ¹Ù ÇÁ·Î±×·¥À» º¸Åë ½ÇÇàÆÄÀÏ Ã³·³ ½ÇÇà½Ãų ¼ö ¾ø´Ù. Ä¿¸àµå ¶óÀλ󿡼 ÀÚ¹Ù ·±Å¸ÀÓ ÀÎÅÍÇÁ¸®Å͸¦ ½ÇÇàÇϰí (ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÉ ¼ö ÀÖµµ·Ï) ÃʱâÈ Å¬·¡½º¸¦ Àû¾îÁÖ¾î¾ß ÇÑ´Ù. HTML ÇüÅ·δ Ŀ¸àµå ¶óÀÎÀ» À¥ ¼¹ö¿¡ º¸³¾ ¼ö ¾ø´Ù. 4.1.2. Àڹٴ ȯ°æ(environment)¿¡ ´ëÇÑ ÀϹÝÀûÀÎ ¾×¼¼½º¸¦ ÇÏÁö ¾Ê´Â´Ù. ÀÚ¹Ù ÇÁ·Î±×·¥ÀÌ ÇÊ¿ä·Î ÇÏ´Â °³°³ÀÇ È¯°æº¯¼ö´Â Á¤È®ÀÌ ³Ñ°ÜÁ®¾ß ÇÑ´Ù. C ¿¡¼ÀÇ getenv() ÇÔ¼ö °°Àº ¸Þ¼Òµå´Â ¾ø´Ù. 4.2. Java CGIÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¶§ÀÇ ¹®Á¦Á¡ ±Øº¹ À§ÀÇ µÎ Àå¾Ö¹°À» ó¸®Çϱâ À§ÇØ, º»ÀÎÀº ÀÚ¹Ù ÀÎÅÍÇÁ¸®ÅÍ¿¡°Ô ÇÊ¿äÇÑ Á¤º¸¸¦ ÁÖ´Â ½© CGIÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ¿´´Ù. 4.2.1. java.cgi ½ºÅ©¸³Æ® ÀÌ ½© ½ºÅ©¸³Æ®´Â ¿©·¯ºÐÀÌ »ç¿ëÇϰíÀÚ ÇÏ´Â Java CGIÇÁ·Î±×·¥°ú HTTPµ¥¸ó »çÀÌÀÇ »óÈ£ÀÛ¿ë(interaction)À» ´ã´çÇϸç, ½ÇÇàµÇ±â¸¦ ¿øÇÏ´Â ÇÁ·Î±×·¥ÀÇ À̸§À» ¼¹ö°¡ Á¦°øÇÏ´Â µ¥ÀÌŸ·ÎºÎÅÍ »Ì¾Æ³»°í, Àӽà ÆÄÀÏ¿¡ ȯ°æ µ¥ÀÌŸ(environment data)¸¦ ¸ðµÎ ¸ðÀº´Ù. ±×¸®°í ¸í·É¾î ÁÙ¿¡ µ¡ºÙ¿©Áø ȯ°æ Á¤º¸ ÆÄÀÏÀÇ À̸§°ú Ä¿¸àµå ¶óÀο¡ µ¡ºÙ¿©Áø ÆÄÀÏ À̸§À» °¡Áö°í ÇÁ·ÎÀÚ¹Ù ·±Å¸ÀÓ ÀÎÅÍÇÁ¸®Å͸¦ ½ÇÇà½ÃŲ´Ù. Java.cgi ½ºÅ©¸³Æ®´Â "¿©·¯ºÐÀÇ Áö¿ª ÆÐ½º(Local Path)¿¡ °üÇÑ ¹æÄ§À» Á¤Ç϶ó "¿¡¼ ±¸¼ºµÇ¾ú°í(configured) ÀνºÅçµÇ¾ú´Ù. 4.2.2. HTML formÀ¸·Î ºÎÅÍ java.cgi È£ÃâÇϱâ Java CGI ÇÁ·Î±×·¥À» »ç¿ëÇÏ´Â ÀúÀÚÀÇ ÆûÀº ´ÙÀ½°ú °°ÀÌ form actionÀ» ¸í½ÃÇÑ´Ù.