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À» ºê¶ó¿ìÁ®¿¡ ÀÔ·ÂÇØ º¸½Ê½Ã¿À.
¶ó´Â ¸Þ½ÃÁö°¡ ³ª¿Ã °ÍÀÔ´Ï´Ù. ÀÌ´Â 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
|