What is Servlet?



¼­ºí¸´Àº Server side appletÀÇ ¾àÀÚ¶ó°í ÇÕ´Ï´Ù. ±×·±µ¥ ¿Ö server side appletÀ̶ó°í ¼­ºí¸´ÀÌ ºÒ¸®¿ï±î¿ä? ±×°ÍÀº servletÀÌ applet°ú ¸Å¿ì ºñ½ÁÇÑ Á¡ÀÌ Àֱ⠶§¹®ÀÔ´Ï´Ù. ±×·³ ¹«¾ùÀÌ ºñ½ÁÇÒ±î¿ä? AppletÀº java.awt.AppletÀ̶ó´Â class¸¦ »ó¼Ó¹Þ¾Æ¼­ ÀÛ¼ºÇÕ´Ï´Ù. AppletÀ̶ó´Â class´Â init()°ú start(), stop(), destory()ÀÇ ³× °³ÀÇ ¸Þ¼Òµå¿¡ ÀÇÇÑ »ý¸íÁֱ⸦ °®½À´Ï´Ù. Servletµµ ºñ½ÁÇÏ°Ô javax.servlet.HttpServletÀ̶ó´Â Ŭ·¡½º¸¦ »ó¼Ó¹Þ¾Æ¼­ ÀÛ¼ºÇÕ´Ï´Ù. HttpServletÀ̶ó´Â Ŭ·¡½º´Â init(), service(), destory()ÀÇ ¼¼ °³ÀÇ ¸Þ¼Òµå¿¡ ÀÇÇÑ »ý¸íÁֱ⸦ °®½À´Ï´Ù. ±×·¡¼­ ¾ÖÇø´°ú ¸Å¿ì ºñ½ÁÇÏ´Ù´Â ¸»À» ÇÏ´Â °ÍÀÔ´Ï´Ù.

ÀÚ, ±×·³ ¼­ºí¸´ÀÌ ¾ÖÇø´°ú ºñ½ÁÇÑ °ÍÀ̶ó´Â °ÍÀº ¾Ë°Ú´Âµ¥ ±¸Ã¼ÀûÀ¸·Î ¹«¾ùÀ» ÇÏ´Â °ÍÀϱî¿ä? ¼­ºí¸´Àº WWW¸¦ ºñ·ÔÇÑ Internet»ó¿¡¼­ÀÇ ¿©·¯ °¡Áö ÇÁ·ÎÅäÄÝ¿¡ ´ëÇÑ Å¬¶óÀ̾ðÆ®ÀÇ ¿äûÀ» ó¸®ÇØ ÁÖ±â À§ÇÑ ¼­¹öÃø¿¡¼­ µ¹¾Æ°¡´Â ¾ÖÇø´À̶ó »ý°¢Çϸé ÁÁÀ» °Í °°½À´Ï´Ù. ±×·±µ¥ Çö½ÇÀûÀ¸·Î Ŭ¶óÀ̾ðÆ®ÀÇ ¿ä±¸´Â WWWÀ» »ç¿ëÇÏ¿© µé¾î¿À´Â ÀÏÀÌ ¸¹±â ¶§¹®¿¡, ÁÖ·Î »ç¿ëµÇ´Â °÷Àº CGI¸¦ ´ëüÇÏ´Â ºÎºÐÀÌ µË´Ï´Ù. ¸¸ÀÏ ÇѹøÀÌ¶óµµ CGI ÇÁ·Î±×·¥À» ÀÛ¼ºÇØ º¸½Å ºÐÀÌ ÀÖÀ¸½Ã´Ù¸é, CGI¸¦ »ç¿ëÇϸé ÈξÀ ½±°Ô °Ô½ÃÆÇÀ̳ª, ¹æ¸í·ÏµîÀÇ CGI¸¦ »ç¿ëÇؼ­ ó¸®ÇÏ´ø ÇÁ·Î±×·¥µéÀ» ÀÛ¼ºÇÏ½Ç ¼ö ÀÖÀ» °Ì´Ï´Ù.

ÀÚ, ±×·³ ¿Ö ¼­ºí¸´À¸·Î CGI¸¦ ´ëüÇÏ·Á ÇÒ±î¿ä? ¼­ºí¸´À» »ç¿ëÇÏ¸é ±âÁ¸ÀÇ C³ª, Perl¿¡ ´ëÇؼ­ °®´Â ÀåÁ¡Àº ¹«¾ùÀϱî¿ä?

