ÀÚ¹Ù ±â¹ÝÀÇ À¥ °³¹ß ¼Ò°³

±è¼¼°ï <sehkone@bawi.org>

1999³â 12¿ù 19ÀÏ

°³¹ßÀÚÀÇ °í¹Î

ÇÁ·Î±×·¡¹ÖÀ» °øºÎÇÏ°í ½ÍÀº »ç¶÷À̳ª ÇÁ·ÎÁ§Æ®¸¦ ¸ñÀü¿¡ µÎ°í ÀÖ´Â °³¹ßÀÚ ¸ðµÎ°¡ °í¹ÎÇÏ°í ÀÖ´Â °ÍÀº °ú¿¬ ¾î¶² °³¹ß ¹æ¹ýÀÌ °¡Àå ÀûÇÕÇÒ °ÍÀΰ¡ ÇÏ´Â ¹®Á¦ÀÌ´Ù. Å« ¹üÁַδ ¾î¶² OS¸¦ ÅÃÇÒ °ÍÀΰ¡ÇÏ´Â °Í¿¡¼­ºÎÅÍ ÀÛ°Ô´Â ¾î¶² ¿¡µðÅ͸¦ »ç¿ëÇÒ °ÍÀΰ¡¿¡ À̸£±â±îÁö °í¹Î°Å¸®´Â ³Î·ÁÀÖ´Ù. ¹®Á¦´Â °³¹ß ¹æÇâ ¼±Á¤ °úÁ¤¿¡¼­ÀÇ °í¹ÎÀ¸·Î ±×Ä¡´Â °ÍÀÌ ¾Æ´Ï´Ù. ¿ì¿©°îÀý³¡¿¡ Çѹø °³¹ß ¹æÇâÀÌ ÀâÇô¼­ »ó´ç ±â°£ µ¿¾È °ü·Ã ÀڷḦ ¼öÁý, ÇнÀÇÏ°í °³¹ßÀ» ÁøÇà½ÃÅ°°Ô µÇ¸é ´Ù¸¥ °¡´É¼ºÀ» °í·ÁÇØ º¸±â¶õ ½±Áö ¾Ê´Ù. ¸®´ª½º¿¡ ´ëÇÑ ÀÌÇØ°¡ ¾ø´Â Á÷Àå »ó»ç¶§¹®¿¡ À©µµ¿ìÁî¿¡¼­ °³¹ßÀ» Âø¼öÇØ ³õ°í³ª¼­ Áß°£¿¡ ¸®´ª½º·Î ÀüȯÇÑ´Ù´Â °ÍÀº »ó»óÇϱ⠾î·Á¿î ÀÏÀÌ´Ù. ¿À·§µ¿¾È C/C++À» °øºÎÇÏ¿© CGI ±â¹ýÀ» µæµµÇß´Ù°í Çصµ º¸´Ù Áøº¸µÈ ¹æ¹ýµé·Î ¿©°ÜÁö´Â Server-side Script ¹æ½ÄÀ» »õ·ÎÀÌ °øºÎÇÏ¿© »ç¿ëÇϱâ¶õ ¸¸¸¸Ä¡ ¾ÊÀº ÀÏÀÌ´Ù. µû¶ó¼­, °³¹ß °úÁ¤¿¡¼­ÀÇ ÈÄȸ¸¦ ÃÖ¼ÒÈ­Çϱâ À§Çؼ­¶óµµ, ´õ ³ª¾Æ°¡¼­´Â ÇâÈÄ ÇÁ·ÎÁ§Æ®¿¡µµ À¯¿ëÇÏ°Ô ½á¸ÔÀ» ¼ö ÀÖµµ·Ï Çϱâ À§Çؼ­, Ãʱ⠰³¹ß ¹æÇâ ¼±Á¤¿¡ º¸´Ù Çý¾ÈÀ» °®°í ½ÅÁßÀ» ±âÇØ¾ß ÇÑ´Ù.

±×·¯³ª, ¾î¶² °³¹ß ¹æÇâÀÌ ÇöÀçÀÇ ¿ä°Ç°ú ÇâÈÄÀÇ ºñÀüÀ» µ¿½Ã¿¡ ¸¸Á·½ÃÄÑÁÙ ¼ö ÀÖ´ÂÁö¸¦ ã¾Æ³»´Â °Íµµ ½±Áö ¾Ê´Ù. Áøº¸ÀûÀÎ ¹æ¹ýÀ¸·Î º¸ÀÌ´Â °ÍµéÀº ÁøÇà »óÅ°¡ º£Å¸ Á¤µµÀÎ °æ¿ì°¡ ¸¹°í ½ÉÁö¾î´Â ½ºÆ常 ÀÖ°í °ü·Ã ÅøÀ» ã±â ¾î·Á¿ï ¶§µµ ÀÖ´Ù. ±×·¸´Ù°í, ¸·»ó ¼Õ¿¡ ÀÍÀº °³¹ß ¹æ¹ýÀº ¹º°¡ ÇâÈÄ ºñÀüÀÌ ¾ø¾î º¸ÀÌ°í, º¥Ä¡¸¶Å© Å×½ºÆ®¿¡¼­ »õ·Î¿î °³³ä¿¡ ºñÇØ ¸ø ¹ÌÄ¡±âµµ ÇÑ´Ù. ¿©±âÀú±â °ü·Ã »çÀÌÆ®¸¦ µÚÁ®°¡¸é¼­ ºñ±³Àû ±×·²½ÎÇÑ °³¹ß ¹æ¹ý ¸î °¡Áö¸¦ ¾ÐÃàÇØ ³õ°í ³ª¼­µµ, Á¶¾ðÀ» ÇØ ÁÖ´Â °³¹ßÀÚ¸¶´Ù µüÈ÷ ¾î¶² °³¹ß ¹æ¹ýÀÌ ÃÖ¼±À̶ó´Â ´äÀ» ³» ÁÖÁö ¸ø ÇÑ´Ù. ±×µµ ±×·² °ÍÀÌ, ÀÌ·± Àú·± ¹æ¹ýÀ» ¸ðµÎ ÇнÀÇÏ°í ½ÇÁ¦¿¡¼­ ´Ù Àû¿ë½ÃÄÑ º» °³¹ßÀÚ´Â °ÅÀÇ ¾ø±â ¶§¹®ÀÌ´Ù. ÀÎÅͳݿ¡ ³Î·Á ÀÖ´Â º¥Ä¡¸¶Å© Å×½ºÆ® ÀÚ·áµµ ³»°¡ ¾Ë°í ½ÍÀº °Í¸¸ ²À ºüÁ®ÀÖ±â ÀϾ¥°í, ¾î¼´Ù ³ª¿Í ÀÖ´Â Á¤¸» ±Ã±ÝÇÑ Á¤º¸´Â Å×½ºÆ® ÀڷḶ´Ù ´Ù¸£´Ù. ¼³»ó°¡»óÀ¸·Î Á» ÁÁÀº ÅøÀÌ´Ù ½ÍÀº °ÍÀº ¿­½ÉÈ÷ ´Ù¿î·Îµå ¹ÞÀ¸·Á°í º¸¸é Æ®¶óÀ̾ó ¹öÀüÀÌ°í, »ó¾÷ÀûÀ¸·Î´Â Àý´ë ÀÌ¿ëÇÏÁö ¸»¶õ´Ù.

