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

DataSource

Áö±Ý±îÁö °³¹ßÀÚ°¡ ±¸ÇöÇÑ Ä¿³Ø¼Ç Ç®¸µ °ü¸® Ŭ·¡½º¸¦ ÀÌ¿ëÇÑ JDBC ÇÁ·Î±×·¡¹ÖÀ» ÇÏ¿´½À´Ï´Ù.
JDBC 2.0 ºÎÅÍ javax.sql.DataSource ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÏ¿© ÄÁÅ×À̳ʰ¡ °ü¸®ÇÏ´Â Ä¿³Ø¼Ç Ç®¸µ Ŭ·¡½º¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ°Ô µÇ¾ú½À´Ï´Ù.
Áö±ÝºÎÅÍ´Â DataSource ¸¦ »ç¿ëÇϱâ À§ÇÑ ¼³Á¤°ú ÇÁ·Î±×·¡¹Ö ¿¹¸¦ ¼³¸íÇÕ´Ï´Ù.

ÅèĹ¿¡¼­ DataSource ¼³Á¤

¿ì¼± ¿ì¸®ÀÇ À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÌ Use Naming ¼³Á¤ÀÌ True À̾î¾ß ÇÕ´Ï´Ù.
È®ÀÎÇÑ ÈÄ ÅèĹ admin ÅøÀ» ÀÌ¿ëÇØ¼­ ¾Æ·¡ ±×¸²¿¡ Á¦½ÃÇÑ ´ë·Î ÀÛ¾÷À» ÁøÇàÇÕ´Ï´Ù. DataSource ¼³Á¤
DataSource ¼³Á¤
DataSource ¼³Á¤
À§ ±×¸²Ã³·³ ¼³Á¤ ÈÄ server.xml ÆÄÀÏÀ» ¿­¾î admin ÅøÀÌ º¯°æÀ» °¡ÇÑ ¾Æ·¡ ºÎºÐÀ» º¹»çÇÕ´Ï´Ù.

<Resource
  name="jdbc/orcl"
  type="javax.sql.DataSource"
  maxActive="4"
  maxIdle="2"
  username="scott"
  maxWait="5000"
  driverClassName="oracle.jdbc.driver.OracleDriver"
  password="tiger"
  url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>

º¹»çÇÑ À§ÀÇ ³»¿ëÀ» À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ xml ÆÄÀÏ¿¡ º¹»çÇÕ´Ï´Ù. ( ¸¸ÀÏ ROOT ¾ÖÇø®ÄÉÀ̼ÅÀ̶ó¸é ROOT.xml )
¿¹¸¦ À§ÇØ ROOT.xml ÆÄÀÏÀº ¾Æ·¡¿Í °°½À´Ï´Ù.

ROOT.xml

<?xml version="1.0" encoding="UTF-8"?>
<Context
  docBase="C:/www/jsp/project"
  reloadable="true">
  <Resource
    name="jdbc/orcl"
    type="javax.sql.DataSource"
    maxActive="4"
    maxIdle="2"
    username="scott"
    maxWait="5000"
    driverClassName="oracle.jdbc.driver.OracleDriver"
    password="tiger"
    url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>
</Context>

¸¶Áö¸·À¸·Î web.xml ÆÄÀÏ¿¡ ¾Æ·¡ Äڵ带 Ãß°¡ÇÕ´Ï´Ù.

web.xml

...

<resource-ref> 
  <description>Oracle Datasource example</description> 
  <res-ref-name>jdbc/orcl</res-ref-name> 
  <res-type>javax.sql.DataSource</res-type> 
  <res-auth>Container</res-auth> 
</resource-ref> 

...