¿ì¼± ¼­ºí¸´Àº ÇÁ·Î¼¼½º¸¦ »ý¼ºÇÏÁö ¾Ê°í Thread¸¦ »ý¼ºÇÕ´Ï´Ù. ÀÌ°Ç ¾ÆÁÖ Áß¿äÇÑ ÀåÁ¡ÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù. ¼­¹öÃø¿¡¼­ Ŭ¶óÀ̾ðÆ®ÀÇ ¿äûÀÌ ¿Ã ¶§¸¶´Ù ÇÁ·Î¼¼½º¸¦ »ý¼ºÇÏ´Â °ÍÀº ¸Å¿ì Å« ÀÏÀÔ´Ï´Ù .ÇÁ·Î¼¼½º´Â °¢°¢ÀÇ µ¶¸³µÈ ¸Þ¸ð¸® °ø°£À» ÇÒ´ç ¹Þ¾Æ¾ß ÇÏ°í, ¶Ç ÇÁ·Î¼¼½º³¢¸®ÀÇ ÀÛ¾÷ Àüȯµµ ¸Å¿ì Èûµì´Ï´Ù. ¸¸ÀÏ »ç¿ëÀÚÀÇ ¿äûÀÌ ¸Å¿ì ¸¹Àº ¼­¹ö¶ó¸é ¼ö¾øÀÌ ¸¹Àº ÇÁ·Î¼¼½º¸¦ µû·Î ¸¸µé¾îÁÖ¾î¾ß ÇÕ´Ï´Ù. ÀÌ´Â ¼­¹ö¿¡ ¾ÆÁÖ Å« ºÎÇϸ¦ ÁְԵǰí, ±×¸¸Å­ ¼Óµµµµ ¶³¾îÁö°Ô µË´Ï´Ù. ½ÉÇÏ¸é ¼­¹ö°¡ Áױ⵵ ÇÏÁö¿ä.( yahoo³ª ½É¸¶´Ïó·³ ¼ö¸¹Àº »ç¿ëÀÚ°¡ ¼ö¾øÀÌ ¸¹ÀÌ ÀڷḦ ¿äûÇØ º»´Ù°í »ó»óÇØ º¸½Ê½Ã¿À.) ½É¸¶´Ï³ª ¾ßÈÄ°¡ Á×Áö ¾Ê¾ÒÀ¸´Ï, »ó°ü ¾ø´Â °Í ¾Æ´Ï³Ä¶ó°í Áú¹®ÇϽŴٸé, Àú´Â º°·Î µå¸± ¸»¾¸ÀÌ ¾ø½À´Ï´Ù. ´Ù¸¸ ¸¸ÀÏ ÀÌ ±ÛÀ» ÀÐÀ¸½Ã´Â ºÐÀÌ ÀÚ½ÅÀÇ PC¸¦ ÀÌ¿ëÇؼ­ WWW¼­ºñ½º¸¦ Á¦°øÇÑ´Ù°í »ý°¢ÇØ º¸½Ê½Ã¿À. ±× ¿Ü¿¡µµ ÀÚ¹Ù·Î ÀÛ¼ºÀÌ µÈ´Ù´Â °ÍÀº, ¸¹Àº ÀåÁ¡À» °¡Áö°Ô µË´Ï´Ù. ¿ì¼± ÀÚ¹Ù´Â ¸Å¿ì ½±½À´Ï´Ù. ±âÁ¸ÀÇ C³ª C++ó·³ ¾î·Á¿î ¹®Á¦µéÀÌ ¾ø½À´Ï´Ù. ±×·¡¼­ ¾ÆÁÖ½±°Ô ÇÁ·Î±×·¥À» ÀÛ¼º ÇÒ ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù. ¶ÇÇÑ, ÀÚ¹Ù´Â Ç÷§Æû¿¡ µ¶¸³ÀûÀ̱⠶§¹®¿¡, ¾î¶°ÇÑ WebServer¿¡µµ, ¾î¶² OS¿¡¼­µµ ´Ù µ¿ÀÛ ÇÕ´Ï´Ù. ÀÌ´Â ±²ÀåÈ÷ Áß¿äÇÑ ÀåÁ¡ÀÌ µË´Ï´Ù. Çѹø ÀÛ¼ºÇÑ ÄÚµå´Â ¼öÁ¤ÀÌ ¾øÀ̵µ »ç¿ëÀÌ °¡´ÉÇϱ⠶§¹®ÀÌÁö¿ä.