ÇöÀç±îÁöÀÇ °æÇèµé°ú »ê´õ¹Ì°°Àº °ü·Ã ÀڷḦ ¹ÙÅÁÀ¸·ÎÇÏ¿© ±âµµÇÏ´Â ½ÉÁ¤À¸·Î °³¹ß ¹æÇâÀ» Àâ¾Ò´Ù°í ÇÏÀÚ. ±×°ÍÀ¸·Î ÇØ°áµÇ´Â°¡? ¹®Á¦´Â ÀÌÁ¦ºÎÅÍ ½ÃÀÛÀ̶ó°í º¸¸é µÈ´Ù. µ· ½Î µé°í ¹®Á¦¸¦ ÇØ°áÇÏ·Á°í ÇÏ¸é °£´ÜÇÏ°ÚÁö¸¸, ¿ÀÇ ¼Ò½º Áø¿µÀÇ °³¹ßÀÚµéÀÇ ÀÚÁ¸½ÉÀ¸·Î »ó¾÷¿ëÀ» ¾µ ¼ö Àְڴ°¡. ÀÚÁ¸½ÉÀº µÑ°·Î Ãĵµ µ·ÀÌ ¾ø´Âµ¥ ¾î¼°Ú´Â°¡. ´ÙÇàÈ÷µµ Àý¸Á¿¡¼­ °ÇÁ®ÁÖ´Â °ÍÀº ¾îµò°¡¿¡ ¼û¾îÀÖ´Â ÀÚÀ¯·ÎÀÌ ¹èÆ÷°¡´ÉÇÑ ¼ÒÇÁÆ®¿þ¾î! Áß¿ä ±â´ÉÀ» ºñ±³Àû ´Ù °®Ãß°í ÀÖ´Â ±×·¡µµ ¾µ¸¸ÇÑ ÅøÀÌ ¼û¾î Àֱ⠸¶·ÃÀÌ´Ù. ±×·¯³ª, ¹Ý°¡¿òµµ Àá±ñ, ¼³Ä¡Çؼ­ ¿î¿µÇØ º¸·Á°í ÇÏ¸é ¾îµòÁö ÂòÂòÇÏ´Ù. °³¹ßÀÚ¾ß ¿­½ÉÈ÷ ³ë·ÂÇؼ­ ¸¸µé¾ú°ÚÁö¸¸, ±× ¾ç¹ÝÀÌ ¾ðÁ¦±îÁö ¾÷±×·¹À̵å ÇØ ÁÙÁö Àǹ®ÀÌ »ý±â±âµµ ÇÏ°í, ¾îµò°¡¿¡ ½É°¢ÇÑ ¹ö±× ÀÖÀ»Áö ¾Ë ±æ ¾øÀ½ÀÌ´Ù. ´Ù½Ã ¿©±â Àú±â µÚÁ®º¸´Ù º¸¸é ³»°¡ ã¾Æ³½ ¼ÒÇÁÆ®¿þ¾î°¡ ºñ±³Àû ¾ÈÁ¤ÀûÀ¸·Î ¿©·¯ »ç¶÷ÀÇ ÁöÁö¸¦ ¹Þ°í ÀÖ´Â °ÍÀÌ È®ÀεȴÙ. ±×·¸´Ù¸é ¿ª½Ã ÀÌ°ÍÀ» ã¾Æ³½ ³ªÀÇ Çý¾È¿¡ ³î¶ó°Ô µÇ¸ç ¼³Ä¡¸¦ ½ÃµµÇØ º¸°Ô µÈ´Ù. ÀÌÁ¦ º»°ÝÀûÀÎ ¹®Á¦°¡ ¹ß»ýÇÑ´Ù. Àü¼¼°èÀÇ ¸¹Àº »ç¶÷µéÀÌ ÁÁ´Ù°í ÁöÁö¸¦ º¸³½ ¼ÒÇÁÆ®¿þ¾î°¡ ¿Ö ³ªÀÇ ÄÄÇ»ÅÍ¿¡¼­´Â ¼³Ä¡°¡ ¾È µÇ´Â ¹®Á¦°¡ ¹ß»ýÇÑ´Ü ¸»Àΰ¡. ½Ñ ¸À¿¡ Á¶¸³ÇÑ ³ªÀÇ ÆæƼ¾öÀº ¿ª½Ã ºñÁö¶±À̾ú´Ü ¸»Àΰ¡. ³ª¶û ¼³Ä¡¸¦ °°ÀÌ ½ÃÀÛÇÑ ´Ù¸¥ °³¹ßÀÚ°¡ 7000¸¸¿øÂ¥¸® ÄÄÆÑ ¼­¹ö¿¡¼­ Àß µ¹¸®°í ÀÖ´Â ¸ð¾çÀ» º¸¸é ¿­ÀÌ ¹Þ±â±îÁö ÇÑ´Ù. ÀÌƲÀ» °í¹ÎÇÏ°í ¸Ó¸®¸¦ Áã¾î ¶â°í ³ª´Ï ¾î´À ¼ø°£ ²Þ½µµ ¾Ê´ø ¼ÒÇÁÆ®¿þ¾î°¡ µ¹¾Æ°¡°í ¹®Á¦´Â µð·ºÅ丮¿¡ ¾²±â Æ۹̼ÇÀ» ¾È ¿­¾î ³õ¾Ò±â ¶§¹®À̶ó´Â »ç½ÇÀ» ±ú´Ý°Ô µÈ´Ù. °Ü¿ì ÆÛ¹Ì¼Ç µûÀ§·Î ÀÌƲÀ»! ±×·¯³ª, ±â»Ýµµ Àá½Ã, ¼³Ä¡¸¸ ÇÏ¸é ¹«¾ùÇϰڴ°¡. °³¹ßÇÏ·Á°í ¸ð´ÏÅÍ ¾Õ¿¡ ¾ÉÀ¸¸é ¼Õ¿¡ Áã°Ô µÇ´Â ÀÚ·á¶ó°í´Â README³ª API¸¦ ÁÙÁÙÀÌ ¼³¸íÇØ ³õÀº Á¤µµÀÌ´Ù. Æ©Å丮¾óÀ» ¿­½ÉÈ÷ Àо °Ü¿ì ÀÔ¹® Á¤µµÁö º»°ÝÀûÀÎ °³¹ß¿¡ µµ¿òÀÌ Å©°Ô µÇ±â ¾î·Æ´Ù. °áÁ¤ÀûÀ¸·Î ±× ³ðÀÇ ¹®¼­µéÀº ÁË´Ù ¿µ¾î·Î ¾º¿© ÀÖ´Â Åë¿¡ Çص¶Çϴµ¥¸¸ Çصµ ÇѼû ³ª¿Â´Ù.

ÀÌ ¸ðµç ¾î·Á¿î °úÁ¤À» ÇìÄ¡°í °³¹ß¿¡ Âø¼öÇؼ­ ÇÁ·ÎÁ§Æ®°¡ ¿Ï¼öµÉ ¹«·Æ, °³¹ßÀÚÀÇ °¡½¿À» Âö´Â °ÍÀº ´õ¿í Áøº¸ÀûÀÎ ¹æ¹ýÀÌ ¼ö¾øÀÌ »ý°Ü³ª°í ³»°¡ ¿­½ÉÈ÷ ½×Àº ±â¼úÀÌ ¿À·¡°¡Áö ¸ø ÇÒÁöµµ ¸ð¸¥´Ù´Â ºÒ¾È°¨ÀÌ´Ù.

À¥ °³¹ßÀÇ ¿ª»ç¿Í Ãß¼¼

Á¤ÀûÀÎ HTML¿¡¼­ µ¿ÀûÀÎ CGI·Î

Ãʱ⿡´Â HTML¸¸À¸·Îµµ ³î¶ó¿î ÀÎÅͳÝÀÇ ¼¼°è¶ó°í ¿©±æ ¼ö ÀÖ¾ú´Ù. ±×·¯³ª, °ð Á¤ÀûÀÎ ¹®¼­¿¡ ½Ä»óÇÏ°Ô µÇ°í ¹º°¡ ¹æ¹®ÀÚ¿Í È£ÈíÇÒ ¼ö ÀÖ´Â µ¿ÀûÀÎ »çÀÌÆ®¸¦ ¸¸µé Çʿ伺ÀÌ »ý°Ü³ª±â ½ÃÀÛÇß´Ù. »ç½Ç Áö±ÝÀº Àü¼¼°èÀÇ ¸ðµç »çÀÌÆ®°¡ Á¤ÀûÀÎ HTML¹®¼­¸¸À¸·Î ¿òÁ÷ÀÌÁö ¾Ê´Â´Ù. ²÷ÀÓ¾øÀÌ µ¥ÀÌÅͺ£À̽º¿Í ¿¬µ¿ÇÏ¿© ¹æ¹®ÀÚ¿¡°Ô ¸Â´Â ¸ÂÃã Á¤º¸¸¦ Á¦°øÇÏ°í ÀÖ´Ù.