Áö±Ý±îÁö ¸¸µç °Ô½ÃÆÇ¿¡¼­ ÀÌ¿ëÇÑ Ä¿³Ø¼Ç Ç®¸µ ±â¹ýÀº ¾î´À °³¹ßÀÚ°¡ ¸¸µç Ä¿³Ø¼Ç Ç®¸µÀ» °ü¸®Çϴ Ŭ·¡½º¸¦ ÀÌ¿ëÇÑ °ÍÀ̾ú½À´Ï´Ù.
ÀÌÁ¦ ±âÁ¸ÀÇ °Ô½ÃÆÇÀ» DataSource ¸¦ ÀÌ¿ëÇÑ °Ô½ÃÆÇÀ¸·Î ¼öÁ¤ÇÑ ÆÄÀÏÀ» Á¦°øÇϰڽÀ´Ï´Ù.
JSPÆÄÀÏ & ¼­ºí¸´
À§ ÆÄÀÏÀ» ´Ù¿î·Îµå ¹Þ¾Æ¼­ JSPÆÄÀÏÀº /board1/ µð·ºÅ丮¿¡ º¹»çÇÕ´Ï´Ù.
¼­ºí¸´Àº ÄÄÆÄÀÏÇϰí web.xml ÆÄÀÏ¿¡¼­ ¼­ºí¸´ ¸ÅÇÎÀ» Ãß°¡ÇÕ´Ï´Ù.
ÄÄÆÄÀÏÇÒ ¶§ ÅèĹȨ µð·ºÅ丮/common/lib/naming-factory-dbcp.jar ÆÄÀÏÀ» Ŭ·¡½º ÆÐ½º¿¡ Ãß°¡ÇØ ÁÖ¾î¾ß ¿¡·¯°¡ ³ªÁö ¾Ê°Ô ÄÄÆÄÀÏ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¸ðµç °úÁ¤ÀÌ ³¡³µÀ¸¸é /board1/list.jsp ¸¦ ¹æ¹®ÇÏ¿© Å×½ºÆ®ÇÕ´Ï´Ù.

list.jsp

<%@ page contentType="text/html;charset=euc-kr" %>
<%@ page import="java.sql.*,javax.sql.*,javax.naming.*,net.java_school.util.Log" %>
<html>
<head>
<script language="javascript">
  function goView(num) {
    var form = document.frmView;
    form.num.value = num;
    form.submit();
  }

  function goList( cpage ) {
    var form = document.frmList;
    form.cur_page.value = cpage;
    form.submit();
  }

  function goWrite() {
    var form = document.frmWrite;
    form.submit();
  }

