http://ezbuilder.tistory.com/93
[JSP] MySQL + JSP로 DB연결하여 결과 가져오기
1. MySQL 5.x용 JDBC 드라이버
mysql-connector-java-5.1.25-bin.jar
2. viewMemberList.jsp
---------------------------------------------------------------
<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>회원 목록</title>
</head>
<body>
<caption>Member 테이블의 내용</caption>
<table width="100%" border="1">
    <thead>
        <tr>
            <th>이름</th>
            <th>아이디</th>
            <th>이메일</th>
        </tr>
    </thead>
    <tbody>
    <%
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        
        try{
            String jdbcDriver = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8";
            String dbUser = "test";
            String dbPwd = "test";
            conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPwd);
            
            pstmt = conn.prepareStatement("select * from ez_member");
rs = pstmt.executeQuery();
            while(rs.next()){
    %>
        <tr>
            <td><%= rs.getString("name") %></td>
            <td><%= rs.getString("id") %></td>
            <td><%= rs.getString("email") %></td>
        </tr>
    <%
            }
        }catch(SQLException se){
            se.printStackTrace();
        }finally{
            if(rs != null) rs.close();
            if(pstmt != null) pstmt.close();
            if(conn != null) conn.close();
        }
    %>
    </tbody>
</table>
</body>
</html>
---------------------------------------------------------------
http://ezbuilder.tistory.com/94
[JSP] MySQL jdbcDriver 자동로드 및 트랜잭션 처리하기.
1. MySQL JdbcDriver 자동로드시키기 위해 아래와 같이 web.xml 파일에 추가한다.
---------------------------------------------------------------
  <servlet>
     <servlet-name>jdbcDriver</servlet-name>
     <servlet-class>utility.DriverLoader</servlet-class>
     <init-param>
         <param-name>jdbcDriver</param-name>
         <param-value>com.mysql.jdbc.Driver</param-value>
     </init-param>    
  <load-on-startup>1</load-on-startup>
  </servlet>
---------------------------------------------------------------
2. MySQL 트랜잭션 처리하기
test.jsp
---------------------------------------------------------------
try{
    String jdbcDriver = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8";
    String dbUser = "test";
    String dbPwd = "test";
conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPwd);
    // 트랜잭션 시작
    conn.setAutoCommit(false);
    pstmt = conn.prepareStatement("insert into item_1 values (?)");
    pstmt.setInt(1, 10);
    pstmt.executeUpdate();
    pstmt = conn.prepareStatement("insert into item_2 values (?)");
    pstmt.setInt(1, 100);
    pstmt.executeUpdate();
     // 트랜잭션 작동여부 확인을 위한 예외오류 발생시키기
    if(request.getParameter("error") != null){
        throw new Exception("예외 발생!");
    }
    // 트랜잭션 종료
    conn.commit}catch(Throwable e){
    if(conn != null){
        try{
            // 오류발생시 롤백
            conn.rollback();
        }catch(SQLException se){}
    }
 }finally{
    if(pstmt != null) pstmt.close();
    if(conn != null) conn.close();
} 
---------------------------------------------------------------
http://ezbuilder.tistory.com/95
[JSP] DBCP를 이용한 커넥션 풀(Connection Pool) 사용하기.
1. 필수 jar 파일( WEB-INF > lib 폴더에 복사)
2. 이클립스에서 pool.jocl 파일 작성하기(경로 : src > pool.jocl)
:: MySQL ::
---------------------------------------------------------------
<object class="org.apache.commons.dbcp.PoolableConnectionFactory" xmlns="http://apache.org/xml/xmlns/jakarta/commons/jocl">
    <object class="org.apache.commons.dbcp.DriverManagerConnectionFactory">
        <string value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8"/>
        <string value="test"/>
        <string value="test"/>
    </object>
   <object class="org.apache.commons.pool.impl.GenericObjectPool">
       <object class="org.apache.commons.pool.PoolableObjectFactory" null="true" />
   </object>
<object class="org.apache.commons.pool.KeyedObjectPoolFactory" null="true"/>
<string null="true"/>
<boolean value="false"/>
    <boolean value="true"/>
</object>
---------------------------------------------------------------
:: Oracle ::
---------------------------------------------------------------
<object class="org.apache.commons.dbcp.PoolableConnectionFactory" xmlns="http://apache.org/xml/xmlns/jakarta/commons/jocl">
    <object class="org.apache.commons.dbcp.DriverManagerConnectionFactory">
        <string value="jdbc:oracle:thin:@localhost:1521:XE"/>
        <string value="test"/>
        <string value="test"/>
    </object>
    <object class="org.apache.commons.pool.impl.GenericObjectPool">
         <object class="org.apache.commons.pool.PoolableObjectFactory" null="true" />
    </object>
<object class="org.apache.commons.pool.KeyedObjectPoolFactory" null="true"/>
<string null="true"/>
<boolean value="false"/>
<boolean value="true"/>
</object>
---------------------------------------------------------------
3. 커넥션 풀 초기화(경로 : src > DBCPInit.java)
---------------------------------------------------------------
import java.util.StringTokenizer;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
public class DBCPInit extends HttpServlet{
    @Override
    public void init(ServletConfig config) throws ServletException {
        try{
            String drivers = config.getInitParameter("jdbcDriver");
            StringTokenizer st = new StringTokenizer(drivers, ",");
            while(st.hasMoreTokens()){
                String jdbcDriver = st.nextToken();
                Class.forName(jdbcDriver);
            }
Class.forName("org.apache.commons.dbcp.PoolingDriver");
        }catch(Exception e){
            throw new ServletException(e);
        }
}
}
---------------------------------------------------------------
4. web.xml파일에 DBCPInit 등록하기
---------------------------------------------------------------
<servlet>
    <servlet-name>DBCPInit</servlet-name>
    <servlet-class>DBCPInit</servlet-class>
    <init-param>
        <param-name>jdbcDriver</param-name>
        <param-value>com.mysql.jdbc.Driver</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
---------------------------------------------------------------
5. 커넥션 풀 사용하기
:: test.jsp ::
---------------------------------------------------------------
<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>회원 목록</title>
</head>
<body>
<caption>Member 테이블의 내용</caption>
<table width="100%" border="1">
    <thead>
        <tr>
            <th>이름</th>
            <th>아이디</th>
            <th>이메일</th>
        </tr>
    </thead>
    <tbody>
    <%
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        
        try{
            String jdbcDriver = "jdbc:apache:commons:dbcp:/pool";
        
            conn = DriverManager.getConnection(jdbcDriver);
        
            pstmt = conn.prepareStatement("select * from ez_member");
rs = pstmt.executeQuery();
             while(rs.next()){
    %>
        <tr>
            <td><%= rs.getString("name") %></td>
            <td><%= rs.getString("id") %></td>
            <td><%= rs.getString("email") %></td>
        </tr>
    <%
            }
        }catch(SQLException se){
            se.printStackTrace();
        }finally{
            if(rs != null) rs.close();
            if(pstmt != null) pstmt.close();
            if(conn != null) conn.close();
        }
    %>
    </tbody>
</table>
</body>
</html>
---------------------------------------------------------------