Ãʱâ HTMLÀÇ Á¤ÀûÀÎ ÀڷḦ µ¿ÀûÀ¸·Î ¿òÁ÷ÀÌ°Ô Çϱâ À§Çؼ­ µîÀåÇÑ ¹æ¹ýÀÌ CGI(Common Gateway Interface)ÀÌ´Ù. Ãʱâ Çѵ¿¾ÈÀº ¸¹Àº °³¹ßÀÚ¿¡°Ô ½±°Ô Àü´ÞµÇÁö ¾Ê¾Æ¼­ Ưº°ÇÏ°í ´ë´ÜÇÑ ±â¹ýÂëÀ¸·Î ¿©°ÜÁö±âµµ Çߴµ¥, ±× ¸ÞÄ«´ÏÁòÀº ¸Å¿ì °£´ÜÇÏ´Ù. º°µµ·Î ¸¸µé¾î ³õÀº ÇÁ·Î±×·¥¿¡ HTMLÀÇ GETÀ̳ª POSTÀÇ ¹æ¹ýÀ» ÅëÇØ Å¬¶óÀ̾ðÆ®ÀÇ µ¥ÀÌÅ͸¦ ȯ°æ º¯¼ö·Î Àü´ÞÇÏ°í ÇÁ·Î±×·¥ÀÇ Ç¥ÁØ Ãâ·Â °á°ú¸¦ ±×´ë·Î Ŭ¶óÀ̾ðÆ®¿¡ µÇµ¹·Á ÁÖ´Â Çü½ÄÀÌ´Ù. CGI´Â Ưº°ÇÑ ¶óÀ̺귯¸®³ª °³¹ß ÅøÀ» ÁöĪÇÏ´Â °ÍÀÌ ¾Æ´Ï°í À¥ ¼­¹ö¿Í º°µµ·Î ¸¸µé¾î ³õÀº ÇÁ·Î±×·¥ °£ÀÇ µ¥ÀÌÅÍ ±³È¯ ¹æ½ÄÀ» ÀÏÄ´ °ÍÀ¸·Î¼­ ¾î¶² ÇÁ·Î±×·¡¹Ö ¾ð¾î·Îµµ ±¸ÇöÀÌ °¡´ÉÇÏ´Ù. Ãʱ⿡´Â C, C++, Perl, Visual Basic(¹°·Ð À©µµ±×¿¡¼­¸¸) µîÀÌ ÁÖ·ù¸¦ ÀÌ·ç¾ú´Ù.

µ¥ÀÌÅͺ£À̽º¿Í ¿¬µ¿Çϱâ À§Çؼ­´Â °³º° µ¥ÀÌÅͺ£À̽º°¡ Á¦°øÇÏ´Â ÇØ´ç ¾ð¾îÀÇ ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÏ´Â ¹æ½ÄÀ» ÃëÇÏ¿´´Ù. ¿¹¸¦ µé¾î postgreSQLÀ» À¥°ú ¿¬µ¿½ÃÅ°±â À§Çؼ­´Â postgreSQLÀÌ Á¦°øÇÏ´Â C¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÑ´ÙµçÁö ÇÏ´Â ½ÄÀ̾ú´Ù.

CGIÀÇ ¹®Á¦Á¡

ÀÛ¼º°ú À¯ÁöÀÇ ÇÑ°è

±¸µ¿ ¸ÞÄ«´ÏÁòÀÇ Ãë¾à¼ºÀ» Â÷Ä¡ÇÏ°í¼­¶óµµ CGI ¹æ¹ý¿¡¼­ Ç¥ÁØ Ãâ·ÂÀ¸·Î HTML¹®¼­ ¾ç½ÄÀ» ¸¸µé¾î¾ß ÇÑ´Ù´Â °ÍÀÌ °³¹ßÀÚ¿¡°Ô °¡Àå ¹øÀ⽺·¯¿î ¹®Á¦·Î µîÀåÇÏ¿´´Ù. ¿¹¸¦ µé¾î, C·Î CGI ÇÁ·Î±×·¥À» ¸¸µé¾ú´Ù°í ÇÏÀÚ. °£´ÜÇÑ HTML¹®¼­¸¦ Ãâ·ÂÇϱâ À§Çؼ­µµ ´ÙÀ½°ú °°Àº CÄڵ带 ½á¾ß Çß´Ù.

...
printf("<HTML><HEAD><TITLE>CGI°á°ú¹°</TITLE></HEAD>");
printf("\n<BODY>");
printf("\n³­ \"¸ÚÁø ³Ñ\"À̾ß");
...

HTML ¹®¼­ ¾ç½ÄÀÌ ÇÑ´«¿¡ µé¾î¿À´Â°¡? Àý´ë ±×·² ¼ö ¾ø´Ù. °Ü¿ì ÇÑ ÁÙÀÇ HTML Äڵ带 ¾²·Á°í Çصµ Ç¥ÁØ Ãâ·Â ÇÔ¼ö¸¦ ºÒ·¯¾ß ÇÏ°í, ÁÙ ³Ñ±èÀ» À§Çؼ­ \nÀ» ³²¹ßÇØ¾ß Çϸç, Å« µû¿ÈÇ¥¸¦ ¾²·Á°í ÇÏ¸é ¾Õ¿¡ \(backslash)¸¦ ºÙ¿©ÁÖ¾î¾ß¸¸ ÇÑ´Ù. ¸Å¹ø printf ÇÔ¼ö°¡ È£ÃâµÇ´Â °Íµµ ´Þ°©Áö ¾Ê´Ù. HTML ¹®¼­ÀÇ ÇÑ°è»ó ¹®¼­ ü°è¸¦ Äڵ常À¸·Î ÀÌÇØÇÏ´Â °ÍÀÌ ½¬¿î ÀÏÀº ¾Æ´ÏÁö¸¸, C ÄÚµå¿Í ¼¯¿© ÀÖÀ¸´Ï ¾îµð°¡ ¾îµòÁö µµÅë °¨ÀÌ ¼­Áö ¾Ê´Â´Ù.

õ½Å¸¸°í ³¡¿¡, Àý´ë Á÷°üÀûÀ¸·Î ´«¿¡ µé¾î¿ÀÁö ¾Ê´Â HTML Äڵ忡¼­ Çì¸Å´Ù°¡ °£½ÅÈ÷ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ°í, ÀÛ¼ºÇÑ CGI ÇÁ·Î±×·¥À» À¥¿¡¼­ µ¿ÀÛÇÏ°Ô ÇÏ·Á¸é ÄÄÆÄÀÏ·¯·Î ÄÄÆÄÀÏÀ» ¿ì¼± ÇØ¾ß ÇÑ´Ù. ±×¸®°í, ºê¶ó¿ìÀú¸¦ ¶ç¿î´Ù. Å×½ºÆ®¸¦ Çß´õ´Ï, "¸ÚÁø ³ð"À̶ó°í ³ª¿Í¾ß ÇÒ °ÍÀÌ "¸ÚÁø ³Ñ"À¸·Î ¿ÀŸ°¡ ³ª°í ÀÖ´Ù. ´Ü ÇÑ ±ÛÀÚ¸¦ ¼öÁ¤Çϱâ À§ÇØ ÇØ¾ß ÇÒ ÀÏÀº ÀÛ¼ºÇÑ C ÇÁ·Î±×·¥ ÄÚµåÀÇ "¸ÚÁø ³Ñ" ºÎºÐÀ» ¿­½ÉÈ÷ ã¾Æ¼­ ÇÑ ±ÛÀÚ °íÄ¡°í ´Ù½Ã ÄÄÆÄÀÏÀ» ÇÏ°í ºê¶ó¿ìÀúÀÇ ´Ù½Ã Àб⠹öÆ°À» ´©¸£´Â °ÍÀÌ´Ù. »ó»óÇغ¸ÀÚ. Á¶±Ý ±ä ¹®¼­, Å×À̺íÀÌ º¹ÀâÇÏ°Ô µé¾î°£ ¹®¼­¸¦ °íÄ¡·Á°í ÇÏ¸é °ú¿¬ ½¬¿ï±î? ±×·¡µµ µðÀÚÀΰú CGI¸¦ ÇÔ²² ÇÑ´Ù¸é ÀÛ¼ºÀÚ ½º½º·Î µðÀÚÀÎÀ» °íÃÄ°¥ ¼ö ÀÖÀ¸´Ï ²¨À̲¨ÀÌ ¼öÁ¤ÇÒ ¼ö ÀÖ´Ù°í Ä¡ÀÚ. ±×·¯³ª, µðÀÚÀ̳ʰ¡ º°µµ·Î ÀÖ°í °³¹ßÀÚ°¡ À̸¦ CGI·Î º¯È¯ÇÏ´Â ÀÛ¾÷¸¸À» ÇÑ´Ù¸é? µðÀÚÀ̳ʰ¡ C Äڵ带 ºÁ°¡¸é¼­ °íÄ¥¸® ¸¸¹«´Ù. ¿¹¸¦ µé¾î, ȨÆäÀÌÁöÀÇ ´ë´ëÀûÀÎ °³¼± ÀÛ¾÷ÀÇ ÀÏȯÀ¸·Î °Ô½ÃÆÇÀÇ µðÀÚÀÎÀÌ È® ¹Ù²î¾ú´Ù°í ÇÏÀÚ. µðÀÚÀ̳ʴ ¹Ù²ï °Ô½ÃÆÇÀÇ »ùÇà µðÀÚÀÎÀ» CGI ÀÛ¾÷ÀÚ¿¡°Ô ´øÁ® ÁØ´Ù. ÇÁ·Î±×·¡¸Ó´Â À̸¦ COPY-PASTE·Î C ¿¡µðÅÍ·Î °¡Á® ¿Í¼­ ¿­½ÉÈ÷ Ç¥ÁØ Ãâ·Â ÇÔ¼ö·Î ¿ì°Ü ³Ö¾î¾ß ÇÑ´Ù. ¿¹Àü¿¡ ÀÛ¾÷Çß´ø °ÍÀº ´Ù ÇÊ¿ä ¾øÀÌ »õ ºÎ´ë¿¡ ´ã¾Æ¾ß ÇÑ´Ù. ÀÌÁ¦, À¥ °³¹ßÀÚ´Â ³ë°¡´Ù ÀηÂÀ¸·Î Àü¶ôÇÏ°í ¸¸´Ù.

