[Áöµð³ÝÄÚ¸®¾Æ]¼ºí·¿¿¡¼ instance variableÀÇ °øÀ¯ - PrintWriter -
´ÙÀ½°ú °°Àº Äڵ尡 ÀÖ´Ù°í °¡Á¤ÇÏÀÚ.
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class CountServlet extends HttpServlet {
private PrintWriter out = null; // <-------------- (1)
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
res.setContentType("text/html");
out = res.getWriter();
for(int i=0;i<20;i++){
out.println("count= " + (i+1) + "<br>"); // <---- (2)
out.flush();
try{Thread.sleep(1000);}catch(Exception e){}
}
}
}
À§ÀÇ CountServlet.java¸¦ ÄÄÆÄÀÏÇØ µ¹·Á º¸¸é 1ÃÊ °£°ÝÀ¸·Î ÀÏ·ÃÀÇ ¼ýÀÚ°¡ ¿Ã¶ó°¡´Â °ÍÀÌ º¸ÀδÙ. ¼ºí·¿ ¿£ÁøÀÇ ±¸Çö¹æ½Ä¿¡ µû¶ó Buffering ÀÌ µÇ¾î 20Ãʰ¡ ¸ðµÎ Áö³ ´ÙÀ½¿¡¾ß ÆÜÀÌ ³ª¿Ã ¼öµµ ÀÖ´Ù.
È¥ÀÚ¼ ´ÜÀÏ Request¸¦ ³¯·Á º¸¸é ¾Æ¹«·± ¹®Á¦°¡ ¾ø°ÚÁö¸¸, ÀÌÁ¦ ºê¶ó¿ìÁ® âÀ» µÎ°³ ÀÌ»ó ¶ç¿ì°í 10ÃÊÀÇ ½Ã°£ Â÷¸¦ µÎ½Ã¸é¼ µ¿½Ã¿¡ È£ÃâÇϸé ÀÌ»óÇÑ Áõ»óÀÌ ³ªÅ¸³´Ù. ¸ÕÀú È£ÃâÇÑ Ã¢¿¡´Â 10±îÁö Á¤µµ¸¸ ³ªÅ¸³ª°í, 10ÃÊ µÚ¿¡ È£ÃâÇÑ Ã¢¿¡¼´Â ¸ÕÀú È£ÃâÇÑ Ã¢¿¡¼ ³ªÅ¸³ª¾ß ÇÒ ³»¿ë±îÁö ³ªÅ¸³´Ù.
ÀÌ´Â ¼ºí·¿ÀÇ °¢ È£ÃâÀº Thread·Î µ¿ÀÛÇØ °¢ È£ÃâÀº À§ÀÇ (1) ¿¡¼ ¼±¾ðÇÑ instance variable µéÀ» °øÀ¯Çϱ⠶§¹®¿¡ ³ªÅ¸³ª´Â ¹®Á¦ÀÌ´Ù.
À§ ºÎºÐÀº ´ÙÀ½°ú °°ÀÌ °íÃÄÁ®¾ß ÇÕ´Ï´Ù.
public class CountServlet extends HttpServlet {
//private PrintWriter out = null;
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
PrintWriter out = null; // <--- ÀÌ ÂÊÀ¸·Î ¿Í¾ßÁÒ !!!
res.setContentType("text/html");
out = res.getWriter();
for(int i=0;i<20;i++){
out.println("count= " + (i+1) + "<br>"); // <---- (2)
out.flush();
try{Thread.sleep(1000);}catch(Exception e){}
}
}
}
±¹³» ÀϺΠ¼ºí·¿ °ü·Ã ¼ÀûÀÇ ÀϺΠ¿¹Á¦¿¡¼ À§¿Í °°ÀÌ À߸øµÈ ÇüÅ·Π¼³¸íÇÑ ¼Ò½ºÄڵ尡 ¹ß°ßµÈ´Ù. ½ÇÁ¦ ÇÁ·ÎÁ§Æ® ȯ°æ¿¡¼ °³¹ßµÈ ½Ç¹« ½Ã½ºÅÛ¿¡¼µµ, ÀÌ·¯ÇÑ Ã¥À» ÅëÇØ °øºÎÇÑ °Íó·³ µ¿ÀÏÇÏ°Ô À߸øµÈ ÄÚµùÀ» Çϰí ÀÖ´Â °³¹ßÀÚ°¡ ÀÖ´Ù.
°á°úÀûÀ¸·Î Å×½ºÆ® ȯ°æ¿¡¼´Â ³ªÅ¸³ªÁö ¾Ê´õ´Ï¸¸, ¸·»ó ½Ã½ºÅÛÀ» ¿ÀÇÂÇÏ°í³ª´Ï °í°´À¸·Î ºÎÅÍ ´ÙÀ½°ú °°Àº ¼Ò¸®¸¦ µè°ÔµÈ´Ù. "´Ù¸¥ »ç¶÷ÀÇ µ¥ÀÌÅͰ¡ ³» ȸ鿡 ³ªÅ¸³ª´Â °æ¿ì°¡ °£È¤ ÀÖ´Ù. refresh¸¦ ´·¯¾ß Á¦´ë·Î ³ªÅ¸³´Ù" @