* ȸ¿ø°¡ÀÔ * ¾ÆÀ̵ð/ºñ¹Ð¹øÈ£ ã±â   ID PW
Last Modified : 2008.10.28

°Ô½ÃÆÇ ¿¬½À

¿¬½À¹®Á¦

(¹®Á¦ 1) JDBC ¿¡¼­ ½Ç½ÀÇÑ GetEmp.java ¼ø¼ö ¾ÖÇø®ÄÉÀ̼ÇÀ» ¼­ºí¸´À¸·Î ±¸ÇöÇϱâ

GetEmpServlet.java

package example;

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

public class GetEmpServlet extends HttpServlet {
  
  private String DB_URL;
  private String DB_USER;
  private String DB_PASSWORD;

  public void init() throws ServletException {
    //¼³Ä¡°úÁ¤¿¡¼­ ÀÚ½ÅÀÌ Á¤ÇÑ Á¤º¸¿¡ ¸Â°Ô ¹Ù²Û´Ù.
    DB_URL = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
    DB_USER = "scott";
    DB_PASSWORD = "tiger";

    try {
      //µå¶óÀ̹ö¸¦ ·ÎµùÇÕ´Ï´Ù.
      Class.forName( "oracle.jdbc.driver.OracleDriver" );
    } catch ( ClassNotFoundException e ) {
      e.printStackTrace();
    }
  }
  
  public void doGet( HttpServletRequest req, HttpServletResponse res ) 
    throws IOException, ServletException {
    res.setContentType( "text/html;charset=euc-kr" );
    PrintWriter out = res.getWriter();
    Connection con = null;
    Statement stmt = null;
    ResultSet rs = null;
    String sql = "select * from emp";
    try {
      
      //µ¥ÀÌÅͺ£À̽ºÀÇ ¿¬°áÀ» ¼³Á¤ÇÕ´Ï´Ù.
      con = DriverManager.getConnection( DB_URL, DB_USER, DB_PASSWORD );
      
      //Statement¸¦ °¡Á®¿Â´Ù.
      stmt = con.createStatement();
      
      //SQL¹®À» ½ÇÇàÇÕ´Ï´Ù.
      rs = stmt.executeQuery( sql );
      
      while( rs.next() ) {
        String empno = rs.getString(1);
        String ename = rs.getString(2);
        String job = rs.getString(3);
        String mgr = rs.getString(4);
        String hiredate = rs.getString(5);
        String sal = rs.getString(6);
        String comm = rs.getString(7);
        String depno = rs.getString(8);
        
        //°á°ú¸¦ Ãâ·ÂÇÕ´Ï´Ù.
        out.println( empno + " : " + ename + " : " + job + " : " + mgr + " : " + hiredate +
          " : " + sal + " : " + comm+" : " + depno + "<br>" );
      }

    } catch (SQLException e) {
      System.out.println( "Error Source:GetEmpServlet.java : SQLException" );
      System.out.println( "SQLState : " + e.getSQLState() );
      System.out.println( "Message : " + e.getMessage() );
      System.out.println( "Oracle Error Code : " + e.getErrorCode() );
      System.out.println( "sql : " + sql );
    } finally {
      try {
        if ( rs != null ) rs.close();
        if ( stmt != null) stmt.close();
        if ( con != null) con.close();
      } catch ( SQLException e ) {}
    }
  }
}
7369 : SMITH : CLERK : 7902 : 1980-12-17 00:00:00.0 : 800 : null : 20
7499 : ALLEN : SALESMAN : 7698 : 1981-02-20 00:00:00.0 : 1600 : 300 : 30
7521 : WARD : SALESMAN : 7698 : 1981-02-22 00:00:00.0 : 1250 : 500 : 30
7566 : JONES : MANAGER : 7839 : 1981-04-02 00:00:00.0 : 2975 : null : 20
7654 : MARTIN : SALESMAN : 7698 : 1981-09-28 00:00:00.0 : 1250 : 1400 : 30
7698 : BLAKE : MANAGER : 7839 : 1981-05-01 00:00:00.0 : 2850 : null : 30
7782 : CLARK : MANAGER : 7839 : 1981-06-09 00:00:00.0 : 2450 : null : 10
7788 : SCOTT : ANALYST : 7566 : 1987-04-19 00:00:00.0 : 3000 : null : 20
7839 : KING : PRESIDENT : null : 1981-11-17 00:00:00.0 : 5000 : null : 10
7844 : TURNER : SALESMAN : 7698 : 1981-09-08 00:00:00.0 : 1500 : 0 : 30
7876 : ADAMS : CLERK : 7788 : 1987-05-23 00:00:00.0 : 1100 : null : 20
7900 : JAMES : CLERK : 7698 : 1981-12-03 00:00:00.0 : 950 : null : 30
7902 : FORD : ANALYST : 7566 : 1981-12-03 00:00:00.0 : 3000 : null : 20
7934 : MILLER : CLERK : 7782 : 1982-01-23 00:00:00.0 : 1300 : null : 10

