·Î±×ÀÎ | ȸ¿ø°¡ÀÔ (´º½º·¹ÅͽÅû) | SITEMAP
   
  °³¹ß   Ç÷§Æû   ½Ã½ºÅÛ   ¸Å´ÏÁö¸ÕÆ®   Àüü±â»ç  
ÀÚ¹Ù
´å³Ý
C/C++
DB
¸ðµ¨¸µ
À¥°³¹ß
±âŸ
À¯´Ð½º/¸®´ª½º
À©µµ¿ì
±âŸ
¼­¹ö
³×Æ®¿öÅ©
º¸¾È
±âŸ
BM
PM
±âŸ
 
±â»çÀúÀå
0
 
¸¶ÀÌ ½ºÅ©·¦
¼­ºí·¿ + JDBC ¿¬µ¿½Ã ÄÚµù °í·Á»çÇ× ¨è

ÀÌ¿ø¿µ ( javaservice )   2002/04/17
[Áöµð³ÝÄÚ¸®¾Æ]¼­ºí·¿¿¡¼­ instance variableÀÇ °øÀ¯ -DataBase Connection-

  public class TestServlet extends HttpServlet {
    private final static String drv = "oracle.jdbc.driver.OracleDriver";
    private final static String url = "jdbc:orache:thin@210.220.251.96:1521:ORA8i";
    private final static String user = "scott";
    private final static String password = "tiger";

    private ServletContext context;
    private Connection conn = null; <--- !!!
    private Statement stmt = null; <------ !!!
    private ResultSet rs = null; <------ !!!

    public void init(ServletConfig config) throws ServletException {
      super.init(config);
      context = config.getServletContext();
      try {
        Class.forName(drv);
      }
      catch (ClassNotFoundException e) {
       throw new ServletException("Unable to load JDBC driver:"+ e.toString());
      }
    }
    public void doGet(HttpServletRequest req, HttpServletResponse res)
      throws ServletException, IOException, SQLException
    {
      String id = req.getParameter("id");
      conn = DriverManager.getConnection(url,user,password); ---- (1)
      stmt = conn.createStatement(); ---------- (2)
      rs = stmt.executeQuery("select .... where id = '" + id + "'"); ----- (3)
      while(rs.next()) { ----------- (4)
      ...... --------- (5)
      }
      rs.close(); -------- (6)
      stmt.close(); ---- (7)
      conn.close(); --- (8)
      .....
    }
}

À§¿¡¼­ À߸øµÈ °Í Áß Çϳª°¡ java.sql.Connection°ú java.sql.Statment, java.sql.ResultSetÀ» instance variable·Î »ç¿ëÇϰí ÀÖ´Ù´Â °ÍÀÌ´Ù.

ÀÌ ¼­ºí·¿Àº »ç¿ëÀÚ°¡ È¥ÀÚÀÏ °æ¿ì¿£ ¾Æ¹« ¹®Á¦°¡ ¾ø´Ù. ÇÏÁö¸¸ ¿©·¯»ç¶÷ÀÌ µ¿½Ã¿¡ ÀÌ ¼­ºí·¿À» È£ÃâÇϸé ÀÌ»óÇÑ Áõ»óÀÌ ³ªÅ¸³­´Ù. ±× ÀÌÀ¯´Â conn, stmt, rs µî°ú °°Àº referenceµéÀ» instance º¯¼ö·Î ¼±¾ðÇ߱⠶§¹®ÀÌ´Ù. ¼­ºí·¿Àº Thread·Î µ¿ÀÛÇϸç À§Ã³·³ instance º¯¼ö ¿µ¿ª¿¡ ¼±¾ðÇØ µÐ referenceµéÀº doGet(), doPost() ¸¦ ¼öÇàÇϸ鼭 °¢°¢ÀÇ ¿äûµéÀÌ µ¿½Ã¿¡ °øÀ¯ÇÏ°Ô µÈ´Ù.

¿¹¸¦ µé¾î µÎ °³ÀÇ ¿äûÀÌ ¾à°£ÀÇ ½Ã°£Â÷¸¦ µÎ°í ºñ½ÁÇÑ ¼ø°£¿¡ doGet() ¾ÈÀ¸·Î µé¾î¿Ô´Ù°í °¡Á¤ÇØ º¸ÀÚ. A¶ó´Â ¿äûÀÌ ¼øÂ÷ÀûÀ¸·Î (1), (2), (3)±îÁö ¼öÇàÇßÀ» ¶§, B¶ó´Â ¿äûÀÌ °ð¹Ù·Î doGet() ¾ÈÀ¸·Î µé¾î¿Ã ¼ö ÀÖ´Ù. B ¿ª½Ã (1), (2), (3)À» ¼öÇàÇÑ´Ù.