</script>
</head>
<body>
<%
  Log log = new Log();

  request.setCharacterEncoding("euc-kr");
  
  // ÆÄ¶ó¹ÌÅ͸¦ ¹Þ´Â´Ù.
  int cur_page = (request.getParameter("cur_page") == null) ? 1 : 
  Integer.parseInt(request.getParameter("cur_page"));
  String keyfield = request.getParameter("keyfield");
  
  if ( keyfield == null ) keyfield="";
  String key = request.getParameter("key");
  if ( key == null ) key = "";

  DataSource ds = null;
  Context ic = null;
  Connection conn = null;
  PreparedStatement prepare = null;
  ResultSet rs = null;
  String query = null;

  try {
    ic = new InitialContext();
    ds = (DataSource)ic.lookup("java:comp/env/jdbc/orcl");
  } catch ( NamingException ne ) {
    log.debug( ne.getMessage() );
  }

  int total_record = 0; //ÃÑ µ¥ÀÌÅÍ °³¼ö¸¦ ÀúÀåÇÒ º¯¼ö

  try {
    conn = ds.getConnection();

    if ( keyfield.equals("") || key.equals("") ) {
      query = "select count(*) from board";
    } else {
      query = "select count(*) from board where " + keyfield + " like '%" + key + "%'";
    }

    prepare = conn.prepareStatement( query );
    rs = prepare.executeQuery();
    rs.next();
    total_record = rs.getInt(1);
  } catch ( SQLException e ) {
  } finally {
    try {
      if ( rs != null ) rs.close();
      if ( prepare != null) prepare.close();
      conn.close();
      //log.close();·Î±×ÆÄÀÏÀÇ ÆÄÀÏ Ãâ·Â ½ºÆ®¸²À» ¹ÝȯÇÏÁö ¾Ê´Â´Ù. 
    } catch ( SQLException e ) {}
  }

  // Ãâ·Â¸®½ºÆ®  ½ÃÀÛ ·¹ÄÚµå °è»ê  
  int start = (cur_page - 1) * 10 + 1;
  // Ãâ·Â¸®½ºÆ®  ¸¶Áö¸· ·¹ÄÚµå °è»ê
  int end = start + 10 -1;

  // ÇØ´ç ÆäÀÌÁöÀÇ ·¹ÄÚµå ¼ÂÀ» ±¸ÇÑ ÈÄ Ãâ·ÂÇÕ´Ï´Ù.
  try {
    conn = ds.getConnection();
    if ( keyfield.equals("") || key.equals("") ) {
    query = "SELECT num,subject,wdate " + 
    "FROM(SELECT ROWNUM R, A.* FROM(" +
    "SELECT num,subject,wdate FROM board ORDER BY num DESC) A)" +
    "WHERE R BETWEEN " + start + " and " + end;
    } else {
    query = "SELECT num,subject,wdate " +
    "FROM(SELECT ROWNUM R, A.* FROM(" +
    "SELECT num,subject,wdate FROM board " + 
    "WHERE " + keyfield + " LIKE '%" + key + "%' ORDER BY num DESC) A)" +
    "WHERE R BETWEEN " + start + " and " + end;
    }
    prepare = conn.prepareStatement( query );
    rs = prepare.executeQuery();

    while( rs.next() ) {
      int num = rs.getInt( "num" );
      String subject = rs.getString( "subject" );
      Date wdate = rs.getDate( "wdate" );
%>
  <a href="javascript:goView('<%=num%>')"><%=subject%></a><%=wdate.toString()%><br>
<%
    } // while statment end 
  } catch( SQLException e ) {
    log.debug( "Error Source:board1/list.jsp : SQLException" );
    log.debug( "SQLState : " + e.getSQLState() );
    log.debug( "Message : " + e.getMessage() );
    log.debug( "Oracle Error Code : " + e.getErrorCode() );
    log.debug( "Query : " + query );
  } finally {
    try {
    if ( rs != null ) rs.close();
    if ( prepare != null) prepare.close();
    conn.close();
    log.close(); // ´õÀÌ»ó »ç¿ëÀÚ Á¤ÀÇ ·Î±×¸¦ »ç¿ëÇÏÁö ¾Ê¾Æµµ µÇ±â ¶§¹®¿¡
    } catch ( SQLException e ){}
  }