¿øÇÏ´Â °á°ú°¡ ³ª¿ÀÁö ¾ÊÀ» ¶§ üũ ¸®½ºÆ®

  • web.xml ÆÄÀÏ¿¡¼­ ¼­ºí¸´ ¸ÅÇÎ
  • /WEB-INF/classes ¿¡ GetEmp ¹ÙÀÌÆ®ÄÚµå Á¸Àç¿©ºÎ
  • /WEB-INF/lib ¿¡ ojdbc14.jar Á¸Àç¿©ºÎ
  • À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÌ ·ÎµåµÇ¾ú´ÂÁö È®ÀÎ
  • ÅèĹ ·Î±ë ¸Þ½ÃÁö

(¹®Á¦ 2) À§ ¼­ºí¸´À» JSP·Î ±¸ÇöÇϱâ

getEmp1.jsp

<%@ page contentType="text/html;charset=euc-kr" %>
<%@ page import="java.sql.*" %>
<%
  String DB_URL = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
  String DB_USER = "scott";
  String DB_PASSWORD = "tiger";
  
  //¼³Ä¡°úÁ¤¿¡¼­ ÀÚ½ÅÀÌ Á¤ÇÑ Á¤º¸¿¡ ¸Â°Ô ¹Ù²Û´Ù.
  try {
    //µå¶óÀ̹ö¸¦ ·ÎµùÇÕ´Ï´Ù.
    Class.forName( "oracle.jdbc.driver.OracleDriver" );
  } catch ( ClassNotFoundException e ) {
    e.printStackTrace();
  }

  Connection con = null;
  Statement stmt = null;
  ResultSet rs = null;

  String sql = "select * from emp";
  
  try {
    //µ¥ÀÌÅͺ£À̽ºÀÇ ¿¬°áÀ» ¼³Á¤ÇÕ´Ï´Ù.
    con = DriverManager.getConnection( DB_URL, DB_USER, DB_PASSWORD );
    
    //Statement¸¦ °¡Á®¿Â´Ù.
    stmt = con.createStatement();

    //SQL¹®À» ½ÇÇàÇÕ´Ï´Ù.
    rs = stmt.executeQuery( sql );

    while( rs.next() ) {
      String empno = rs.getString(1);
      String ename = rs.getString(2);
      String job = rs.getString(3);
      String mgr = rs.getString(4);
      String hiredate = rs.getString(5);
      String sal = rs.getString(6);
      String comm = rs.getString(7);
      String depno = rs.getString(8);
      
      //°á°ú¸¦ Ãâ·ÂÇÕ´Ï´Ù.
      out.println( empno + " : " + ename + " : " + job + " : " + mgr + " : " + hiredate +
        " : " + sal + " : " + comm + " : " + depno + "<br>" );
    }

  } catch ( SQLException e ) {
      System.out.println( "Error Source:GetEmp1.jsp : SQLException" );
      System.out.println( "SQLState : " + e.getSQLState() );
      System.out.println( "Message : " + e.getMessage() );
      System.out.println( "Oracle Error Code : " + e.getErrorCode() );
      System.out.println( "sql : " + sql );
  } finally {
    try {
      if ( rs != null ) rs.close();
      if ( stmt != null) stmt.close();
      if ( con != null) con.close();
    } catch ( SQLException e ){}
  }
%>