¸ÞÄ«´ÏÁòÀÇ ÇÑ°è

CGIÀÇ °áÁ¤ÀûÀÎ ÇÑ°è´Â ¼º´É¿¡ ÀÖ´Ù. °£·«ÇÑ ÆäÀÌÁö¸¦ CGI¸¦ ÅëÇØ º¸¿© ÁÖ·Á°í Çصµ À¥ ¼­¹ö´Â º°µµÀÇ ÇÁ·Î±×·¥À» ½ÇÇà½ÃÄÑ¾ß ÇÑ´Ù. ÇÁ·Î±×·¥ ½ÇÇàÀÌ ¹¹ ´ë¼ö³Ä°í? OS°¡ ÇÁ·Î±×·¥À» ½ÇÇàÇÏ´Â ´Ü°è¸¦ Àá±ñ »ý°¢ÇØ º¸ÀÚ. °¢°¢ÀÇ ÇÁ·Î±×·¥Àº ½ÇÇàµÇ¸é¼­ ÇϳªÀÇ ÇÁ·Î¼¼½º°¡ µÇ´Âµ¥, °³º° ÇÁ·Î¼¼½º¸¦ Á¦¾îÇϱâ À§ÇØ OS´Â PCB(Process Control Block)¸¦ »ç¿ëÇÑ´Ù. PCB¿¡´Â °¢ ÇÁ·Î¼¼½ºÀÇ »óÅÂ, ÇÁ·Î±×·¥ Ä«¿îÅÍ, CPU ·¹Áö½ºÅÍ, ½ºÄÉÁÙ¸µ Á¤º¸, ¸Þ¸ð¸® Á¤º¸, I/O Á¤º¸ µîµîµîÀÌ ÀúÀåµÇ°í ÀÌ PCB´Â ¸Þ¸ð¸®¿¡ ÀúÀåµÈ´Ù. ´õºÒ¾î, ÄÚµå ³»¿ëÀÌ ¸Þ¸ð¸®¿¡ ÀûÀçµÇ´Âµ¥, ÇÁ·Î±×·¥ Äڵ带 ¸ðµÎ ¸Þ¸ð¸®¿¡ ÀúÀåÇÏ´Â °ÍÀº ¹«¸®À̹ǷΠÇÊ¿äÇÑ ºÎºÐ¸¸À» ã¾Æ¼­ ¸Þ¸ð¸®¿¡ ½Æ´Â´Ù. ÇÁ·Î¼¼½º°¡ Çϳª¸¸ µµ´Â °ÍÀÌ ¾Æ´Ï¹Ç·Î CPU´Â ÇöÀç ÁøÇà ÁßÀÎ ÇÁ·Î¼¼½º¸¦ ÀûÀýÇÏ°Ô ½ºÄÉÁÙ¸µÇÏ¿© µ¿½Ã¿¡ ¼öÇàµÇ°í ÀÖ´Â È¿°ú¸¦ ³»µµ·Ï ÇÑ´Ù. À§¿¡¼­ ¾ð±ÞÇÑ ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ¸é¼­ OS°¡ ó¸®ÇØ¾ß ÇÏ´Â ÀÏ·ÃÀÇ ÀÏ°ú µ¿½Ã¿¡ ¿©·¯ ÀÛ¾÷À» ¼öÇàÇϱâ À§ÇØ ÇÁ·Î¼¼½º¸¦ ÀüȯÇÏ´Â °úÁ¤ µîÀº OSÀÇ °üÁ¡¿¡¼­ º¸¸é ¸Å¿ì HeavyÇÑ ÀÏÀÌ´Ù. »Ó¸¸¾Æ´Ï¶ó, CGI´Â Ŭ¶óÀ̾ðÆ®ÀÇ ¿äûÀÌ °°Àº URL, Áï °°Àº CGI ÇÁ·Î±×·¥À» ½ÇÇà½ÃÅ°´Â °ÍÀ̶ó°í Çصµ, °¢°¢ÀÇ ¿äûÀ» ¸ðµÎ °³º° ÇÁ·Î¼¼½º·Î ó¸®ÇÑ´Ù. 1000¸íÀÌ Ä«¿îÅÍ CGI¸¦ ¿äûÇß´Ù°í Çϸé 1000°³ÀÇ ÇÁ·Î¼¼½º°¡ »ý±ä´Ù´Â ¸»ÀÌ´Ù. ¸î ÁÙÀÇ HTML ¹®¼­ °á°ú¸¦ º¸¿© ÁÖ±â À§ÇØ À§¿¡¼­ ¾ð±ÞÇÑ ÀϵéÀ» ¸Å¹ø ¼öÇàÇÑ´Ù´Â °ÍÀº ¾îµòÁö È¿À²ÀûÀÌÁö ¸øÇÏ´Ù.

Server-side Script ¹æ½ÄÀÇ µµ·¡

ÇÁ·Î±×·¥ ÄÚµå ¼Ó¿¡ HTML ¹®¼­¸¦ ¿ì°Ü ³Ö´Â ¹æ½ÄÀº µðÀÚÀΰú °³¹ßÀ» º°µµÀÇ ÀÛ¾÷À¸·Î ºÐ¸®½ÃÅ°Áö ¸ø ÇÏ°í À¯Áö, º¸¼ö¿¡ ¸¹Àº ½Ã°£À» µé°Ô ÇÏ´Â µîÀÇ ´ÜÁ¡ÀÌ ÀÖ¾ú´Ù. À̸¦ °³¼±ÇÏ´Â ¹æ¹ýµéÀÌ µîÀåÇϱ⠽ÃÀÛÇߴµ¥, ¹º°íÇÏ´Ï, HTML ¹®¼­ ¾È¿¡ ¿ì¾ÆÇÏ°Ô ÇÁ·Î±×·¥ Äڵ带 ³Ö´Â ¹æ½ÄÀÌ´Ù. ´ëÇ¥ÀûÀÎ °ÍÀÌ ASP(¹°·Ð À©µµ±×¿¡¼­¸¸), PHP µîÀÌ´Ù. ÀÌ Áß ±Ù·¡¿¡ »ç¿ëÀÇ Æí¸®¼ºÀ¸·Î ÀÎÇØ ÁÖ¸ñ¹Þ°í ÀÖ´Â ¹æ¹ýÀÌ PHPÀÌ´Ù.