±×·³, ÀÌ·¸°Ô ÁÁÀº ¼­ºí¸´À» ÀÛ¼ºÇؼ­ ½ÇÁ¦·Î »ç¿ëÇϱâ À§Çؼ­´Â ¾î¶² °ÍµéÀÌ ÇÊ¿äÇÒ±î¿ä? ³Ê¹«³ªµµ ´ç¿¬ÇÏ°Ô ÀÚ¹Ù°¡ ½ÇÇàµÉ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù.  ±×¸®°í ¼­ºí¸´À» Áö¿øÇØ ÁÖ´Â À¥¼­¹ö¸¦ ¼³Ä¡ÇÏ¿©¾ß ÇÕ´Ï´Ù. ¼ö¸¹Àº À¥¼­¹öµéÀÌ ÀÖ°ÚÁö¸¸, ÁÖ·Î ¾²ÀÌ´Â À¥¼­¹ö¿¡¼­´Â ´Ù ¼­ºí¸´ÀÌ µ¹¾Æ°©´Ï´Ù. °¡Àå ¸¹ÀÌ ¾²ÀÎ´Ù°í ¾Ë·ÁÁø apache webserver¿¡¼­µµ Àß Áö¿øÀÌ µÇ°í¿ä, Netscape Enterprize Server¿¡¼­µµ Àß µÈ´Ù°í ÇÕ´Ï´Ù. M$-Windows NT¿¡¼­ÀÇ Internet Information Server ¿¡¼­µµ Áö¿øÀÌ µË´Ï´Ù.(¹°·Ð Àú´Â Apache ¼­¹ö¸¸ ½ÇÁ¦·Î »ç¿ëÇØ º¸¾Ò½À´Ï´Ù¸¸, µÈ´Ù°í ÇÏ´õ±º¿ä. *^^* ) ¶Ç ¹«¾ùÀÌ ÇÊ¿äÇÒ±î¿ä? servletrunner°¡ ÇÊ¿äÇÕ´Ï´Ù. ÀÚ¹Ù À¥¼­¹ö¿¡¼­ ¼­ºí¸´À» »ç¿ëÇÑ´Ù¸é, ÀÚ¹ÙÀ¥¼­¹ö ÀÚü°¡ ¼­ºí¸´À» ½ÇÇà½ÃÅ°±â ¶§¹®¿¡ ¹®Á¦°¡ ¾øÁö¸¸, ´Ù¸¥ À¥¼­¹ö´Â ¾ÆÁ÷ ¼­ºí¸´À» ½ÇÇà½ÃÅ°Áö ¾Ê½À´Ï´Ù. ¼­ºí¸´º¸´Ù À¥¼­¹öµéÀÌ ¸ÕÀú ³ª¿Ô±â ¶§¹®À̶ó »ý°¢ÇÏ½Ã¸é µË´Ï´Ù. (°¡Àå º¯È­¼Óµµ°¡ ºü¸£°í, ¸¹ÀÌ »ç¿ëÇÏ´Â Apache WebServer´Â ¼­ºí¸´À» Áö¿øÇÒ °ÍÀ̶ó°í ÇÕ´Ï´Ù.) ´Ù¸¸ ÀÚ¹ÙÀ¥¼­¹ö°¡ ¾Æ´Ñ ÀÌ»óÀº servletrunner¸¦ µû·Î ¼³Ä¡ÇÏ½Ã¸é µË´Ï´Ù. ÀÌ·± °ÍµéÀº ÇöÀç ¸¹ÀÌ ³ª¿Í ÀÖ±¸¿ä, ÀÚ¼¼ÇÑ Á¤º¸´Â

http://jserv.javasoft.com/products/java-server/servlets/enviroment.html

¿¡¼­ ¾òÀ¸ ½Ç ¼ö ÀÖ½À´Ï´Ù. servletrunner´Â jsdk¿¡ º¸¸é jsdk.jarÀ̶ó´Â servlet package°¡ Àִµ¥¿ä, ±×°÷¿¡ º¸¸é, servletrunner°¡ ÀÖ½À´Ï´Ù. ÀÌ´Â ±×³É ÀÚ¹Ù·Î ÀÛ¼ºµÈ Ŭ·¡½º·Î¼­, ÇÊ¿äÇÏ¸é ½ÇÁ¦·Î java interpreter¸¦ »ç¿ëÇÏ¿©¼­ ½ÇÇà½ÃÅ°¸é µË´Ï´Ù. ÀÚ¼¼ÇÑ »ç¿ë¹ýÀº Â÷ÈÄ¿¡ ¼³¸íÇϵµ·Ï ÇÏ°í¿ä, ¿©±â¼± ±×³É ±×·± °ÍÀÌ ÀÖÀ¸¸é µÈ´Ù´Â °ÍÀ» ¾Ë°í ³Ñ¾î°¡½Ã¸é µË´Ï´Ù. (½ÇÁ¦·Î ¼­ºí¸´À» ÀÛ¼ºÇÏ°í ½ÇÇèÇØ º¼ ¶§ ¾Ë·Á µå¸®°Ú½À´Ï´Ù.) Àú´Â ÇöÀç ¼¼°¡Áö Ç÷§ÆûÀÇ ÄÄÇ»ÅÍ¿¡¼­ servletÀ» »ç¿ëÇÏ°í Àִµ¥¿ä, Çϳª´Â solaris2 ȯ°æ¿¡¼­ JWS1.0.3À» »ç¿ëÇÏ°í ÀÖ°í¿ä, ´Ù¸¥ Çϳª´Â Pentium PC¿¡¼­ RedHat5.0À» ¼³Ä¡ÇÑ ¼­¹ö¿¡¼­ jsdk¿Í jdk¸¦ »ç¿ëÇÏ°í ÀÖ±¸¿ä, ¶Ç´Ù¸¥ Çϳª´Â IBM PowerPC¿¡ AIX4.1Àε¥, J1.1.6(ibm¿¡¼­ aix4.1¿ëÀ¸·Î portingÇÑ °Í) °ú jsdk.jar¸¦ ÀÌ¿ëÇÏ¿© ¼­ºí¸´À» ÀÛ¼ºÇÏ°í ÀÖ½À´Ï´Ù.