¹®Á¦ 1 ¿¡¼­¿Í °°Àº °á°ú¸¦ È®ÀÎÇß½À´Ï±î?
¹®Á¦1ÀÇ ¼­ºí¸´°ú Áö±Ý JSP´Â Äڵ尡 Á¶±Ý ´Ù¸¨´Ï´Ù.
¼­ºí¸´¿¡¼­´Â init() ¸Þ¼Òµå¿¡¼­ JDBC µå¶óÀ̹ö¿¡ ´ëÇÑ ¼³Á¤À» Çß½À´Ï´Ù.
¼­ºí¸´ÀÇ ¶óÀÌÇÁ »çÀÌŬ¿¡¼­ »ìÆì º¸¾ÒµíÀÌ init() ¸Þ¼Òµå¾ÈÀÇ ³»¿ëÀº ¼­ºí¸´ÀÌ °´Ã¼È­ µÉ¶§ ´Ü Çѹø ½ÇÇàµË´Ï´Ù.
JSP¿¡¼­µµ ¼­ºí¸´ÀÇ init() ¸Þ¼Òµå¿Í °°Àº ¸Þ¼Òµå°¡ ÀÖ½À´Ï´Ù.
À̰ÍÀº ¿©·¯ºÐÀÌ Ã£¾Æ¼­ °íÄ¡½Ã±â ¹Ù¶ø´Ï´Ù.

(¹®Á¦ 3) getEmp1.jsp ¸¦ ConnectionPool À» ÀÌ¿ëÇÏ¿© ¼öÁ¤Çϱâ

getEmp2.jsp

<%@ page contentType="text/html;charset=euc-kr" %>
<%@ page import="java.sql.*, net.java_school.db.dbpool.*" %>
<jsp:useBean id="dbmgr" class="net.java_school.db.dbpool.OracleConnectionManager"
scope="application" />
<%
  Connection con = null;
  Statement stmt = null;
  ResultSet rs = null;
  String sql = "select * from emp";
  try {
    
    //µ¥ÀÌÅͺ£À̽ºÀÇ ¿¬°áÀ» ¼³Á¤ÇÕ´Ï´Ù.Ä¿³Ø¼ÇÇ® ÀÌ¿ë
    con = dbmgr.getConnection();
    
    //Statement¸¦ °¡Á®¿Â´Ù.
    stmt = con.createStatement();
    
    //SQL¹®À» ½ÇÇàÇÕ´Ï´Ù.
    rs = stmt.executeQuery( sql );
    
    while( rs.next() ) {
      String empno = rs.getString(1);
      String ename = rs.getString(2);
      String job = rs.getString(3);
      String mgr = rs.getString(4);
      String hiredate = rs.getString(5);
      String sal = rs.getString(6);
      String comm = rs.getString(7);
      String depno = rs.getString(8);
      
      //°á°ú¸¦ Ãâ·ÂÇÕ´Ï´Ù.
      out.println( empno + " : " + ename + " : " + job + " : " + mgr + " : " + hiredate + 
        " : " + sal + " : " + comm + " : " + depno + "<br>" );
    }
  } catch ( SQLException e ) {
      System.out.println( "Error Source:GetEmp2.jsp : SQLException" );
      System.out.println( "SQLState : " + e.getSQLState() );
      System.out.println( "Message : " + e.getMessage() );
      System.out.println( "Oracle Error Code : " + e.getErrorCode() );
      System.out.println( "sql : " + sql );
  } finally {
    try {
      if ( rs != null ) rs.close();
      if ( stmt != null) stmt.close();
      dbmgr.freeConnection( con );
    } catch ( SQLException e ){}
  }
%>

JDBC ÀÇ ¸¶Áö¸· °­Á¿¡ ÀÖ´Â Ä¿³Ø¼ÇÇ®¸µÀ» À§ÇÑ ¼Ò½º¸¦ Àû´çÇÑ µð·ºÅ丮¿¡ º¹»çÇÕ´Ï´Ù.
Log.java ¿¡¼­ ·Î±×ÆÄÀÏÀÌ ±â·ÏÇÏ´Â error.txt ÆÄÀÏÀ» ¼Ò½º ÆÄÀÏ´ë·Î ¸¸µì´Ï´Ù.
ConnectionManager.java ÆÄÀÏ¿¡¼­ µ¥ÀÌÅͺ£À̽º ¼³Á¤ ÆÄÀÏÀ» ¼Ò½º´ë·Î À§Ä¡½Ãŵ´Ï´Ù.
¸ðµÎ ÄÄÆÄÀÏÇÕ´Ï´Ù.
¼Ò½º ÆÄÀÏÀ» ´Ù Áö¿î ÈÄ¿¡ jar cvf connPool.jar . ¶ó´Â jar ¸í·ÉÀ¸·Î ¹­½À´Ï´Ù.
connPool.jar ÆÄÀÏÀ» WEB-INF/lib Æú´õ¿¡ º¹»çÇÕ´Ï´Ù.