PHP¸¦ »ý°¢ÇØ º¸ÀÚ. PHP´Â C ÄÚµå¿Í ºñ½ÁÇØ º¸ÀÌÁö¸¸ Àý´ë C°¡ ¾Æ´Ñ »õ·Î¿î ¾ð¾î ½ºÆåÀ» »ç¿ëÇÏ°í ÀÖ´Ù. ±âÁ¸ ¾ð¾îó·³ º¹ÀâÇÏÁö ¾Ê°í, »ç¿ëÇϱ⠰£ÆíÇÏ´Ù. »Ó¸¸¾Æ´Ï¶ó, ¿Â°® Á¾·ùÀÇ µ¥ÀÌÅͺ£À̽º¸¦ Á¦¾îÇÒ ¼ö ÀÖ´Â ÇÔ¼öµµ Á¦°øµÇ°í ÀÖÀ¸¸ç, ±âŸ À¥ °³¹ß¿¡ ÇÊ¿äÇÏ´Ù ½ÍÀº ÇÔ¼öµéÀº ÀÜ¶à µé¾î°¡ ÀÖ´Ù. ±×·¯³ª PHP ÇÑ°è´Â ¿©±â¿¡ ÀÖ´Ù. ¸ðµç ÇÊ¿äÇÑ °ÍÀº PHP°¡ ÇØ°áÀ» ÇØ ÁÖ¾î¾ß ÇÑ´Ù. PHP°¡ Á¦°øÇÏÁö ¾Ê´Â ¹æ¹ýÀ¸·Î´Â ÇØ°áÃ¥À» ãÀ» ¼ö ¾ø´Ù´Â ¸»ÀÌ´Ù. PHP´Â ±âÁ¸ ¾ð¾î¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ¾Æ´Ñ »õ·Î¿î ¾ð¾îÀ̹ǷÎ, ±âÁ¸ÀÇ ¼ö¸¹Àº ¶óÀ̺귯¸®, ¼ÒÇÁÆ®¿þ¾î¿Í ¿¬µ¿½Ãų ¼ö ¾ø´Â ÇÑ°è°¡ ÀÖ´Ù. ´õ¿íÀÌ, PHP´Â À¥ ¼­¹ö¿¡ ¸ðµâ·Î Æ÷ÇԵǾî À־, ÀÌ·± ¿Â°® ±â´ÉÀÌ À¥ ¼­¹ö¿¡ »ó´çÇÑ ºÎÇϸ¦ ÁÖ°Ô µÈ´Ù. ±¸µ¿ ¹æ½ÄÀ» »ý°¢ÇØ º¸ÀÚ. À¥ ¼­¹ö¿¡ PHP ¹®¼­°¡ ¿ä±¸µÇ¸é À¥ ¼­¹ö´Â PHP ¸ðµâ·Î ±× Á¦¾î±ÇÀ» ³Ñ±ä´Ù. PHP ¸ðµâÀº PHP ¹®¼­¸¦ ¹®¹ýÀûÀ¸·Î Çص¶Çϸ鼭 °ü·Ã ÇÔ¼öµéÀ» ±¸µ¿ÇÏ¿© °á°ú¹°À» ºê¶ó¿ìÀú¿¡ º¸³»°Ô µÈ´Ù. ¾ð¾î¸¦ ¹®¹ýÀûÀ¸·Î Çص¶ÇÏ´Â °úÁ¤Àº ¾Æ¹«¸® °£´ÜÇÑ ¹®¹ýÀÇ ¾ð¾î¶ó°í Çصµ ÀÏÁ¤ ¼öÁØÀÇ ½Ã°£ÀÌ ÇÊ¿äÇÏ´Ù. ÇÔ¼ö°¡ ¸¹¾ÆÁö°í ±â´ÉÀÌ º¹ÀâÇØÁú ¼ö·Ï ¿ä±¸µÇ´Â ½Ã°£Àº ´Ã¾î³­´Ù. »Ó¸¸¾Æ´Ï¶ó, Çѹø ½ÇÇàÇÑ ¹®¼­ÀÇ Çص¶ Á¤º¸¸¦ ÀúÀåÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ¸Å¹ø ±× ¹®¼­°¡ ¿ä±¸µÉ ¶§¸¶´Ù, °°Àº ÀÛ¾÷À» ¼öÇàÇØ¾ß ÇÑ´Ù. PHP ¸ðµâÀº À¥ ¼­¹ö¿¡ µé¾î°¡´Â ´Ù¸¥ ¸ðµâ¿¡ ºñÇØ ¸Å¿ì Å« ±Ô¸ð·Î À¥ ¼­¹ö ¼öÇà¿¡ ºÎ´ãÀ» °¡Áß½ÃŲ´Ù. ÀÌ·± ÀÌÀ¯·Î ¼º´É Çâ»óÀ» À§ÇØ ±¸¹®À» ÃÖ¼ÒÈ­ÇÏ´À¶ó °´Ã¼ÁöÇâ µîÀÇ ÃֽŠ¾ð¾î ±â¹ýÀ» ±¸»çÇÒ ¼ö ¾ø´Ù. ¶§¹®¿¡, C++À̳ª Javaó·³ Çѹø »ç¿ëÇÑ ¼Ò½º Äڵ带 Àç»ç¿ëÇϱ⠾î·Æ´Ù.

À¥ °³¹ß ÃÖÈÄÀÇ ¼Ö·ç¼Ç - ÀÚ¹Ù

ÀÚ¹Ù¶õ?

ÀÚ¹Ù´Â SunÀÌ °³¹ßÇÑ °´Ã¼ÁöÇâ ¾ð¾î·Î¼­ Ç÷§Æû¿¡ ±¸¾Ö ¹ÞÁö ¾Ê´Â ÀåÁ¡¶§¹®¿¡ ±Þ¼ÓÈ÷ È®»êµÇ°í ÀÖ´Ù. ÃֽŠÇÁ·Î±×·¥ ¾ð¾î °³³äÀÎ °´Ã¼ÁöÇâ, ¸ÖƼ¾²·¹µå, Garbage Collection, Exception Handling µîÀ» º¹ÇÕ½ÃŲ ¾ð¾î·Î¼­ ±â¹ÝÀÌ ¸Å¿ì ÈǸ¢ÇÏ´Ù. ±×µ¿¾È µîÀåÇß´ø Lisp, C, C++ µî ¸ðµç ¾ð¾îÀÇ ÀåÁ¡À» Àý¹¦ÇÏ°Ô º¹ÇÕ½ÃÄ×À¸¸ç C¿¡¼­ »ç¿ëÇØ¿Â Æ÷ÀÎÅÍ¿Í µ¿Àû ¸Þ¸ð¸® °ü¸® µîÀ» ¾Æ¿¹ ¾ø¾Ö °³¹ßÀÚÀÇ ºÎ´ãÀ» ´ú¾îÁÖ¾ú´Ù. ÀÚ¹Ù ÄÚµå´Â ¾î´À OS¿¡¼­µµ JVM(Java Virtual Machine)¸¸ ÀÖ´Ù¸é ´Ü ÇÑ ÁÙÀÇ ÄÚµå ¼öÁ¤ ¾øÀÌ ¶È°°ÀÌ °¡µ¿½Ãų ¼ö ÀÖ´Ù. ÀÚ¹Ù ¼Ò½º¸¦ ÀÚ¹Ù ÄÄÆÄÀÏ·¯·Î ÄÄÆÄÀÏ Çϸé Bytescode°¡ »ý¼ºÀÌ µÇ°í, ÀÌ Bytescode´Â ¾î¶² OSÀÇ JVM¿¡¼­µµ µ¿µîÇÏ°Ô ½ÇÇàµÈ´Ù. ±×·¯³ª, Ãʱ⿣ ÀÚ¹ÙÀÇ °³³äÀû ¿ì¿ù¼º¿¡µµ ºÒ±¸ÇÏ°í JVMÀÇ ¼öÇà ¼Óµµ°¡ ¸Å¿ì ´À·Á ½ÇÁ¦ °³¹ß ÇöÀå¿¡¼­ äÅÃÇϱ⿡´Â ¹«¸®¿´´Ù. ±×·¯³ª, Çϵå¿þ¾î »ç¾çÀÇ ¹ßÀü°ú JVMÀÇ ¼º´É Çâ»óÀ¸·Î ÃʱâÀÇ ´À¸®´Ù´Â ÁöÀûÀº Á¡Â÷ »ç¶óÁö°í ÀÖ´Ù.

À¥°ú ÀÚ¹Ù

Applet : Ŭ¶óÀ̾ðÆ®