Áö·çÇÏ°Ô º° ¾µ¸ðµµ ¾ø´Â ³»¿ë¸¸ ÁÖÀý°Å¸° °Í °°Àºµ¥, ±×·³ ÀÌÁîÀ½¿¡¼­ ½ÇÁ¦·Î Äڵ带 Çѹø ÀÛ¼ºÇØ º¸µµ·Ï ÇÏ°Ú½À´Ï´Ù. ¸ðµç ÇÁ·Î±×·¥¿¡¼­ °¡Àå ±âÃÊÀûÀÎ °ÍÀº hello world ÀÌÁö¿ä? servlet tutorialÀ» º¸¾Æµµ hello world¿¹Á¦°¡ µé¾î Àִµ¥, ¿©±â¼­µµ ±× ¿¹Á¦¸¦ »ç¿ëÇØ º¸µµ·Ï ÇÏ°Ú½À´Ï´Ù.

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

public class helloworld extends GenericServlet{
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
PrintWriter toClient = new PrintWriter(res.getOutputStream(),true);
res.setContentType("text/html");
toClient.println("<html><title> servlet example : hello world </title>");
toClient.println("<body bgcolor=#ffffff><center><BR>");
toClient.println("<h1> Hello World </h1><BR><BR>");
toClient.println("<h4> This is servlet's output </h4><BR><BR>");
toClient.println("R U feel gud?");
}
}


¿¹Á¦ 1. HelloWorld Servlet

 