%>
<br>
<%
  // Àüü ÆäÀÌÁö(total_page)¸¦ ±¸ÇÑ´Ù. 
  int total_page = 1;
  if ( total_record != 0 ) {
    if ( ( total_record % 10 ) == 0 ) {
      total_page = ( total_record / 10 );
    } else {
      total_page = ( total_record / 10 + 1);
    }	
  }

  // ºí·Ï´ç ÆäÀÌÁö ¼ö¸¦ Á¤ÇÑ´Ù.
  int page_per_block = 7;


  // ÇöÀç ÆäÀÌÁö°¡ ¼ÓÇÑ ºí·Ï(block)À» °è»êÇÑ´Ù.
  int block = 1;
  if ( ( cur_page % page_per_block ) == 0 ) {
    block = cur_page / page_per_block;
  } else {
    block = cur_page / page_per_block + 1;
  }

  // ºí·Ï¿¡¼­ ¸µÅ©ÇÒ Ã¹¹øÂ° ÆäÀÌÁö¿Í ¸¶Áö¸· ÆäÀÌÁö¸¦ °è»êÇÑ´Ù. 
  int first_page = ( block - 1 ) * page_per_block + 1;
  int last_page = block * page_per_block;

  // ÃÑ ºí·Ï¼ö¸¦ °è»êÇÑ´Ù. 
  int total_block = 1; 
  if ( (total_page % page_per_block ) == 0 ) {
    total_block = total_page / page_per_block;
  } else {
    total_block = total_page / page_per_block + 1;
  }

  // ¾µµ¥¾ø´Â ÆäÀÌÁö ¸µÅ©¸¦ ¸¸µéÁö ¾Ê±â À§Çؼ­
  if ( block >= total_block ) {
    last_page = total_page;
  }
  // ÇöÀç block > 1 ¸é [ÀÌÀü]¸µÅ©¸¦ ¸¸µé°í first_page - 1 ÆäÀÌÁö¹øÈ£·Î ¸µÅ©
  int my_page = 0;
  if ( block > 1 ) {
    my_page = first_page -1;
%>
  <a href="javascript:goList( '<%=my_page%>' )">[ÀÌÀü]</a>
<%
  } // if statment end

  // ·çÇÁ¹®À» ÀÌ¿ëÇØ¼­ ù¹øÂ° ÆäÀÌÁöºÎÅÍ ¸¶Áö¸· ÆäÀÌÁö±îÁö ¸µÅ©¸¦ ¸¸µç´Ù. 
  for ( int i = first_page; i <= last_page; i++ ) {
%>
  <a href="javascript:goList( '<%=i%>' )">[<%=i%>]</a>
<%
  } // for statment end

  // block < total_block ¸é [´ÙÀ½]¸µÅ©¸¦ ¸¸µé°í  last_page + 1 ¸¦ ÆäÀÌÁö¹øÈ£·Î ¸µÅ© 
  if (block < total_block ) {
    my_page = last_page + 1;
%>
  <a href="javascript:goList( '<%=my_page%>' )">[´ÙÀ½]</a>
<%
  } // if statement end
%>
<br>
<form name="frmSearch" action="list.jsp" method="post">
  <select name="keyfield">
    <option value="subject" selected>Á¦¸ñ</option>
    <option value="content">³»¿ë</option>
  </select>
  <input type="text" size="10" maxlength="30" name="key" />
  <input type="submit" value="search" />
</form>

<a href="javascript:goWrite()">»õ±Û ¾²±â</a>

<form name="frmView" action="view.jsp" method="post">
  <input type="hidden" name="num" />
  <input type="hidden" name="cur_page" value="<%=cur_page%>" />
  <input type="hidden" name="keyfield" value="<%=keyfield%>" />
  <input type="hidden" name="key" value="<%=key%>" />
</form>

<form name="frmList" action="list.jsp" method="post">
  <input type="hidden" name="cur_page" />
  <input type="hidden" name="keyfield" value="<%=keyfield%>" />
  <input type="hidden" name="key" value="<%=key%>" />
</form>

<form name="frmWrite" action="write_form.jsp" method="post">
  <input type="hidden" name="cur_page" value="<%=cur_page%>" />
  <input type="hidden" name="keyfield" value="<%=keyfield%>" />
  <input type="hidden" name="key" value="<%=key%>" />
</form>

</body>
</html>

write_form.jsp

<%@ page contentType="text/html;charset=euc-kr" %>
<%
  request.setCharacterEncoding("euc-kr");
  String cur_page = request.getParameter( "cur_page" );
  String keyfield = request.getParameter( "keyfield" );
  String key = request.getParameter( "key" );
%>
<html>
<head>
<script language="javascript">

  function goList() {
    var form = document.frmList;
    form.submit();
  }

</script>
</head>
<body>

  <h1>»õ±Û ¾²±â</h1>
  <hr>

  <form name="frmWrite" method="post" action="../servlet/BoardWriter1">
    Á¦¸ñ : <input type="text" name="subject" size="45" /><br />
    º»¹® : <textarea name="content" rows="10" cols="60"></textarea><br />
    <input type="submit" value="Àü¼Û" />
    <input type="reset" value="Ãë¼Ò" /><br />
  </form>

  <input type="button" value="¸ñ·Ï" onClick="javascript:goList()">

  <form name="frmList" method="post" action="list.jsp">
    <input type="hidden" name="cur_page" value="<%=cur_page%>" />
    <input type="hidden" name="keyfield" value="<%=keyfield%>" />
    <input type="hidden" name="key" value="<%=key%>" />
  </form>