Ãʱ⿡ ÀÚ¹Ù´Â ¾ÖÇø´ ÀÛ¼º¿¡ ¸¹ÀÌ ÀÌ¿ëµÇ¾ú´Ù. ¾ÖÇø´Àº HTML ÄÚµå¾È¿¡ Æ÷ÇԵǴ µ¶¸³Àû ÇÁ·Î±×·¥À¸·Î ºê¶ó¿ìÀú°¡ À̸¦ ¹Þ¾Æ¼­ ¼öÇàÇÑ´Ù. ³Ý½ºÄÉÀÌÇÁ¿Í ÀͽºÇ÷η¯ ¸ðµÎ ºê¶ó¿ìÀú ¾È¿¡ ÀÚ¹Ù¸¦ ¼öÇàÇÒ ¼ö ÀÖ´Â JVMÀ» ³»ÀåÇÏ°í ÀÖÀ¸¹Ç·Î OS¿Í µ¶¸³ÀûÀ¸·Î µ¿µîÇÏ°Ô ½ÇÇà½Ãų ¼ö ÀÖ´Ù. ¾ÖÇø´Àº ¼­¹öÃø¿¡¼­ µ¿ÀûÀ¸·Î »ý¼ºµÇ´Â °ÍÀÌ ¾Æ´Ï¶ó Ŭ¶óÀ̾ðÆ®(ºê¶ó¿ìÀú)¿¡°Ô º¸³»Á® Ŭ¶óÀ̾ðÆ® ȯ°æ¿¡¼­ ¼öÇàµÈ´Ù. ÀÚ¹Ù Bytescode´Â ¼Ò½º¸¦ ÀÚ¹Ù ÄÄÆÄÀÏ·¯·Î ÄÄÆÄÀÏÇÑ °á°ú¹°·Î¼­ HTML ¹®¼­¿¡ ºñÇØ Å©±â°¡ ¸Å¿ì Å©¸ç À¥ ¼­¹ö¿¡¼­ ºê¶ó¿ìÀú·Î Àü¼ÛµÇ±â±îÁö°¡ ¸¹Àº ½Ã°£ÀÌ °É¸°´Ù. ÀÏ´Ü Àü¼ÛµÈ ¾ÖÇø´Àº ºê¶ó¿ìÀú°¡ ¼öÇà½ÃÅ°¹Ç·Î ±× ¼Óµµ´Â Ŭ¶óÀ̾ðÆ®ÀÇ ½Ã½ºÅÛ È¯°æ°ú ºê¶ó¿ìÀú°¡ ³»ÀåÇÏ°í ÀÖ´Â JVMÀÇ ¼º´É¿¡ µû¶ó Á¿ìµÈ´Ù. 28.8K Á¤µµÀÇ ¸ðµ© ȯ°æÀ̶ó¸é ±×·²µíÇÑ ¾ÖÇø´À» ´Ù¿î ¹Þ¾Æ¼­ ¼öÇàÇϴµ¥´Â ¸¹Àº Àγ»½ÉÀÌ ÇÊ¿äÇÏ°Ô µÈ´Ù. ±×·¯³ª, Á¡Â÷ ÀÎÅÍ³Ý Åë½Å ȯ°æÀÌ ÁÁ¾ÆÁö°í ÀÖÀ¸¸ç °¡Á¤ÁýÀ» Á¦¿ÜÇÑ ´ëºÎºÐÀÇ »ç¹«½Ç°ú Çб³ µî¿¡¼­´Â Àü¿ë ȸ¼±ÀÌ ±ò·Á ÀÖ°í, ³Ë³ËÇÑ È¯°æÀÇ Àü¿ë¼±À̶ó¸é ¾ÖÇø´À» ±¸µ¿Çϴµ¥ ¹«¸®°¡ ¾ø´Ù. ±Ù·¡¿¡´Â °¡Á¤¿¡¼­µµ ÃÊ°í¼Ó Åë½Å ȯ°æÀ» ½Ñ °ª¿¡ ±¸ÃàÇÒ ¼ö ÀÖÀ¸¹Ç·Î Á¡Â÷ÀûÀ¸·Î ÀÎÅÍ³Ý È¯°æ¿¡¼­ ¾ÖÇø´ÀÇ Àü¼ÛÀº ºÎ´ãÀÌ µÇÁö ¾ÊÀ» °ÍÀÌ´Ù. JVMµµ ±â¼úÀûÀ¸·Î ¸¹ÀÌ Çâ»óµÇ¾ú°í, Sun»Ó ¾Æ´Ï¶ó, IBM°ú °°Àº ¸Å¸Óµå±Þ ȸ»çµéÀÌ ¶Ù¾îµé¾î °³¹ßÇÏ°í ÀÖ¾î Ãʱâ ÁöÀû¹Þ¾Ò´ø JVMÀÇ ±¸µ¿ ¼Óµµ´Â Á¡Â÷ ¹®Á¦°¡ µÇÁö ¾Ê´Â »óȲÀÌ´Ù.

Servlet°ú JSP : ¼­¹ö

¿À´Ã³¯ÀÇ ¸¹Àº °³¹ßÀº À¥°úÀÇ ¿¬µ¿À» ¿°µÎ¿¡ µÎ°í ÀÖ´Ù. ÀÚ¹Ù Áø¿µµµ ¿¹¿Ü´Â ¾Æ´Ï¾î¼­, ±Ù·¡ÀÇ ¹ßÀü ¹æÇâÀº ÀÎÅͳݿ¡ ÃÊÁ¡ÀÌ ¸ÂÃß¾îÁ® ÀÖ´Ù. Áö±Ý±îÁö µîÀåÇÑ À¥ °³¹ß ¹æ¹ýµéÀº ÆäÀÌÁö »ý»ê¿¡ ºñÇØ º¸¼ö°¡ ¸Å¿ì ¾î·Æ´Ù´Â Á¡°ú, µ¿½Ã Á¢¼ÓÀÚ°¡ ¸¹¾ÆÁö¸é ¼º´ÉÀÌ ÀúÇϵȴٴ Á¡, ±âÁ¸¿¡ »êÀçÇØ ÀÖ´Â ¸¹Àº °³¹ß ¹æ¹ýµé°ú ¿¬°è°¡ ¹ø°Å·Ó´Ù´Â Á¡ µîÀ̶ó°í ¸»ÇÏ¿´´Ù. À̸¦ °³¼±ÇÏ·Á´Â ³ë·ÂÀÌ ¹Ý¿µµÇ¾î ÀÚ¹Ù Áø¿µ¿¡¼­´Â ÀÌ·¯ÇÑ ´ÜÁ¡À» ±Øº¹ÇØ ÁÙ ¼ö ÀÖ´Â ¹æ¹ýÀ» Á¦½ÃÇÏ°í ÀÖ´Ù. »Ó¸¸ ¾Æ´Ï¶ó, ´ë±Ô¸ð ÇÁ·ÎÁ§Æ®¿¡¼­ ÀûÇÕÇÑ ÈǸ¢ÇÑ ¾ÆÅ°ÅØÃĸ¦ Á¦°øÇÏ°í ÀÖ´Ù.

º¸Åë À¥ °³¹ßÀ̶ó¸é ´Ü¼øÈ÷ ¹æ¹®ÀÚ¿¡°Ô È¿°úÀûÀÎ È­¸éÀ» Á¦°øÇÏ´Â °Í ÂëÀ¸·Î »ý°¢Çϱ⠽¬¿îµ¥, ³»ºÎÀûÀ¸·Î´Â ²÷ÀÓ¾øÀÌ µ¥ÀÌÅͺ£À̽º¿Í ¿¬µ¿Çϱ⵵ ÇÏ°í °¢Á¾ ¹Ìµé¿þ¾î¸¦ »ç¿ëÇÏ¿© È¿À²À» Áõ´ëÇϱ⵵ ÇÑ´Ù. ÀÌ Áß¿¡¼­ À¥Àº Ŭ¶óÀ̾ðÆ®¿ÍÀÇ Á¢Á¡À̸ç ÀÎÅÍÆäÀ̽ºÀÌ´Ù. ÀÚ¹Ù¿¡¼­´Â À¥ ÀÎÅÍÆäÀ̽º·Î¼­ ¼­ºí¸´°ú ÀÚ¹Ù ¼­¹ö ÆäÀÌÁöÀÇ µÎ °¡Áö ¹æ¹ýÀ» Á¦°øÇÑ´Ù.

¼­ºí¸´°ú JSP ¿³º¸±â

¼­ºí¸´

¿ì¼± ¼­ºí¸´¿¡ ´ëÇؼ­ °£·«È÷ ¼Ò°³ÇÏ°Ú´Ù. ¼­ºí¸´Àº ÀÏÁ¾ÀÇ CGIÀÌ´Ù. ±×·¯³ª, ±× ±¸µ¿ ¹æ½ÄÀº ¿©·¯°¡Áö Á¡¿¡¼­ ´Ù¸¥µ¥ °¡Àå Å« ÀåÁ¡Àº Ŭ¶óÀ̾ðÆ®°¡ ¿äûÇÏ´Â ¼­ºí¸´ÀÌ °³º°ÀûÀÎ ÇÁ·Î¼¼½º·Î ½ÇÇàµÇ´Â °ÍÀÌ ¾Æ´Ï°í ¼­ºí¸´À» Á¦¾îÇÏ´Â ¸ðµâ ³»¿¡¼­ ½ÇÇàµÈ´Ù´Â °ÍÀÌ´Ù. ¾ÆÆÄÄ¡¿Í JServ¸¦ »ç¿ëÇß´Ù°í ÇÏ¸é ½±°Ô ps¸¦ ÅëÇØ java ÇÁ·Î¼¼½º°¡ Çϳª¸¸ µ¹°í ÀÖ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù. ÀÌ°ÍÀº Ŭ¶óÀ̾ðÆ®µéÀÌ °°Àº ¼­ºí¸´À» ¿äûÇϸé ÀÌ ¼­ºí¸´ÀÌ ¸Þ¸ð¸®¿¡ °³º°ÀûÀ¸·Î ¿Ã¶ó¿À´Â °ÍÀÌ ¾Æ´Ï¶ó Çϳª¸¸ ¸Þ¸ð¸®¿¡ ÀûÀçµÈ´Ù´Â ¶æÀÌ°í ÀÌ´Â ¾öû³­ ÆÛÆ÷¸Õ½º Çâ»óÀ» °¡Á®¿Â´Ù. »Ó¸¸ ¾Æ´Ï¶ó, ¸ðµç ½ÇÇàµÇ´Â ¼­ºí¸´Àº À̸¦ Á¦¾îÇÏ´Â ¸ðµâÀÇ ÅëÁ¦ÇÏ¿¡ ³õÀÌ°Ô µÇ¹Ç·Î ¼­ºí¸´³¢¸®ÀÇ ÀÚÀ¯·Î¿î Åë½ÅÀÌ °¡´ÉÇÏ°í ¾²·¹µå¸¦ »ç¿ëÇÑ´Ù¸é ¸ÖƼ¾²·¹µå ÇÁ·Î±×·¡¹ÖÀÌ °¡´ÉÇØÁø´Ù. ÀϹÝÀûÀÎ CGIÀÇ Å« ´ÜÁ¡ Áß¿¡ ÇϳªÀÎ º¸¾È ¹®Á¦µµ ¼­ºí¸´À» »ç¿ëÇÏ¸é °ÆÁ¤ÇÒ ÇÊ¿ä°¡ ¾ø´Ù.