ÀÚ, ¼Ò½º¸¦ ¸ðµÎ ÀÔ·ÂÇϽñ¸¿ä, (±Ü¾î´Ù ºÙÀ̼ŵµ µË´Ï´Ù. ±×·¯³ª ±×·¯¸é ¼öÁ¤ÇØ¾ß ÇÒ °ÍÀÌ ¸¹¾Æ Áö°Ô µÇ°ÚÁö¿ä?)  ÀÔ·ÂÀÌ ´Ù µÇ¾úÀ¸¸é Á÷Á¢ compileÀ» ÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù. compileÀ» Çϴµ¥ javax.servlet package¿Í javax.servlet.http package¸¦ ¸øã´Â´Ù´Â ¸Þ½ÃÁö¿Í ÇÔ²² HttpServetÀ̶ó´Â Ŭ·¡½º¸¦ ¸øã´Â´Ù´Â 3°³ÀÇ ¿¡·¯°¡ ³ª¿É´Ï±î? ±×·¸´Ù¸é ±×°ÍÀº CLASSPATH°¡ À߸ø ¼³Á¤µÇ¾î À־ÀÔ´Ï´Ù. ÀÌ °­Á´ ÀÚ¹Ù¿¡ ´ëÇÑ ±âÃÊÀûÀÎ ÀÌÇØ°¡ ÀÖÀ¸½Å ºÐµéÀ» À§ÇÑ °­Á À̹ǷÎ, ¿©±â¼­ CLASSPATHÀÇ ¼³Á¤¹ýµîÀº ¼³¸íÇÏÁö ¾Êµµ·Ï ÇÏ°Ú½À´Ï´Ù. jsdk.jarÈ­Àϸ¸ ÇÊ¿äÇѵ¥¿ä, ÀÌ ÆÄÀÏÀ» ¿©·¯ºÐÀÌ ¿øÇϽô À§Ä¡¿¡ º¹»ç ÇØ ³õÀ¸½Å ´ÙÀ½¿¡, (¸¸ÀÏ solaris2 ȯ°æÀ̳ª, Win32ȯ°æÀ̶ó¸é, ±×³É jsdk2.0À» ¼³Ä¡ÇÏ½Ã¸é µÇÁö¸¸, ±×·¸Áö ¸øÇÑ È¯°æ, ¿¹¸¦ µé¸é linux³ª, IBMÀÇ AIX ¶Ç´Â HP-UXµîÀÇ È¯°æ¿¡¼­´Â jsdk°¡ ÇöÀç portingµÈ °ÍÀÌ ¾øÀ¸¹Ç·Î, ¶ÇÇÑ portingÇÒ ÇÊ¿äÁ¶Â÷ ¾øÀ¸¹Ç·Î( ÀÚ¹Ù´Â flatform¿¡ µ¶¸³ÀûÀ̱⠶§¹®ÀÔ´Ï´Ù.), jsdk.jarÈ­Àϸ¸ º¹»ç¸¦ ÇϽðí, CLASSPATH¿¡¼­ ÁöÁ¤ÇØ ÁÖ½Ã¸é µË´Ï´Ù.

ÀÚ, ÀÌÁ¦ ´Ù½Ã ÄÄÆÄÀÏÀ» ÇØ º¸½Ê½Ã¿À. Àß µË´Ï±î? ÃàÇÏÇÕ´Ï´Ù. ±×·¸´Ù¸é ´ÙÀ½À¸·Î ³Ñ¾î°¥ ¼ö ÀÖ°Ú±º¿ä. ¸¸ÀÏ ÄÄÆÄÀÏ¿¡¼­ ¿¡·¯°¡ ³µ´Ù¸é ´Ù½Ã Çѹø À§ÀÇ ¼Ò½º¸¦ È®ÀÎÇØ º¸½Ã±¸¿ä, package¸¦ ¸øãÀ¸¸é CLASSPATH¸¦ È®ÀÎÇØ Áֽñ⠹ٶø´Ï´Ù.

´ÙÀ½À¸·Î À§ÀÇ ¿¹Á¦¸¦ ½ÇÇà½ÃÅ°±â À§ÇÑ ¹æ¹ýÀ» ¾Ë¾Æ º¸°Ú½À´Ï´Ù. JavaWebServer¸¦ »ç¿ëÇϽøé, ±×³É classÈ­ÀÏÀ» servletµð·ºÅ丮¿¡ copy¸¦ ÇÏ¸é µÇ´Âµ¥, ´ëºÎºÐÀÇ »ç¿ëÀÚµéÀÌ WebServer¸¦ µû·Î ¼³Ä¡ÇÒ ¼ö ¾øÀ¸¹Ç·Î, ¿©±â¼­´Â apache ¼­¹ö¿Í jsdk¸¦ »ç¿ëÇÏ´Â ¿¹¸¦ µéµµ·Ï ÇÕ´Ï´Ù. servletrunner¸¦ ½ÇÇà½ÃÅ°±â À§Çؼ­´Â¿ä, command line¿¡¼­

[www3:/home/bluehope]# java sun.servlet.http.HttpServer &

ÇϽøé°á°ú 1 ÀÌ Ãâ·ÂµÇ¸é¼­ ½ÇÇàÀÌ µË´Ï´Ù.
 

[www3:/home/bluehope/servlets]# java sun.servlet.http.HttpServer &
[2] 7499
[www3:/home/bluehope/servlets]# servletrunner starting with settings:
port = 8080
backlog = 50
max handlers = 100
timeout = 5000
servlet dir = ./examples
document dir = ./examples
servlet propfile = ./examples/servlet.properties


°á°ú 1. Win32 ȯ°æ¿¡¼­ÀÇ servletrunnerÀÇ ½ÇÇà ¿¹


À§ÀÇ °á°ú 1 ÀÌ ³ª¿Ô½À´Ï±î? ±×·³ ¼º°øÀûÀ¸·Î servletrunner°¡ ½ÇÇàµÈ °ÍÀÔ´Ï´Ù. servletrunner°¡ Àß ½ÇÇà µÇ¾úÀ¸´Ï±î, ÀÌÁ¦ ½ÇÁ¦·Î ¼­ºí¸´À» ½ÇÇà½ÃÄÑ º¸¾Æ¾ß ÇÏ°ÚÁö¿ä? ¸ÞÁöÁö¸¦ º¸´Ï±î ¾î¼±¸ Àú¼±¸ Çϴµ¥ port°¡ 8080À̶ó´Â ¸»ÀÌ Àֳ׿ä? ±×°ÍÀº ¹«¾ùÀϱî¿ä? ´ç¿¬ÇÏ°ÚÁö¸¸, servletrunner´Â 8080Æ÷Æ®·Î µé¾î¿À´Â ¿äû¸¸ ó¸®ÇÑ´Ù´Â ¶æÀÔ´Ï´Ù. ÀÚ ±×·³ ½ÇÁ¦·Î ¿äûÀ» Çϵµ·Ï ÇÕ´Ï´Ù. ±×·±µ¥, servletrunner°¡ ½ÇÇàÇϱâ À§Çؼ­ java¸¦ »ç¿ëÇÑ °ÍÀº ¾Ë°Ú´Âµ¥ µÚ¿¡ ºÙÀº '&' ÀÌ ¹«½¼ ¶æÀÎÁö ¸ð¸£°Ú´Ù°í¿ä? ±×°Ç º°°Å ¾Æ´Õ´Ï´Ù. unix°è¿­ÀÇ ¿î¿µÃ¼Á¦´Â multi processingÀÌ Áö¿øÀÌ µË´Ï´Ù. (¹°·Ð Áö±ÝÀº ÀÏ¹Ý PC»ó¿¡¼­µµ M$-WindowsÀÇ »ç¿ëÀ¸·Î °¡´ÉÇØ Á³Áö¸¸, ÀÌÀü¿¡´Â ±×·¸Áö ¾Ê¾ÒÁö¿ä.....) ±×·¡¼­ unix¿¡¼­´Â foreground¿¡¼­ process¸¦ ½ÇÇà½Ãų ¼öµµ ÀÖÁö¸¸ background¿¡¼­µµ process¸¦ ½ÇÇà½Ãų ¼ö ÀÖ´Â °ÍÀÌÁö¿ä. ±×¸®°í servletrunner´Â logoutÀ» ÇÏ´õ¶óµµ °è¼Ó ¼öÇàÀÌ µÇ¾î¾ß¸¸ ¿ÜºÎÀÇ Å¬¶óÀ̾ðÆ®·ÎºÎÅÍÀÇ ¿äûÀ» ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯±â À§Çؼ­ background·Î ½ÇÇà½ÃÅ°¶ó´Â Àǹ̷Π'&' ¸¦ ºÙÀÎ °ÍÀÔ´Ï´Ù. ¾Æ½Ã°ÚÁö¿ä? ¹°·Ð µµ½º¿¡¼­´Â ÀÌ·± ±â´ÉÀÌ ¾ø±¸¿ä, NT¿¡¼­´Â °è¼Ó process¸¦ ½ÇÇà½ÃÅ°´Â ¹æ¹ýÀÌ ÀÖÁö¸¸, M$-Windows¿¡¼­´Â ¾ø´Â °ÍÀ¸·Î ¾Ë°í ÀÖ½À´Ï´Ù.

ÀÚ ÀÌÁ¦, serlvetÀ» ½ÇÇà½Ãų ¸ðµç Áغñ°¡ ³¡³µ½À´Ï´Ù.

http://[
´ç½ÅÀÇ ¼­¹ö ÁÖ¼Ò]:8080/servlet/helloworld