(¹®Á¦ 4) À§ ÆÄÀÏÀ» ·Î±× Ŭ·¡½º(Log.java)¸¦ ÀÌ¿ëÇÏ´Â ÄÚµå·Î ¼öÁ¤Çϱâ

getEmp3.jsp

<%@ page contentType="text/html;charset=euc-kr" %>
<%@ page import="java.sql.*, net.java_school.db.dbpool.*, net.java_school.util.*" %>
<jsp:useBean id="dbmgr" class="net.java_school.db.dbpool.OracleConnectionManager" 
scope="application" />
<%
  Log log = new Log();
  Connection con = null;
  Statement stmt = null;
  ResultSet rs = null;
  String sql = "select * from emp";
  
  try {
    //µ¥ÀÌÅͺ£À̽ºÀÇ ¿¬°áÀ» ¼³Á¤ÇÕ´Ï´Ù.Ä¿³Ø¼ÇÇ® ÀÌ¿ë
    con = dbmgr.getConnection();
    
    //Statement¸¦ °¡Á®¿Â´Ù.
    stmt = con.createStatement();
    
    //SQL¹®À» ½ÇÇàÇÕ´Ï´Ù.
    rs = stmt.executeQuery( sql );
    
    while( rs.next() ) {
      String empno = rs.getString(1);
      String ename = rs.getString(2);
      String job = rs.getString(3);
      String mgr = rs.getString(4);
      String hiredate = rs.getString(5);
      String sal = rs.getString(6);
      String comm = rs.getString(7);
      String depno = rs.getString(8);
      
      //°á°ú¸¦ Ãâ·ÂÇÕ´Ï´Ù.
      out.println( empno + " : " + ename + " : " + job + " : " + mgr + " : " + hiredate + 
        " : " + sal + " : " + comm + " : " + depno + "<br>" );
    }
  } catch ( SQLException e ) {
    log.debug( "Error Source:getEmp3.jsp : SQLException" );
    log.debug( "SQLState : " + e.getSQLState() );
    log.debug( "Message : " + e.getMessage() );
    log.debug( "Oracle Error Code : " + e.getErrorCode() );
    log.debug( "Query : " + sql );
  } finally {
    try {
      if ( rs != null) rs.close();
      if ( stmt != null) stmt.close();
      dbmgr.freeConnection( con );
      log.close();
    } catch ( SQLException e ){}
  }
%>

À§ ÆÄÀÏ¿¡¼­ select * from emp ¶õ sql ¹®ÀÚ¿­À» ÀϺη¯ ¿¡·¯°¡ ³ª°Ô select * fromemp ¶ó°í °íÄ¡°í ´Ù½Ã Å×½ºÆ®Çغ¾´Ï´Ù.
·Î±×ÆÄÀÏÀº Log.java ÆÄÀÏ¿¡¼­ Á¤ÇÑ À§Ä¡¿¡ error.txt ¶õ ÆÄÀÏÀ» ³»¿ë ¾øÀÌ ¸¸µé¾î À§Ä¡½ÃÄÑ¾ß ÇÕ´Ï´Ù.
±×·¯¸é ´ÙÀ½°ú °°ÀÌ ·Î±× ÆÄÀÏ¿¡ ±â·ÏÀÌ ½×ÀÌ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.

error.txt

Sat Jun 19 14:01:58 KST 2004 : Error Source:getEmpWithPooldbg.jsp : SQLException 
Sat Jun 19 14:01:58 KST 2004 : SQLState : 42000 
Sat Jun 19 14:01:58 KST 2004 : message : ORA-00923: FROM Ű¿öµå°¡ ÀÖ¾î¾ßÇÒ °÷¿¡ ¾ø½À´Ï´Ù
Sat Jun 19 14:01:58 KST 2004 : Oracle Error Code : 923 
Sat Jun 19 14:01:58 KST 2004 : Query : select * fromemp 

¿©±â±îÁö ¿À¼Ì´Ù¸é °Ô½ÃÆÇÀ» À§ÇÑ Áغñ°¡ ´Ù µÈ °ÍÀÔ´Ï´Ù.

°Ô½ÃÆÇ ½Ç½À

1. Å×ÀÌºí »ý¼º

board.sql

-- °Ô½ÃÆÇ ¿¬½À Å×À̺í
create table board(
 boardno number primary key,
 title varchar2(200) not null,
 content varchar2(4000),
 wdate date
)
/

create sequence board_boardno_seq
start with 1
increment by 1
/