ÀÌÁ¦ ¿äû A ´Â (4) ¹ø°ú (5) ¹øÀ» ¼öÇàÇÏ·Á Çϴµ¥, °¡¸¸È÷ »ý°¢ÇØ º¸¸é, ¿äûB ·Î ÀÎÇØ ¿äûA¿¡ ÀÇÇØ ÇÒ´çµÆ´ø conn, stmt, rsÀÇ reference µéÀº º¯°æµÈ´Ù. °á±¹ ¿äû A´Â ¿äû BÀÇ °á°ú¸¦ °¡Áö°í ÀÛ¾÷À» ÇÏ°Ô µÈ´Ù. ¹Ý¸é ¿äû B´Â ¿äû A¿¡ ÀÇÇØ rs.next() ¸¦ ÀÌ¹Ì ¼öÇàÇ߱⠶§¹®¿¡ rs.next() ÀÇ °á°ú°¡ ÀÌ¹Ì closeµÆ´Ù´Â ¾û¶×ÇÑ °á°ú°¡ »ý±ä´Ù.

´Ù¸¥ ½¬¿î ¾ê±â·Î ¼³¸íÇØ º¸¸é, A, B µÎ»ç¶÷ÀÌ ½ÄŹ¿¡ ¾É¾Æ¼­ °¢ÀÚ ÀÚ½ÅÀÌ ÁغñÇØ ¿Â »ç°ú¸¦ Çϳª¾¿ ±ð¾Æ ½ÄŹ À§ÀÇ Á¢½Ã¿¡ ¿Ã·Á ³õ°í ³ªÁß¿¡ ¸ÔÀ¸·Á ÇÏ´Â °Í°ú µ¿ÀÏÇÏ´Ù. A¶ó´Â »ç¶÷ÀÌ ¿­½ÉÈ÷ »ç°ú¸¦ ±ð¾Æ Á¢½Ã¿¡ ´ã¾ÆµÑ ¶§, B¶ó´Â »ç¶÷ÀÌ µé¾î¿Í¼­ A°¡ ±ð¾ÆµÐ »ç°ú¸¦ ¹ö¸®°í ÀÚ½ÅÀÌ ±ðÀº »ç°ú¸¦ ´ë½Å Á¢½Ã¿¡ ´ã¾Æ µÐ´Ù.

ÀÌÁ¦ A¶ó´Â »ç¶÷Àº ÀÚ½ÅÀÌ ±ð¾Æ¼­ ´ã¾Æ µÐ °ÍÀ̶ó°í »ý°¢ÇÏ´Â »ç°ú¸¦ Á¢½Ã¿¡¼­ ¸Ô´Â´Ù. °ðÀ̾î B¶ó´Â »ç¶÷ÀÌ ÀÚ½ÅÀÇ »ç°ú¸¦ Á¢½Ã¿¡¼­ ¸Ô¾î·Á ÇÏ´Ï ÀÌ¹Ì A°¡ ¸Ô°í ³­ ÈÄÀÌ´Ù. ÀÌ´Â µÎ »ç¶÷ÀÌ Á¢½Ã¸¦ °øÀ¯Ç߱⠶§¹®¿¡ ¹ß»ýÇÏ´Â ¹®Á¦ÀÌ´Ù. ¸¶Âù°¡Áö·Î ¼­ºí·¿ÀÇ °¢ Thread´Â instance variable¸¦ °øÀ¯Çϱ⠶§¹®¿¡ µ¿ÀÏÇÑ ¹®Á¦µéÀ» ¹ß»ýÇÏ°Ô µÈ´Ù.

µû¶ó¼­ À§ÀÇ ³»¿ëÀº ÃÖ¼ÒÇÑ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤µÅ¾ß ÇÑ´Ù.

public class TestServlet extends HttpServlet {
  private final static String drv = "...";
  private final static String url = "....";
  private final static String user = "...";
  private final static String password = "...";

  private ServletContext context;