¶ó´Â URLÀ» ºê¶ó¿ìÁ®¿¡ ÀÔ·ÂÇØ º¸½Ê½Ã¿À.

404 Not Found


¶ó´Â ¸Þ½ÃÁö°¡ ³ª¿Ã °ÍÀÔ´Ï´Ù. ÀÌ´Â helloworld¶ó´Â Ŭ·¡½º¸¦ ¿ì¸®°¡ ÀÛ¼ºÇÏ¿´Áö¸¸, ±× Ŭ·¡½º´Â servlet directory ¿¡ ÀÖÁö ¾Ê±â ¶§¹®¿¡ ³ª¿À´Â ¸Þ½ÃÁöÀÔ´Ï´Ù. servletrunner°¡ helloworld class¸¦ ¹ß°ßÇϱâ À§Çؼ­´Â servlet µð·ºÅ丮¿¡ ÀÖ¾î¾ß¸¸ ÇÕ´Ï´Ù. ¿ì¼±Àº ¸¸µé¾î ³õÀº classÈ­ÀÏÀ» ./examples¿¡ º¹»ç(¶Ç´Â À̵¿)À» ÇϽñ⠹ٶø´Ï´Ù. ±×¸®°í ´Ù½Ã Çѹø ½ÇÇà ½ÃÄÑ º¸µµ·Ï ÇÏ°Ú½À´Ï´Ù.

À̹ø¿¡´Â Á¤»óÀûÀ¸·Î µÇ¾ú°ÚÁö¿ä?

±×·³ À̹ø¿¡´Â servletrunner¿¡ °üÇؼ­ Á¶±Ý ´õ ¾Ë¾Æ º¸µµ·Ï ÇÏ°Ú½À´Ï´Ù. ±âº»ÀûÀ¸·Î ¼³Á¤µÇ¾î ÀÖ´Â °ªµéÀÌ ¾Æ´Ñ ´Ù¸¥ ¼³Á¤À¸·Î ¼­ºí¸´À» ½ÇÇà½ÃÅ°°í ½ÍÀ¸½Ã¸é servletrunnerÀÇ ¿©·¯ °¡Áö ¿É¼ÇµéÀ» »ç¿ëÇÏ½Ã¸é µË´Ï´Ù. ¿ì¼±, ³»°¡ ¿øÇÏ´Â À§Ä¡¿¡ ¼­ºí¸´ Ŭ·¡½ºµéÀ» µÎ°í ½ÍÀ¸½ÃÁÒ? ÀÌ°ÍÀº -d optionÀ» »ç¿ëÇÏ½Ã¸é ¼­ºí¸´ÀÌ ÀÖ´Â µð·ºÅ丮¸¦ ÁöÁ¤ÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù. Àú´Â Á¦ °èÁ¤¿¡ servlets¶ó´Â µð·ºÅ丮¸¦ ¸¸µé¾î¼­ »ç¿ëÇÕ´Ï´Ù. ±×¸®°í 8080Æ÷Æ®°¡ ÀÌ¹Ì »ç¿ëÁßÀÏ ¶§, (À̶§´Â À§¿¡ ¿¹1¿¡¼­ º¸ÀÎ °Í°ú´Â ´Ù¸¥ ¸Þ½ÃÁö°¡ ³ª¿É´Ï´Ù. ±× µÚ¿¡ ExceptionÀÌ ¹ß»ýÇÑ´Ù´Â ¸Þ½ÃÁö°¡ ³ª¿À°í ÇÁ·Î±×·¥ÀÌ Á¾·áµÇ°Ô µË´Ï´Ù.) ÀÌ·¯¸é ´Ù¸¥ Æ÷Æ®¸¦ »ç¿ëÇÏ¼Å¾ß ÇÕ´Ï´Ù. ±×¶§ »ç¿ëÇÏ´Â optionÀÌ -pÀÔ´Ï´Ù. ¶Ç, -s¿É¼ÇÀ» »ç¿ëÇϴµ¥¿ä, ÀÌ°ÍÀº servletÀ» initÇÒ ¶§ ÇÊ¿äÇÑ ±âº»ÀûÀÎ ¼³Á¤µéÀ» ´ã¾Æ³õ´Â ÆÄÀÏÀ» ¼³Á¤ÇÕ´Ï´Ù. ÀÌ´Â Â÷ÈÄ¿¡ ´Ù½Ã À̾߱â Çϵµ·Ï ÇÏ°í¿ä, ±×·± ¿É¼ÇµéÀ» Ç¥1¿¡ Á¤¸® ÇÏ¿´½À´Ï´Ù.

 