¶Ç ÇϳªÀÇ ÀåÁ¡Àº ¼­ºí¸´ÀÌ ÀÚ¹Ù¸¦ »ç¿ëÇϱ⠶§¹®¿¡ ÀÚ¹Ù°¡ Á¦°øÇÏ´Â ¼ö¸¹Àº ±â´ÉÀ» Á¦ÇѾøÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ¿¹¸¦ µé¸é ÀÚ¹Ù°¡ Á¦°øÇÏ´Â 2D, 3D ±×·¡ÇÈ ÅøÀ» ÀÌ¿ëÇؼ­ µ¿ÀûÀÎ À̹ÌÁö¸¦ »ý»êÇÒ ¼ö ÀÖ°í, ÀÚ¹Ù°¡ Á¦°øÇÏ´Â ¸ÞÀÏ Å¬·¡½ºµéÀ» ÀÌ¿ëÇϸé È¿°úÀûÀ¸·Î ¸ÞÀÏ Àü¼Û ¹× °ü¸®¸¦ ÇÒ ¼ö ÀÖ´Ù.

¶Ç, ÀÚ¹Ù¸¦ ±â¹Ý ¾ð¾î·Î »ç¿ëÇϱ⠶§¹®¿¡ ÀÚ¿¬½º·´°Ô ¾ò¾îÁö´Â ÀåÁ¡ÀÌ Àִµ¥ ÀÌ°ÍÀº ÄÚµåÀÇ ¼Õ½¬¿î Àç»ç¿ë, Ç÷§Æû µ¶¸³¼º, JDBC »ç¿ë µîÀÌ´Ù. ÄÚµåÀÇ Àç»ç¿ëÀº °´Ã¼ÁöÇâ¾ð¾îÀÇ Áß¿äÇÑ °³³äÀ¸·Î Àß ¸¸µé¾î ³õÀº ±¸Á¶ÀÇ Å¬·¡½º¶ó¸é ¾î´À Äڵ忡¼­µµ ½±°Ô »ç¿ëÇÒ ¼ö ÀÖ°í °è½Â µîÀ» ÀÌ¿ëÇÏ¿© ±â´ÉÀ» Ãß°¡ÇÒ ¼ö ÀÖ´Ù. Ç÷§Æû µ¶¸³¼ºµµ ¿ª½Ã ÀÚ¹ÙÀÇ Áß¿äÇÑ ÀåÁ¡Àε¥ ¸¸ÀÏ ¼­ºí¸´À¸·Î À¥À» ±¸ÃàÇÏ¿´´Ù¸é ¾î¶² OS, ¾î¶² ±â°è¶óµµ ±× Ç÷§ÆûÀÌ ÀÚ¹Ù¸¦ Áö¿øÇϱ⸸ Çϸé ÇÑ ÁÙÀÇ ÄÚµå ¹Ù²Þ¾øÀÌ °³¹ßÇØ ³õÀº Äڵ带 ±×´ë·Î À̽ÄÇÒ ¼ö ÀÖ´Ù. ÀÚ¹Ù´Â ¸®´ª½º, À¯´Ð½º¸¦ ºñ·ÔÇÏ¿© ½ÉÁö¾î À©µµ±×¿¡¼­µµ ¹«¸®¾øÀÌ µ¹¾Æ°¡¸ç, ¼­ºí¸´ ȯ°æµµ ¾î¶² Ç÷§ÆûÀÌ¶óµµ ½±°Ô ±¸ÃàÇÒ ¼ö ÀÖ´Ù. JDBC¸¦ »ç¿ëÇÏ¸é ¾î¶² µ¥ÀÌÅͺ£À̽º¿Íµµ ¶È°°Àº ÀÎÅÍÆäÀ̽º·Î ¿¬µ¿ÇÒ ¼ö ÀÖÀ¸¹Ç·Î, µ¥ÀÌÅͺ£À̽º¸¦ ´Ù¸¥ ±âÁ¾À¸·Î ±³Ã¼ÇÑ´Ù°í Çصµ ¼­ºí¸´ ¼Ò½º Äڵ带 °ÅÀÇ ¼öÁ¤ÇÒ ÇÊ¿ä°¡ ¾ø´Ù.

¼­ºí¸´ Äڵ带 Àá±ñ ¼Ò°³ÇÏ°Ú´Ù.

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class CMemberTest extends HttpServlet {
    
    public void doGet(HttpServletRequest request,
		       HttpServletResponse response)
	throws ServletException, IOException {
	
	response.setContentType("text/html; charset=EUC_KR");
	PrintWriter out = response.getWriter();

	out.println("<HTML><HEAD><TITLE>¼¼¼Ç Å×½ºÆ®</TITLE></HEAD></HTML>");
	out.println("<BODY>");

	Cookie[] cookies = request.getCookies();
	boolean pass = false;
	String email = "";

	for (int i = 0; i < cookies.length; i++) {
	    Cookie thisCookie = cookies[i];
	    out.println(thisCookie.getName() + ":" + thisCookie.getValue());
	    if (thisCookie.getName().equals("pass") &&
		thisCookie.getValue().equals("yes")) pass = true;
	    if (thisCookie.getName().equals("email")) 
		email = new String(thisCookie.getValue().getBytes(), "EUC_KR");
	}

	try {
	    if (pass) {
		out.println("ÀÎÁõ Åë°úµÈ ¾ÆÀ̵ðÀÓ" + " : " + email);
	    } else {
		out.println("ÀÎÁõ Åë°úµÇÁö ¾Ê¾ÒÀ½");
	    } 
	} catch (NullPointerException e) {
		out.println("ÀÎÁõ °úÁ¤À» °ÅÄ¡Áö ¾Ê¾ÒÀ½");
	}
	out.println("</BODY></HTML>");
    }
}

À§ÀÇ ¿¹¿¡¼­´Â ÄíÅ°¸¦ ÀÌ¿ëÇÏ¿© ÀÎÁõ ¿©ºÎ¸¦ È®ÀνÃÄÑ ÁÖ´Â °£´ÜÇÑ ¹æ¹ýÀ» º¸¿©ÁØ´Ù. ÄíÅ°¸¦ ÀÌ¿ëÇÏ´Â ÀÎÁõÀº º¸¾È Ãø¸é¿¡¼­´Â ºó¾àÇÏ¿© WebDox°¡ Á¦°øÇÏ´Â ¾ÆÆÄÄ¡¿¡ Ãß°¡ µÇ´Â postgreSQL ÀÎÁõ ¸ðµâÀ» ¾²´Â ¹æ¹ýÀÌ ÈǸ¢ÇÏÁö¸¸, ¿ì¼± À§ÀÇ ¹æ½ÄÀº ÄíÅ° »ç¿ë¿¹¸¦ º¸¿©ÁÖ¸ç º¸¾ÈÀÌ Å©°Ô ÇÊ¿äÇÏÁö ¾Ê´Â ¼öÁØÀ̶ó¸é »ç¿ëÇÒ ¼ö ÀÖ´Ù.

JSP

¼­ºí¸´Àº CGI¿Í´Â ºñ±³ÇÒ ¼ö ¾ø´Â ¼öÁØÀÇ ÁÁÀº ¾ÆÅ°ÅØó¸¦ °®°í ÀÖ°í ´Ù¾çÇÑ ÀåÁ¡µéÀÌ ÀÖ´Ù. ±×·¯³ª ¿ª½Ã ÀÚ¹Ù ÄÚµå ¼Ó¿¡ HTML Äڵ带 ³Ö¾î¾ß ÇÑ´Ù´Â ´ÜÁ¡ÀÌ Àִµ¥, À̸¦ ±Øº¹ÇÑ °ÍÀÌ JSP(Java Server Page)ÀÌ´Ù. JSP´Â HTML¹®¼­ ¾È¿¡ ÀÚ¹Ù Äڵ带 ³Ö´Â Çü½ÄÀ¸·Î PHP, ASP¿Í °°ÀÌ Server-side script ¹æ½ÄÀÌ´Ù. ±×·¯³ª, JSP´Â ¼Ò½º ¼öÁ¤ ½Ã ÀÚµ¿ÀûÀ¸·Î ¼­ºí¸´À¸·Î ÀüȯµÇ¾î ±¸µ¿µÇ¸ç ÀÌÁ¡¿¡¼­ ¿ÏÀüÈ÷ ¼­ºí¸´°ú µ¿µîÇÏ´Ù. JSPÀÇ Äڵ带 Àá½Ã »ìÆ캸ÀÚ.