Àû´çÇÑ µð·ºÅ丮¿¡ board.sql·Î À§ ³»¿ëÀ¸·Î ¸¸µé°í scott °èÁ¤À¸·Î Á¢¼ÓÇÏ¿© (C:\¿¡ ÀúÀåÇß´Ù¸é)
@C:\board.sql
Çϸé Å×À̺í°ú ½ÃÄö½º°¡ »ý¼ºµË´Ï´Ù.

¿©±â¼­ ½Ç½ÀÇÒ °Ô½ÃÆÇÀº ±âº»ÀûÀÎ ±â´É¸¸À» ±¸ÇöÇϵµ·Ï ÇÕ´Ï´Ù.
´ÙÀ½Àº °Ô½ÃÆÇÀ» À§ÇØ ¾µ ÆÄÀÏ È帧µµ ÀÔ´Ï´Ù.

list.jsp ---> write_form.jsp ---> BoardWriter.java(¼­ºí¸´) -- DB insert ¹® ½ÇÇà
                  |                                          
                  |---> view.jsp : °Ô½Ã¹°ÀÇ ³»¿ëÀ» º¸¿©ÁØ´Ù.
                             |
                             |
                             |---> modify_form.jsp
                             |            |
                             |            |---> BoardModifier.java(¼­ºí¸´) -- DB update ¹® ½ÇÇà
                             |
                             |---> delete_confirm.jsp
                                          |
                                          |---> BoardDeleter.java(¼­ºí¸´) -- DB delete ¹® ½ÇÇà

list.jsp : °Ô½Ã¹°ÀÇ ¸ñ·ÏÀ» º¸¿©ÁÖ´Â ÆäÀÌÁö(ÆäÀÌÁöºÐÇÒ, ÆäÀÌÁö Á÷Á¢ À̵¿ ¸µÅ©, °Ë»ö ±â´ÉÀº ³ªÁß¿¡ ±¸Çö)
write_form.jsp : »õ±Û ÀÔ·Â ÆûÀ» Á¦°øÇÏ´Â È­¸é
BoardWriter.java : »õ±Û ÀÔ·ÂÀ» ó¸®ÇÏ´Â ¼­ºí¸´
view.jsp : ÇØ´ç °Ô½Ã¹°ÀÇ »ó¼¼ Á¤º¸¸¦ Ãâ·ÂÇÏ´Â ÆäÀÌÁö
modify_form.jsp : ¼öÁ¤ ÀÔ·Â Æû È­¸é
BoardModifier.java : ¼öÁ¤À» À§ÇØ ½ÇÁ¦·Î DB Å×À̺íÀ» ¼öÁ¤À» ÇàÇÏ´Â ¼­ºí¸´
delete_confirm.jsp : »èÁ¦¸¦ »ç¿ëÀÚ°¡ ¼±ÅÃÇßÀ» ¶§ »èÁ¦¸¦ Á¤¸»·Î ÇÒ °ÍÀΰ¡ È®ÀÎÇÏ´Â È­¸é
BoardDeleter.java : Å×ÀÌºí¿¡¼­ ÇØ´ç ·¹Äڵ带 »èÁ¦ÇÏ´Â ¼­ºí¸´

2. °¢°¢ÀÇ ¼Ò½º

list.jsp

<%@ page contentType="text/html;charset=euc-kr" %>
<%@ page import="java.sql.*,net.java_school.util.*,net.java_school.db.dbpool.*" %>
<jsp:useBean id="dbmgr" scope="application" 
class="net.java_school.db.dbpool.OracleConnectionManager" />
<html>
<body>
<%
  Log log = new Log();
  Connection con = null;
  PreparedStatement pstmt = null;
  ResultSet rs = null;
  String sql = null;
  try {
    con = dbmgr.getConnection();
    sql = "select boardno, title, wdate from board order by boardno desc";
    pstmt = con.prepareStatement( sql );
    rs = pstmt.executeQuery();
    while( rs.next() ) {
      int boardno = rs.getInt( "boardno" );
      String title = rs.getString( "title" );
      Date wdate = rs.getDate( "wdate" );
%>
  <a href="view.jsp?boardno=<%=boardno %>"><%= subject%>
  </a>  <%= wdate.toString() %><br>
<%
    }
  } catch( SQLException e ) {
    log.debug( "Error Source:list.jsp : SQLException" );
    log.debug( "SQLState : " + e.getSQLState() );
    log.debug( "Message : " + e.getMessage() );
    log.debug( "Oracle Error Code : " + e.getErrorCode() );
    log.debug( "Query : " + sql );
  } finally {
    try {
      if ( rs != null) rs.close();
      if ( pstmt != null) pstmt.close();
      dbmgr.freeConnection( con );
      log.close();
    } catch ( SQLException e ){}
  }