¿É¼Ç

±â´É

default

-b

backlog¿¡ ¿¬°áµÇ´Â Ŭ¶óÀ̾ðÆ®ÀÇ ÃÖ´ë ¿äû °¹¼ö

50

-m

ÃÖ´ë Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°á ¼ö

100

-t

packet±³È¯ÀÌ ¾øÀ» ¶§ ¿¬°áÀ» ²÷´Â ½Ã°£.

5000 ( 5 second)

-d

¼­ºí¸´ÀÌ ÀúÀåµÇ´Â µð·ºÅ丮

./examples

-s

¼­ºí¸´ ¼³Á¤ ÆÄÀÏÀÇ À§Ä¡

./examples/servlet.properties

-p

port number

8080

 
±×·³ ÀÌÁ¦ºÎÅÍ´Â À§ÀÇ ¼­ºí¸´À» Çؼ®ÇØ º¸µµ·Ï ÇÏ°Ú½À´Ï´Ù.
À§ÀÇ ¼Ò½º¸¦ º¸½Ã¸é ¿ì¼± ÇÊ¿äÇÑ classµéÀ» importÇÕ´Ï´Ù. ¿ì¸®´Â ¿©±â¼­ GenericServlet class¸¦ »ó¼Ó ¹Þ¾Æ¼­ class¸¦ ÀÛ¼ºÇÏ¿´½À´Ï´Ù. ¿©·¯ºÐ²²¼­ ¾ÕÀ¸·Î CGI¸¦ ´ëüÇϱâ À§ÇÑ servletÀ» ÀÛ¼ºÇÏ½Ç ¶§´Â ¾Æ¸¶ °ÅÀÇ´Ù HttpServlet Ŭ·¡½º¸¦ »ó¼Ó ¹ÞÀ¸¼Å¼­ ÀÛ¼ºÇÏ½Ã°Ô µÉ °Ì´Ï´Ù. ±×·¯³ª À̹ø ¿¹Á¦¿¡¼­´Â HttpServletÀÇ super classÀÎ GenericServletŬ·¡½º¸¦ »ó¼Ó¹Þ¾Æ¼­ ¼­ºí¸´À» ÀÛ¼ºÇϵµ·Ï ÇÏ°Ú½À´Ï´Ù. HttpServletŬ·¡½º¿¡ ´ëÇؼ­´Â ÀÌÈÄ¿¡ ´Ù½Ã ÀÚ¼¼È÷ °øºÎÇÏ°Ô µË´Ï´Ù. ±×·¯´Ï±î ¿©±â¼± ´ÜÁö ¼­ºí¸´À» Á¦ÀÛÇϱâ À§ÇØ »ó¼Ó¹Þ¾Æ¾ß ÇÏ´Â »óÀ§ Ŭ·¡½ºÀΰ¡º¸´Ù ¶ó°í »ý°¢ÇϽô °ÍÀÌ ÁÁÀ» µí ÇÕ´Ï´Ù. (AppletÀ» ÀÛ¼ºÇϱâ À§Çؼ­ Applet class¸¦ »ó¼Ó ¹Þ´Â °Í°ú °°Àº ÀÌÄ¡¶ó°í »ý°¢Çϸé ÁÁ°Ú½À´Ï´Ù.) Helloworld¶ó´Â ¸Þ½ÃÁö¸¦ Ŭ¶óÀ̾ðÆ®·Î Ãâ·ÂÇϱâ À§Çؼ­´Â res°´Ã¼·ÎºÎÅÍ OutputStreamÀ» ¹Þ¾Æ¿Í¼­ PrintWriter Ŭ·¡½º¸¦ ÅëÇÏ¿© Ãâ·ÂÀ» Çϵµ·Ï ÇÕ´Ï´Ù. PrintWriter Ŭ·¡½º´Â ÀÚü°¡ bufferingÀ» ÇϹǷÎ,