</body>
</html>

BoardWriter1.java

package net.java_school.board;

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

public class BoardWriter1 extends HttpServlet {

  PreparedStatement prepare = null;
  DataSource ds = null;

  // ÀÔ·Â ¼ø¼­ : ½ÃÄö½º , Á¦¸ñ, ¼Ò°³±Û, º»¹®
  String query = "insert into board values ( seq_board_num.nextval, ?, ?, sysdate )";

  public void init()  throws ServletException {
    try {
      Context ic = new InitialContext();
      ds = (DataSource)ic.lookup("java:comp/env/jdbc/orcl");
    } catch ( NamingException ne ) {}
  }

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

    req.setCharacterEncoding( "euc-kr" );
    Log log = new Log();

    String subject = req.getParameter( "subject" );
    String content = req.getParameter( "content" );
    Connection con = null;

    try {
      con = ds.getConnection();
      prepare = con.prepareStatement( query );
      prepare.setString( 1, subject ); //Á¦¸ñ ºÎºÐ
      prepare.setString( 2, content ); // º»ºÐ ºÎºÐ
      prepare.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 : " + query );
    } finally {
      try {
        prepare.close();
        con.close();
        log.close();
      } catch ( SQLException e ){}
      String path = req.getContextPath();
      res.sendRedirect( path + "/board1/list.jsp" );
    }
  }
}

view.jsp

<%@ page contentType="text/html;charset=euc-kr" %>
<%@ page import="java.sql.*,javax.sql.*,javax.naming.*,net.java_school.util.Log" %>
<html>
<head>
<script language="javascript">
	
  function goList() {
    var form = document.frmList;
    form.submit();
  }

  function goModify() {
    var form = document.frmModify;
    form.submit();
  }

  function goDelete() {
    var form = document.frmDelete;
    form.submit();
  }

</script>
</head>
<body>
<%
  request.setCharacterEncoding( "euc-kr" );

  // ÆÄ¶ó¹ÌÅ͸¦ ¹Þ´Â´Ù.
  int num = Integer.parseInt( request.getParameter( "num" ) );
  String cur_page = request.getParameter( "cur_page" );
  String keyfield = request.getParameter( "keyfield" );
  String key = request.getParameter( "key" );

  Log log = new Log();

  DataSource ds = null;
  Context ic = null;
  Connection conn = null;
  PreparedStatement prepare = null;
  ResultSet rs = null;
  String query = null;
	
  // Ä¿³Ø¼ÇÀ» ¾ò´Â´Ù.
  try {
    ic = new InitialContext();
    ds = (DataSource)ic.lookup("java:comp/env/jdbc/orcl");
  } catch ( NamingException ne ) {
    log.debug( ne.getMessage() );
  }

  query = "select num,subject,content,wdate from board where num = " + num;

  try {
    conn = ds.getConnection();
    prepare = conn.prepareStatement( query );
    rs = prepare.executeQuery();

    while ( rs.next() ) {
    String subject = rs.getString( "subject" );
    String content = rs.getString( "content" );
    Date wdate = rs.getDate( "wdate" );
%>
  <%=subject%></a><br>
  <hr>
  <%=content%><br>
  <hr>
  <%=wdate.toString()%><br>
<%
    } // while statement end
  } catch ( SQLException e ) {
    log.debug( "Error Source:board1/view.jsp : SQLException" );
    log.debug( "SQLState : " + e.getSQLState() );
    log.debug( "Message : " + e.getMessage() );
    log.debug( "Oracle Error Code : " + e.getErrorCode() );
    log.debug( "Query : " + query );
  } finally {
    try {
    if ( rs != null ) rs.close();
    if ( prepare != null ) prepare.close();
    conn.close();
    log.close(); // ´õÀÌ»ó »ç¿ëÀÚ Á¤ÀÇ ·Î±× ÆÄÀÏÀ» ÀÌ¿ëÇÏÁö ¾ÊÀ¸¹Ç·Î
    } catch ( SQLException e ){}
  }