%>
<br>
<br>
<p>
<a href="write_form.jsp">»õ±Û ¾²±â</a>
</body>
</html>

write_form.jsp

<%@ page contentType="text/html;charset=euc-kr" %>
<html>
<body>
  <h1>»õ±Û ¾²±â</h1>
  <table>
  <form id="frmWrite" method="post" action="../servlet/BoardWriter">
  <tr>
    <td width="100">Á¦¸ñ</td>
    <td><input type="text" name="title" size="45"></td>
  </tr>
  <tr>
    <td width="100">º»¹®</td>
    <td><textarea name="content" rows="10" cols="60"></textarea></td>
  </tr>
  <tr>
    <td colspan="2">
      <input type="submit" value="Àü¼Û">
      <input type="reset" value="Ãë¼Ò">
    </td>
  </tr>
  </form>
  </table>
  <p>
    <a href="list.jsp">¸ñ·ÏÀ¸·Î</a>
  </p>
</body>
</html>

BoardWriter.java

package net.java_school.board;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import net.java_school.db.dbpool.*;
import net.java_school.util.*;

public class BoardWriter extends HttpServlet {
  PreparedStatement pstmt = null;
  OracleConnectionManager dbmgr = null;
  
  // ÀÔ·Â ¼ø¼­ : ½ÃÄö½º , Á¦¸ñ, ¼Ò°³±Û, º»¹®
  String sql = "insert into board values ( board_boardno_seq.nextval, ?, ?, sysdate )";
  
  public void init()  throws ServletException {
    ServletContext sc = getServletContext();
    dbmgr = (OracleConnectionManager)sc.getAttribute("dbmgr");
  }

  public void doPost( HttpServletRequest req, HttpServletResponse res ) 
    throws ServletException, IOException {
    req.setCharacterEncoding( "euc-kr" );
    Log log = new Log();
    
    String title = req.getParameter( "title" );
    String content = req.getParameter( "content" );
    
    Connection con = dbmgr.getConnection();
    
    try {
      pstmt = con.prepareStatement( sql );
      pstmt.setString( 1, title ); //Á¦¸ñ ºÎºÐ
      pstmt.setString( 2, content ); // º»ºÐ ºÎºÐ
      pstmt.executeUpdate();      // Äõ¸® ½ÇÇà
    } catch ( SQLException e ) {
      log.debug( "Error Source:BoardWriter.java : SQLException" );
      log.debug( "SQLState : " + e.getSQLState() );
      log.debug( "Message : " + e.getMessage() );
      log.debug( "Oracle Error Code : " + e.getErrorCode() );
      log.debug( "Query : " + sql );
    } finally {
      try {
        if ( pstmt != null ) pstmt.close();
        dbmgr.freeConnection( con );
        log.close();
      } catch ( SQLException e ){}
      String path = req.getContextPath();
      res.sendRedirect( path + "/list.jsp" );
    }
  }
}

view.jsp

<%@ page contentType="text/html;charset=euc-kr" import="java.sql.*, 
net.java_school.util.*,net.java_school.db.dbpool.*" %>
<jsp:useBean id="dbmgr" scope="application" 
class="net.java_school.db.dbpool.OracleConnectionManager" />
<html>
<body>
<%
  int boardno = Integer.parseInt( request.getParameter( "boardno" ) );
  Log log = new Log();
  Connection con = null;
  PreparedStatement pstmt = null;
  ResultSet rs = null;
  String sql = null;
  try {
    con = dbmgr.getConnection();
    sql = "select boardno, title, content, wdate from board where boardno=?";
    pstmt = con.prepareStatement( sql );
    pstmt.setInt(1, boardno);
    rs = pstmt.executeQuery();
    while ( rs.next() ) {
      String title = rs.getString( "title" );
      String content = rs.getString( "content" );
      Date wdate = rs.getDate( "wdate" );
%>
<%=title%></a><br>
<hr>
<%=content%><br>
<hr>
<%=wdate.toString()%><br>
<%
    }
  } catch ( SQLException e ) {
    log.debug( "Error Source:view.jsp : SQLException" );
    log.debug( "SQLState : " + e.getSQLState() );
    log.debug( "Message : " + e.getMessage() );
    log.debug( "Oracle Error Code : " + e.getErrorCode() );
    log.debug( "Query : " + sql );
  } finally {
    try {
      if ( rs != null) rs.close();
      if ( pstmt != null) pstmt.close();
      dbmgr.freeConnection( con );
      log.close();
    } catch ( SQLException e ){}
  }