PrintWriter toClient = new PrintWriter(res.getOutputStream(),
true);

¸¦ »ç¿ëÇÏ¿´½À´Ï´Ù. ¹ØÁÙÄ£ ³ì»öÀÇ 'true'´Â toClient °´Ã¼¸¦ »ç¿ëÇÏ¿© Ãâ·ÂÇÏ´Â °ÍÀ» ¹Ù·Î Ãâ·ÂÇ϶ó´Â ÀǹÌÀÔ´Ï´Ù. ¸¸ÀÏ 'true' ¶ó´Â parameter¸¦ »ý·«ÇÑ »ý¼ºÀÚ¸¦ »ç¿ëÇϸé, ½ÇÁ¦·Î Ãâ·ÂÀ» Çϱâ À§Çؼ­´Â

toClient.flush();

¶ó´Â ¸Þ¼Òµå¸¦»ç¿ëÇÏ¿©¾ß¸¸ ÇÕ´Ï´Ù. ¹°·Ð ¾î¶² ¸Þ¼Òµå¸¦ »ç¿ëÇϼŵµ »ó°üÀº ¾øÁö¸¸ ±×·¡µµ Àú´Â º¸´Ù Æí¸®ÇÏ°Ô, ±×¸®°í °á°ú¸¦ ¹Ù·Î È®ÀÎÇÒ ¼ö ÀÖ´Â À§ÀÇ ¹æ¹ýÀ» ¼±È£ÇÕ´Ï´Ù.

res.setContentType(String)

À§ÀÇ ¸Þ¼Òµå´Â Ŭ¶óÀ̾ðÆ®·Î º¸³»Áö´Â ¹®¼­ÀÇ mime typeÀ» Á¤ÇØÁÖ´Â °ÍÀÔ´Ï´Ù. ¸¸ÀÏ 'text/html'ÀÌ ¾Æ´Ñ 'text/plain'À̳ª 'unknown mime'À¸·Î ¼³Á¤À» ÇϽŴٸé, ÀüÀÚÀÇ °æ¿ì¿¡ ºê¶ó¿ìÁ®´Â html tagµéÀÌ µé¾î ÀÖ´Â ¹®¼­¸¦ ±×³É ±× ¸ð½À ±×´ë·Î È­¸éÀÌ º¸¿©ÁÙ °ÍÀÌ°í, ÈÄÀÚ´Â ºê¶ó¿ìÁ®°¡ ÆÄÀÏÀ» ´Ù¿î·Îµå ÇÒ °ÍÀ̳Ĵ ¸Þ½ÃÁö¸¦ º¸³»°Ô µÉ °ÍÀÔ´Ï´Ù. ÀÌ´Â ºê¶ó¿ìÁ®°¡ unknown mime¶ó´Â mime typeÀ» ¸ð¸£±â ¶§¹®¿¡ »ç¿ëÀÚ¿¡°Ô ±× ÆÄÀÏÀ» ¾î¶»°Ô ó¸®ÇÒ °ÍÀ̳ĸ¦ ¹¯´Â °ÍÀÔ´Ï´Ù. ¿©±â´Â ¼­ºí¸´ °­Á À̹ǷÎ, mimeÀÌ ¹«¾ùÀÎÁö¿¡ ´ëÇÑ ¼³¸íÀº »ý·«Çϵµ·Ï ÇÕ´Ï´Ù. À§ÀÇ Å¬·¡½ºÀÇ ±× ¿¹´Â ÀÌ°÷('text/plain')°ú ÀÌ°÷('unknown mine') ¿¡¼­ È®ÀÎ ÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù. ±×·±µ¥ Àç¹ÌÀÖ´Â °ÍÀº InternetExplorer ¿¡¼­´Â ÀüÀÚÀÇ 'text/plain'ÀÇ °æ¿ì¸¦ ±âÁ¸ÀÇ 'text/html'°ú °°ÀÌ »ý°¢ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ¿ª½Ã IE´Â ¸¾¿¡ ¾Èµå´Â ÇൿÀ» Çϴ±º¿ä.....--;
±× ÀÌÈÄ¿¡´Â ½ÇÁ¦·Î html tagµéÀ» Ãâ·ÂÇÕ´Ï´Ù. À§¿¡¼­ »ý¼ºÇÑ toClient°´Ã¼ÀÇ println(String)¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© ½ÇÁ¦·Î tagµéÀ» client·Î Ãâ·ÂÀ» ÇÕ´Ï´Ù. ±×¸®°í Ŭ·¡½º´Â Á¾·á µË´Ï´Ù.


¨Ï 1999 Lee Min Goo, All rights are reserved Last modified 1999
If you have any question, send mail to bluehope