  public void init(ServletConfig config) throws ServletException {
    super.init(config);
    context = config.getServletContext();
    try {
      Class.forName(drv);
    }
    catch (ClassNotFoundException e) {
     throw new ServletException("Unable to load JDBC driver:"+ e.toString());
    }
  }
  public void doGet(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException, SQLException
  {
    Connection conn = null; <----- À̰÷À¸·Î ¿Í¾ßÁÒ..
    Statement stmt = null; <-------
    ResultSet rs = null; <---------

    String id = req.getParameter("id");
    conn = DriverManager.getConnection(url,user,password);
    stmt = conn.createStatement();
    rs = stmt.executeQuery("select ..... where id = '" + id + "'");
    while(rs.next()) {
      ......
    }
    rs.close();
    stmt.close();
    conn.close();
    .....
    }
}

JSP¿¡¼­ ¾Æ·¡Ã³·³ »ç¿ëÇÏ´Â °æ¿ì°¡ À§ÀÇ °æ¿ì¿Í µ¿ÀÏÇÑ instance º¯¼ö¸¦ °øÀ¯ÇÏ´Â °æ¿ìÀÌ´Ù.
   <%@ page session=.... import=.... contentType=........ %>
   <%!
     Connection conn = null;
     Statement stmt = null;
     ResultSet rs = null;
     String userid = null;
   %>
   <html><head></head><body>
   <%
     ........
     conn = ...
     stmt = .....

     uesrid = ......
   %>
   </body></html>

¸¶Âù°¡Áö·Î À§Çèõ¸¸ÇÑ ÀÏÀ̸ç, ¿©·¯ Thread¿¡ ÀÇÇØ °ªÀÌ º¯ÇÒ ¼ö ÀÖ´Â º¯¼öµéÀº <%! ... %>¸¦ ÀÌ¿ëÇØ ¼±¾ðÇÏ¸é ¾ÈµÈ´Ù. ÀÌó·³ instance º¯¼ö·Î »ç¿ëÇÒ °ÍÀº ´ÙÀ½°ú °°ÀÌ ±× °ªÀÌ º¯ÇÏÁö ¾Ê´Â °ªÀ̰ųª °øÀ¯º¯¼ö¿¡ ´ëÇÑ Æ¯º°È÷ °ü¸®ÇÑ »óÅ¿¡¼­ ÇØ¾ß ÇÑ´Ù.