%>
<form id="frmModify" method="post" action="modify_form.jsp">
  <input type="submit" value="¼öÁ¤">
  <input type="hidden" name="boardno" value="<%=boardno %>">
</form>
<form id="frmDelete" method="post" action="delete_confirm.jsp">
  <input type="submit" value="»èÁ¦">
  <input type="hidden" name="boardno" value="<%=boardno %>">
</form>
<br>
<a href="list.jsp">¸ñ·ÏÀ¸·Î</a>
</body>
</html>

modify_form.jsp

<%@ page contentType="text/html;charset=euc-kr"
import="java.sql.*,net.java_school.util.*,net.java_school.db.dbpool.*" %>
<jsp:useBean id="dbmgr" scope="application"
class="net.java_school.db.dbpool.OracleConnectionManager" />
<%
  Log log = new Log();
  int boardno = Integer.parseInt( request.getParameter( "boardno" ) );
  Connection con = null;
  PreparedStatement pstmt = null;
  ResultSet rs = null;
  String title = null;
  String content = null;
  String sql = "select subject,content from board where num =" + num;
  try {
    con = dbmgr.getConnection();
    pstmt = con.prepareStatement( sql );
    rs = pstmt.executeQuery();
    while( rs.next() ) {
      title = rs.getString( "title" );
      content = rs.getString( "content" );
    }
  } catch ( SQLException e ) {
    log.debug( "Error Source:modify_form.jsp : SQLException" );
    log.debug( "SQLState : " + e.getSQLState() );
    log.debug( "Message : " + e.getMessage() );
    log.debug( "Oracle Error Code : " + e.getErrorCode() );
    log.debug( "Query : " + sql );
  } finally {
    try {
      if ( rs != null) rs.close();
      if ( pstmt != null) pstmt.close();
      dbmgr.freeConnection( con );
      log.close();
    } catch ( SQLException e ){}
  }
%>
<html>
<body>
  <h1>±Û ¼öÁ¤</h1>
  <table>
  <form id="frmModify" method="post" action="../servlet/BoardModifier">
  <input type="hidden" name="boardno" value="<%=boardno %>">
  <tr>
    <td width="100">Á¦¸ñ</td>
    <td><input type="text" name="title" size="45" value="<%=title %>"></td>
  </tr>
  <tr>
    <td width="100">º»¹®</td>
    <td><textarea name="content" rows="10" cols="60"><%=content %></textarea></td>
  </tr>
  <tr>
    <td colspan="2">
      <input type="submit" value="Àü¼Û">
      <input type="reset" value="Ãë¼Ò">
    </td>
  </tr>
  </form>
  </table>
  <p>
    <a href="list.jsp">¸ñ·ÏÀ¸·Î</a>
  </p>
</body>
</html>

BoardModifier.java

package net.java_school.board;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import net.java_school.db.dbpool.*;
import net.java_school.util.*;

public class BoardModifier extends HttpServlet {
  
  PreparedStatement pstmt = null;
  OracleConnectionManager dbmgr = null;
  String sql = "update board set title = ?, content = ? where boardno = ?";

  public void init() throws ServletException {
    ServletContext sc = getServletContext();
    dbmgr = (OracleConnectionManager)sc.getAttribute("dbmgr");
  }

  public void doPost( HttpServletRequest req, HttpServletResponse res ) 
    throws ServletException, IOException {
    req.setCharacterEncoding( "euc-kr" );
    Log log = new Log();
    int boardno = Integer.parseInt( req.getParameter( "boardno" ) );
    String title = req.getParameter( "title" );
    String content = req.getParameter( "content" );
    Connection con = dbmgr.getConnection();
    
    try {
      pstmt = con.prepareStatement( sql );
      pstmt.setString( 1, title );   //Á¦¸ñ ºÎºÐ
      pstmt.setString( 2, content );   // º»ºÐ ºÎºÐ
      pstmt.setInt( 3, boardno );     // ½ÃÄö½º primary key
      pstmt.executeUpdate();    // Äõ¸® ½ÇÇà
    } catch ( SQLException e ) {
      log.debug( "Error Source:BoardModifier.java : SQLException" );
      log.debug( "SQLState : " + e.getSQLState() );
      log.debug( "Message : " + e.getMessage() );
      log.debug( "Oracle Error Code : " + e.getErrorCode() );
      log.debug( "Query : " + sql );
    } finally {
      try {
        if ( pstmt != null) pstmt.close();
        dbmgr.freeConnection( con );
        log.close();
      } catch ( SQLException e ){}

      String path = req.getContextPath();
      res.sendRedirect( path + "/view.jsp?boardno=" + boardno );
    }
  }
}			