%>
  <form name="frmModify" method="post" action="modify_form.jsp">
    <input type="hidden" name="num" value="<%=num%>" />
    <input type="hidden" name="cur_page" value="<%=cur_page%>" />
    <input type="hidden" name="keyfield" value="<%=keyfield%>" />
    <input type="hidden" name="key" value="<%=key%>" />
  </form>

  <form name="frmDelete" method="post" action="delete_confirm.jsp">
    <input type="hidden" name="num" value="<%=num%>" />
    <input type="hidden" name="cur_page" value="<%=cur_page%>" />
    <input type="hidden" name="keyfield" value="<%=keyfield%>" />
    <input type="hidden" name="key" value="<%=key%>" />
  </form>

  <form name="frmList" method="post" action="list.jsp">
    <input type="hidden" name="cur_page" value="<%=cur_page%>" />
    <input type="hidden" name="keyfield" value="<%=keyfield%>" />
    <input type="hidden" name="key" value="<%=key%>" />
  </form>
	
  <br />

  <input type="button" value="¸ñ·Ï" onClick="javascript:goList()" /> 
  <input type="button" value="¼öÁ¤" onClick="javascript:goModify()" />
  <input type="button" value="»èÁ¦" onClick="javascript:goDelete()" />

</body>
</html>

modify_form.jsp

<%@ page contentType="text/html;charset=euc-kr" %>
<%@ page import="java.sql.*,javax.sql.*,javax.naming.*,net.java_school.util.Log" %>
<%
  request.setCharacterEncoding( "euc-kr" );

  // ÆÄ¶ó¹ÌÅ͸¦ ¹Þ´Â´Ù.
  int num = Integer.parseInt( request.getParameter( "num" ) );
  String cur_page = request.getParameter( "cur_page" );
  String keyfield = request.getParameter( "keyfield" );
  String key = request.getParameter( "key" );

  Log log = new Log();

  DataSource ds = null;
  Context ic = null;
  Connection conn = null;
  PreparedStatement prepare = null;
  ResultSet rs = null;
  String subject = null;
  String content = null;
  String query = "select subject,content from board where num =" + num;

  // Ä¿³Ø¼ÇÀ» ¾ò´Â´Ù.
  try {
    ic = new InitialContext();
    ds = (DataSource)ic.lookup("java:comp/env/jdbc/orcl");
  } catch ( NamingException ne ) {
    log.debug( ne.getMessage() );
  }

  try {
    conn = ds.getConnection();
    prepare = conn.prepareStatement( query );
    rs = prepare.executeQuery();

    while( rs.next() ) {
      subject = rs.getString( "subject" );
      content = rs.getString( "content" );
    }
  } catch ( SQLException e ) {
    log.debug( "Error Source:board1/modify_form.jsp : SQLException" );
    log.debug( "SQLState : " + e.getSQLState() );
    log.debug( "Message : " + e.getMessage() );
    log.debug( "Oracle Error Code : " + e.getErrorCode() );
    log.debug( "Query : " + query );
  } finally {
    try {
      if ( rs != null ) rs.close();
      if ( prepare != null) prepare.close();
      conn.close();
      log.close();
    } catch ( SQLException e ){}
  }
%>
<html>
<head>
<script language="javascript">
	
  function goView() {
    var form = document.frmView;
    form.submit();
  }