<%@ page import="java.sql.*" contentType="text/html; charset=EUC_KR" %>

<%
String userId = request.getParameter("userid");

Connection db;
ResultSet rs;
Statement stmt;

try {
   Class.forName("postgresql.Driver");
} catch (java.lang.ClassNotFoundException e) {
   System.err.println(e.getMessage());
}
%>

<HTML>
<HEAD><TITLE>JSP Sample page</TITLE></HEAD>
<BODY>
<TABLE>
<TR>

<%
try {
    db = DriverManager.getConnection("jdbc:postgresql:dbname", "dbowner", "password");
    stmt = db.createStatement("SELECT name FROM member WHERE userid = " + userId);
    rs = stmt.executeQuery();

    while (rs.next()) {
%>

<tr>
<td><%= rs.getString("name") %><td>
</tr>

<%
    }
%>

</TABLE>
</BODY>
</HTML>

<%
} catch (SQLException e) {
%>
    <%= e.getMessage() %>
<%
}
%>

HTML ¹®¼­ ¾È¿¡ ÀÚ¹Ù Äڵ尡 µé¾î°¡´Â ¸ð½À°ú JDBC¸¦ ÀÌ¿ëÇÏ¿© postgreSQL°ú ¿¬µ¿µÇ´Â ¸ð½ÀÀ» º¼ ¼ö ÀÖ´Ù. <% %> ÅÂ±× ¾È¿¡´Â ÀÚ¹Ù Äڵ带 ¾Æ¹«·± Á¦ÇÑ ¾øÀÌ ½á ³ÖÀ¸¸é µÇ°í, <%= %> ÅÂ±× ¾ÈÀÇ ÀÚ¹Ù ÄÚµå °á°ú´Â È­¸é¿¡ ±× °á°ú°¡ º¸¿©Áö°Ô µÈ´Ù. Post³ª GetÀ¸·Î Àü´Þ¹Þ´Â °ªµéÀº request.getParameter() ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¸é ½±°Ô Á¦¾îÇÒ ¼ö ÀÖ´Ù.

´Ù¸¥ °³¹ß ¹æ¹ý°úÀÇ ºñ±³

¸¹Àº °³¹ßÀÚµéÀÌ °¡Àå ±Ã±ÝÇØ ÇÏ´Â °ÍÀÌ ¿ª½Ã ¿©·¯ °³¹ß ¹æ¹ýµé Áß ¾î¶² °ÍÀÌ ´õ ³ªÀº°¡ ÇÏ´Â Á¡ÀÏ °ÍÀÌ´Ù. Áö±Ý±îÁö ¿©·¯°¡Áö ¹æ¹ýµéÀÇ Àå´ÜÁ¡À» ¾ð±ÞÇߴµ¥ Á¤¸®ÇØ º¸±â·Î ÇÏÀÚ. ºñ±³ ´ë»óÀº ÀÏ¹Ý CGI, Server-side scripts(PHP, ASP), Servlet+JSP µîÀÌ´Ù.

¼º´É¸é

ASP´Â ½ºÅ©¸³Æ®·Î ¾º¿© Á³Áö¸¸ ÀÏ´Ü ÄÄÆÄÀÏ µÇ¸é CGI·Î ¹Ù²î¹Ç·Î CGI°¡ °®°í ÀÖ´Â ¿©·¯°¡Áö ¹®Á¦Á¡À» ±×´ë·Î Áö´Ï°Ô µÈ´Ù. µû¶ó¼­, ASP¿Í CGI°¡ ¼º´É¸é¿¡¼­ °¡Àå Ãë¾àÇÏ´Ù. PHPÀÇ °æ¿ì´Â ´ëüÀûÀ¸·Î ¸Å¿ì ¶Ù¾î³­ ¼Óµµ¸¦ º¸¿© ÁØ´Ù. Servlet°ú JSP´Â JVM¿¡ ±× ¼º´ÉÀÌ ÀÇÁ¸ÀûÀÌ´Ù. ÇöÀç´Â ASP³ª CGIº¸´Ù´Â ºü¸£Áö¸¸ PHPº¸´Ù´Â ¾à°£ ´À¸®´Ù´Â ÆòÀ» ¾ò°í ÀÖ´Ù. ±×·¯³ª, ¿©·¯ ¹Ìµé¿þ¾î¸¦ »ç¿ëÇϰųª DB¿ÍÀÇ ¸¹Àº Æ®·£Àè¼ÇÀÌ ÀÖ´Â °æ¿ì´Â PHP¿¡ ¾Õ¼±´Ù°í º¸°íµÇ°í ÀÖÀ¸¸ç, JVMÀÇ ¼º´É Çâ»ó¿¡ µû¶ó ²ÙÁØÇÑ ¼º´É Çâ»óÀ» ±â´ëÇÒ ¼ö ÀÖ´Ù.

È®À强¸é

´Ü¿¬, Servlet+JSP ¹æ½ÄÀÌ ¿ì¿ùÇÏ´Ù. ÀÚ¹Ù°¡ Á¦°øÇÏ´Â ¸ðµç ±â´ÉÀ» ÀÚÀ¯·Ó°Ô »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç ÄÚµåÀÇ Àç»ç¿ë µî¿¡¼­ Ź¿ùÇÏ´Ù. JDBC¸¦ »ç¿ëÇÏ¿© ¸ðµç µ¥ÀÌÅͺ£À̽º¿Í ¶È°°Àº ÀÎÅÍÆäÀ̽º·Î µ¥ÀÌÅÍ ±³È¯ÀÌ °¡´ÉÇÑ Á¡¿¡¼­µµ Servlet+JSP ¹æ½ÄÀÌ ¶Ù¾î³­ È®À强À» °®°í ÀÖ´Ù.

³­À̵µ

ASP³ª PHP´Â °£´ÜÇÑ ¹®¹ýÀ̹ǷΠÃʺ¸ÀÚµµ ½±°Ô »ç¿ëÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª Servlet°ú JSP´Â ÀÚ¹Ù¸¦ ¾Ë¾Æ¾ß ÇÑ´Ù´Â ÀüÁ¦ ¶§¹®¿¡ ½±°Ô ´Ù°¡¼­±â ¾î·Á¿î ¸éÀÌ ÀÖ´Ù. ÇÏÁö¸¸, °³¹ßÀÚ´Â °£´ÜÇÑ À¥ ÀÎÅÍÆäÀ̽º¸¸À» ÀÛ¾÷ÇÏ´Â °ÍÀÌ ¾Æ´Ï±â ¶§¹®¿¡ Á¦´ë·Î ÇÑ ¾ð¾î¸¦ ¾Ë¾ÆµÎ¸é ¾î´À ¶§°í ¾àÀÌ µÈ´Ù. °£´ÜÇÑ ÀÛ¾÷À» À§Çؼ­¶ó¸é ÀÚ¹Ù¸¦ ÀüºÎ ÀÍÇô¾ß ÇÏ´Â ºÎ´ã¾øÀÌ ¼Õ½±°Ô ÀÛ¾÷ÇÒ ¼ö Àֱ⵵ ÇÏ´Ù.

°á·Ð

ÇâÈÄ À¥ °³¹ß¿¡¼­ ÀÚ¹Ù¸¦ ÀÌ¿ëÇÑ ¼Ö·ç¼ÇÀº Å« ¸òÀ» Â÷ÁöÇÒ °ÍÀ̸ç, Å« ÇÁ·ÎÁ§Æ®Àϼö·Ï ±× »ç¿ë ºñÁßÀº ³ô¾ÆÁú °ÍÀÌ´Ù. webdox´Â À¥ °³¹ß¿¡ À־ÀÇ ÀÚ¹ÙÀÇ ºñÀüÀ» ÀνÄÇÏ¿© Áö¼ÓÀûÀ¸·Î ÀÚ¹Ù¸¦ ÀÌ¿ëÇÑ À¥ °³¹ß ¹æ¹ý¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ±ÛÀ» °ÔÀçÇÒ ¿¹Á¤ÀÌ´Ù.