delete_confirm.jsp

<%@ page contentType="text/html;charset=euc-kr"
import="java.sql.*,net.java_school.util.*,net.java_school.db.dbpool.*" %>
<jsp:useBean id="dbmgr" scope="application"
class="net.java_school.db.dbpool.OracleConnectionManager" />
<%
  Log log = new Log();
  int boardno = Integer.parseInt(request.getParameter( "boardno" ) );
  Connection con = null;
  PreparedStatement pstmt = null;
  ResultSet rs = null;
  String title = null;
  String content = null;
  String sql = "select title, content from board where boardno = " + boardno;
  try {
    con = dbmgr.getConnection();
    pstmt = con.prepareStatement( sql );
    rs = pstmt.executeQuery();
    while ( rs.next() ) {
      title = rs.getString( "title" );
      content = rs.getString( "content" );
    }
  } catch ( SQLException e ) {
    log.debug( "Error Source:delete_confirm.jsp : SQLException" );
    log.debug( "SQLState : " + e.getSQLState() );
    log.debug( "Message : " + e.getMessage() );
    log.debug( "Oracle Error Code : " + e.getErrorCode() );
    log.debug( "Query : " + sql );
  } finally {
    try {
      if ( rs != null) rs.close();
      if ( pstmt != null) pstmt.close();
      dbmgr.freeConnection( con );
      log.close();
    } catch ( SQLException e ){}
  }
%>
<html>
<body>
  <h1>»è Á¦ È® ÀÎ</h1>
  <table>
  <form name="frmDelete" method="post" action="../servlet/BoardDeleter">
    <input type="hidden" name="boardno" value="<%=boardno%>">
  <tr>
    <td width="100">Á¦¸ñ</td>
    <td><input type="text" name="title" size="45" value="<%=title%>"></td>
  </tr>
  <tr>
    <td width="100" align="center">¼Ò°³±Û</td>
    <td><textarea name="content" rows="10" cols="60">
    <%=content%></textarea></td>
  </tr>
  <tr>
    <td colspan="2">À§ ±ÛÀ» Á¤¸»·Î »èÁ¦ÇϰڽÀ´Ï±î?</td>
  </tr>
  <tr>
    <td colspan="2">
      <input type="submit" value="»èÁ¦">
      <input type="button" value="Ãë¼Ò" onClick="javascript:history.go(-1)">
    </td>
  </tr>
  </form>
  </table>
</body>
</html>

BoardDeleter.java

package net.java_school.board;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import net.java_school.db.dbpool.*;
import net.java_school.util.*;

public class BoardDeleter extends HttpServlet {

  PreparedStatement pstmt = null;
  OracleConnectionManager dbmgr = null;
  String sql = "delete board where boardno = ?";
  
  public void init() throws ServletException {
    ServletContext sc = getServletContext();
    dbmgr = (OracleConnectionManager)sc.getAttribute("dbmgr");
  }

  public void doPost( HttpServletRequest req, HttpServletResponse res ) 
    throws ServletException, IOException {

    req.setCharacterEncoding( "euc-kr" );
    Log log = new Log();
    int boardno = Integer.parseInt( req.getParameter( "boardno" ) );
    Connection con = dbmgr.getConnection();

    try {
      pstmt = con.prepareStatement( sql );
      pstmt.setInt( 1, boardno );
      pstmt.executeUpdate();    // Äõ¸® ½ÇÇà
    } catch ( SQLException e ) {
      log.debug( "Error Source:BoardDeleter.java : SQLException" );
      log.debug( "SQLState : " + e.getSQLState() );
      log.debug( "Message : " + e.getMessage() );
      log.debug( "Oracle Error Code : " + e.getErrorCode() );
      log.debug( "Query : " + sql );
    } finally {
      try {
        if ( pstmt != null) pstmt.close();
        dbmgr.freeConnection( con );
        log.close();
      } catch ( SQLException e ){}
      
      String path = req.getContextPath();
      res.sendRedirect( path + "/list.jsp" );
    }
  }
}