</script>
</head>
<body>
  <h1>±Û ¼öÁ¤</h1>
  <hr>

  <form name="frm" method="POST" action="../servlet/BoardModifier1">
    <input type="hidden" name="num" value="<%=num%>" />
    <input type="hidden" name="cur_page" value="<%=cur_page%>" />
    <input type="hidden" name="keyfield" value="<%=keyfield%>" />
    <input type="hidden" name="key" value="<%=key%>" />
    Á¦¸ñ : <input type="text" name="subject" value="<%=subject%>" /><br />
    º»ºÐ : <textarea name="content" rows="10" cols="60"><%=content%></textarea><br />
    <input type="submit" value="Àü¼Û" />
    <input type="reset" value="Ãë¼Ò" />
  </form>

  <form name="frmView" method="post" action="view.jsp">
    <input type="hidden" name="num" value="<%=num%>" />
    <input type="hidden" name="cur_page" value="<%=cur_page%>" />
    <input type="hidden" name="keyfield" value="<%=keyfield%>" />
    <input type="hidden" name="key" value="<%=key%>" />
  </form>

  <br>

  <input type="button" value="³»¿ëº¸±â" onClick="javascript:goView()" /> 

</body>
</html>

BoardModifier1.java

package net.java_school.board;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
import net.java_school.util.Log;

public class BoardModifier1 extends HttpServlet {
  
  DataSource ds = null;
  PreparedStatement prepare = null;
  String query = "UPDATE board SET subject = ?, content = ? WHERE num = ?";

  public void init() throws ServletException {
    try {
      Context ic = new InitialContext();
      ds = (DataSource)ic.lookup("java:comp/env/jdbc/orcl");
    } catch ( NamingException ne ) {}
  }

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

    req.setCharacterEncoding("euc-kr");
    res.setContentType("text/html;charset=euc-kr");

    PrintWriter out=res.getWriter();

    Log log = new Log();

    int num = Integer.parseInt( req.getParameter( "num" ) );
    String cur_page = req.getParameter( "cur_page" );
    String keyfield = req.getParameter( "keyfield" );
    String key = req.getParameter( "key" );
    String subject = req.getParameter( "subject" );
    String content = req.getParameter( "content" );

    Connection con = null;

    try {
      con = ds.getConnection();
      prepare = con.prepareStatement( query );
      prepare.setString( 1, subject );   //Á¦¸ñ ºÎºÐ
      prepare.setString( 2, content );   // º»ºÐ ºÎºÐ
      prepare.setInt( 3, num );     // ½ÃÄö½º primary key
      prepare.executeUpdate();    // Äõ¸® ½ÇÇà
    } catch ( SQLException e ) {
      log.debug( "Error Source:BoardModifier1.java : SQLException" );
      log.debug( "SQLState : " + e.getSQLState() );
      log.debug( "Message : " + e.getMessage() );
      log.debug( "Oracle Error Code : " + e.getErrorCode() );
      log.debug( "Query : " + query );
    } finally {
      try {
      if ( prepare != null ) prepare.close();
      con.close();
      log.close();
    } catch ( SQLException e ){}
      String path = req.getContextPath();
      String formstr = "";
      formstr = "<form name=frmView method=post action="+path+"/board1/view.jsp>";
      formstr += "<input type=hidden name=num value='"+num+"' />";
      formstr += "<input type=hidden name=cur_page value='"+cur_page+"' />";
      formstr += "<input type=hidden name=keyfield value='"+keyfield+"' />";
      formstr += "<input type=hidden name=key value='"+key+"' />";
      formstr += "</form>";
      out.println(formstr);
      String scriptstr = "";
      scriptstr += "<script language=javascript>";
      scriptstr += "function goView() {";
      scriptstr += " document.frmView.submit(); }";
      scriptstr += "</script>";
      scriptstr += "<script>goView();</script>";
      log.debug(scriptstr);
      out.println(scriptstr);
    }
  }
}

delete_confirm.jsp