   <%! private static final String USERID = "scott";
     private static final String PASSWORD = "tiger";
   %>

JSP¿¡¼­ÀÇ ÀÌ¿Í °°Àº À߸øµÈ À¯Çüµµ, ¾Õ¼± ¼­ºí·¿ÀÇ °æ¿ìó·³ ÀϺΠ±¹³» JSP°ü·Ã ¼­Àû¿¡¼­ ¹ß°ßµÈ´Ù. ÇØ´ç ¼­ÀûÀÇ ÀúÀÚ´Â °¡´ÉÇÑ »¡¸® °³Á¤ÆÇÀ» ÅëÇØ ½ÃÁ¤ÇØ¾ß ÇÒ °ÍÀÌ´Ù. ÇØ´ç Ã¥Àº ÃâÆÇ»ç, Ã¥ÀÇ À¯Çü, ±ÛÀÚü·Î ÃßÁ¤°Çµ¥ Ãʺ¸ÀÚ°¡ ½±°Ô ¼±ÅÃÇÒ ¹ýÇÑ Ã¥ÀÎ ¸¸Å­ ±× ÆÄ±Þ·Â°ú ¿µÇâ·ÂÀÌ ³Ê¹« Å©´Ù.

ÀÌ¿Í °°Àº ºÎºÐÀÌ ½ÇÁ¦ ÇÁ·ÎÁ§Æ®¿¡¼­ Á¸ÀçÇÏ¸é ´ëºÎºÐ ½Ã½ºÅÛ ¿ÀÇ ù³¯ Âë¿¡ ¹®Á¦¸¦ ÀνÄÇÏ°Ô µÈ´Ù. Connection reference°¡ ¾þ¾îÃÄÁö¹Ç·Î Pool¿¡ ¹ÝȯÀÌ ÀϾÁö ¾Ê°Ô µÇ°í, ÀÌ´Â "connection pool"ÀÇ °¡¿ëÇÑ ÀÚ¿øÀÌ ºÎÇϰ¡ ¾ó¸¶ ¾øÀ½¿¡µµ ºÒ±¸ÇÏ°í ¸ðÀÚ¶ó´Â Çö»óÀ¸·Î ³ªÅ¸³ª¸ç, ¶§·Ð »ç¿ëÀÚÀÇ È­¸é¿¡¼­´Â ¾û¶×ÇÑ ´Ù¸¥ »ç¶÷ÀÇ µ¥ÀÌŸ°¡ ³ªÅ¸³ª°Å³ª, SQLException ÀÌ ³ªÅ¸³­´Ù. @
href="http://www.zdnet.co.kr/develop/coding/java/article.jsp?id=48132&forum=0">¼­ºí·¿ + JDBC ¿¬µ¿½Ã ÄÚµù °í·Á»çÇ× ¨ç
µ¶ÀÚÀÇ°ß ³²±â±â (·Î±×ÀÎ ÈÄ µ¶ÀÚ ÀǰßÀ» ³²±â½Ç ¼ö ÀÖ½À´Ï´Ù.)
¾ÆÀ̵ð ºñ¹Ð¹øÈ£
 
 
[¼öÆÛ°³¹ßÀÚÀÇ ±æ ¨í] Çʼö ¾ÆÀÌ...
[¼öÆÛ°³¹ßÀÚÀÇ ±æ ¨è] ¿ëÀ» ¸¸³ª...
[¼öÆÛ°³¹ßÀÚÀÇ ±æ ¨ê] ±âº»±â ¾ø...
[¼öÆÛ°³¹ßÀÚÀÇ ±æ ¨ç] °¡½¿ÀÇ ²Þ...
[¼öÆÛ°³¹ßÀÚÀÇ ±æ ¨ì] ÇÁ·Î±×·¡¹Ö...
[¼öÆÛ°³¹ßÀÚÀÇ ±æ ¨é] ³ª´®°ú ±³...
[¼öÆÛ°³¹ßÀÚÀÇ ±æ ¨ë] »õ·Î¿î ½Ã...
'ÁÖÃãÁÖÃã ¼Ò´Ï' º¸±ÞÇü Ä·ÄÚ´õ ½ÃÀå »ï¼º ¸Í°ø¡¦À¯Æ©ºê ¸ÂÃãÇü 'VM-MX20C' [00:07:48]
ÁøÇà ·ùÁØ¿µ ±âÀÚ, Á¦ÀÛ À¯È¸Çö PD
[ZDNET ¿µ¹®¹æ¼Û]±¸±Û À¥ºê¶ó¿ìÀú '±¸±Û Å©·Ò' º£Å¸¹öÀü °ø°³ [00:01:29]
Áöµð³ÝÄÚ¸®¾Æ ¿µ»óÁ¦ÀÛÆÀ
¡°À¥ Ç¥ÁØÀº ¹«½¼!¡±¡¦IE8¿¡ ´ë...
°øÀÎÀÎÁõüÁ¦, ¿ì¸®¿¡°Ô ÀÓ¹ÚÇÑ ¹Ì...
³×À̹ö´Â ¿Ö '10´ë ÇØÄ¿'¿¡ ´ç...
[¼öÆÛ°³¹ßÀÚÀÇ ±æ ¨ç] °¡½¿ÀÇ ²Þ...
"¾×ƼºêX¿Í °øÁ¸ ¸ð»ö"¡¦±¸±Û, ...
'À§ÇÇ Àǹ«È­' ÆóÁö ºÐÀ§±â·Î¡¦
ÀÎÆ÷¹ðÅ© "IPTV ¸Þ½Ã¡ ¼­ºñ½º...
³ª¿ìÄÞ, DDoS Â÷´Ü ±â¼ú ƯÇã
¡®Àå¾ÖÀÎ À¥ Á¢±Ù¼º ¿ì¼ö±â°ü¡¯ ¼±...
°õTV, PMP ´Ù¿î·Îµå ¼­ºñ½º ...
Ä¿³Ø¼±Æ®ÄÚ¸®¾Æ, ºÐ´ç »õ »ç¹«½Ç·Î...
 
 
The Korean edition of 'ZDNet' is published under license from CNET Networks, Inc., San Francisco, CA, USA. Editorial items appearing in 'ZDNet Korea' that were originally published in the US Edition of 'ZDNet', 'CNET', and 'CNET News.com' are the copyright properties of CNET Networks, Inc. or its suppliers.
Copyright ¨Ï 2008 CNET Networks, Inc. All Rights Reserved. 'ZDNet', 'CNET' and 'CNET News.com' are trademarks of CNET Networks, Inc.