<%@ page contentType="text/html;charset=euc-kr" %>
<%@ page import="java.sql.*,javax.sql.*,javax.naming.*,net.java_school.util.Log" %>
<%
  Log log = new Log();

  // ÆÄ¶ó¹ÌÅ͸¦ ¹Þ´Â´Ù.
  int num = Integer.parseInt( request.getParameter( "num" ) );
  String cur_page = request.getParameter( "cur_page" );
  String keyfield = request.getParameter( "keyfield" );
  String key = request.getParameter( "key" );

  DataSource ds = null;
  Context ic = null;

  Connection conn = null;
  PreparedStatement prepare = null;
  ResultSet rs = null;
  String subject = null;
  String content = null;
  String query = "select subject,content from board where num = " + num;

  // Ä¿³Ø¼ÇÀ» ¾ò´Â´Ù.
  try {
    ic = new InitialContext();
    ds = (DataSource)ic.lookup("java:comp/env/jdbc/orcl");
  } catch ( NamingException ne ) {
    log.debug( ne.getMessage() );
  }

  try {
    conn = ds.getConnection();
    prepare = conn.prepareStatement( query );
    rs = prepare.executeQuery();

    while ( rs.next() ) {
      subject = rs.getString( "subject" );
      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 : " + query );
  } finally {
    try {
      if ( rs != null ) rs.close();
      if ( prepare != null ) prepare.close();
      conn.close();
      log.close();
    } catch ( SQLException e ){}
  }
%>
<html>
<head>
<script language="javascript">

  function goDelete() {
    var form = document.frmDelete;
    form.submit();
  }

</script>
</head>
<body>
  <h1>»è Á¦ È® ÀÎ</h1>
  <hr>
  Á¦¸ñ : <%=subject%><br />
  º»¹® : <%=content%><br />
  À§ ±ÛÀ» Á¤¸»·Î »èÁ¦ÇϰڽÀ´Ï±î?<br />
  <input type="button" value="»èÁ¦" onClick="javascript:goDelete()" />   
  <input type="button" value="Ãë¼Ò" onClick="javascript:history.go(-1)" /></td>

  <form name="frmDelete" method="post" action="../servlet/BoardDeleter1">
    <input type="hidden" name="num" value="<%=num%>" />
    <input type="hidden" name="cur_page" value="<%=cur_page%>" />
    <input type="hidden" name="keyfield" value="<%=keyfield%>" />
    <input type="hidden" name="key" value="<%=key%>" />
  </form>
</body>
</html>

BoardDeleter1.java

package net.java_school.board;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
import net.java_school.util.Log;

public class BoardDeleter1 extends HttpServlet {

  DataSource ds = null;

  PreparedStatement prepare = null;
  String query = "DELETE board WHERE num = ?";

  public void init() throws ServletException {
    try {
      Context ic = new InitialContext();
      ds = (DataSource)ic.lookup("java:comp/env/jdbc/orcl");
    } catch ( NamingException ne ) {}
  }

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

    req.setCharacterEncoding("euc-kr");
    res.setContentType("text/html;charset=euc-kr");

    PrintWriter out=res.getWriter();    

    Log log = new Log();

    int num = Integer.parseInt( req.getParameter( "num" ) );
    String cur_page = req.getParameter( "cur_page" );
    String keyfield = req.getParameter( "keyfield" );
    String key = req.getParameter( "key" );

    Connection con = null;

    try {
      con = ds.getConnection();
      prepare = con.prepareStatement( query );
      prepare.setInt( 1, num );
      prepare.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 : " + query );
    } finally {
      try {
      if ( prepare != null ) prepare.close();
      con.close();
      log.close();
      } catch ( SQLException e ){}
      String path = req.getContextPath();
      String formstr = "";
      formstr = "<form name=frmList method=post action="+path+"/board1/list.jsp>";
      formstr += "<input type=hidden name=cur_page value='"+cur_page+"' />";
      formstr += "<input type=hidden name=keyfield value='"+keyfield+"' />";
      formstr += "<input type=hidden name=key value='"+key+"' />";
      formstr += "</form>";
      out.println(formstr);
      String scriptstr = "";
      scriptstr += "<script language=javascript>";
      scriptstr += "function goList() {";
      scriptstr += " document.frmList.submit(); }";
      scriptstr += "</script>";
      scriptstr += "<script>goList();</script>";
      out.println(scriptstr);
    }
  }
}