728x90

-개발환경-

IDE : Eclipse IDE for Enterprise Java Developers ver-2020-06 (4.16.0)
Tomcat : Tomcat v8.0 Server
JAVA : JAVA8
oracle : oracle 11g

-JDBC 방식으로 Oracle과 연결하기위한 기본설정-

Eclipse의 WEB-INF 의 lib 에 ojdbc6-12.1.0.1-atlassian-hosted.jar 삽입 (드라이버연결)

-DBCP방식으로 Oracle과 연결하기위한 기본설정-

Eclipse의 WEB-INF 의 lib 에 commons-dbcp-1.4.jar 삽입
Eclipse의 WEB-INF 의 lib 에 commons-pool-1.5.7.jar 삽입  (commonsDBCP드라이버 클래스)
Eclipse의 WEB-INF 의 lib 에 ojdbc6-12.1.0.1-atlassian-hosted.jar 삽입 (드라이버연결)
Eclipse의 src 에 pool.jocl 삽입

-tomcatDBCP 설정-

Eclipse의 lib 폴더에 tomcat-dbcp.jar 파일을 복사한다. ( tomcatDBCP 드라이버 클래스)
Eclipse의 META-INF 폴더에 context.xml 파일을 만든다.(데이터베이스 연결정보)
Eclipse의 WEB-INF 의 web.xml 에 필요내용작성

-context.xml-

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?xml version="1.0" encoding="UTF-8"?>
<Context>
 
    <!-- 
        name = 커넥션 풀 이름, "jdbc/"  부분은 항상 공통
        type =데이터베이스 연결에 사용하는 자바 클래스 이름, 무조건 "javax.sql.DataSource"  를 사용한다.
        auth = DBCP를 tomcat이 관리한다는 의미로 무조건"Container" 를 사용한다.
        maxActive =데이터베이스 커넥션 풀의 최대 개수 => 최대 연결 허용 개수
        maxIdle = 데이터베이스에 접속을 유지하는 데이터베이스 커넥션 풀의 최대 개수 =>
                     항상 연결을 유지하는 커넥션 풀의 개수
        maxWait = 데이터베이스에 접속하기 위해서 기다리는 최대 시간 => 
                    -1작성시, 기다림없이 바로 접속한다
        username = 사용자 계정 이름
        password =  사용자 비밀 번호
        driverClassName = 데이터베이스 드라이버 클래스 이름
        url = 데이터베이스 접속을 위한 경로
     -->
 
    <Resource
        name = "jdbc/TestDB" 
        type = "javax.sql.DataSource" 
        auth = "Container"
        maxActive = "100" 
        maxIdle = "30" 
        maxWait = "-1"
        username = "Shin" 
        password = "0000" 
        driverClassName = "oracle.jdbc.driver.OracleDriver"
        url = "jdbc:oracle:thin:@localhost:1521:xe"/>
</Context>
cs

-web.xml-

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>0331_DBCPTest</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <resource-ref>
      <description>단순설명칸) tomcat DBCP oracle Connection</description>
      <res-ref-name>jdbc/TestDB</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>
  
</web-app>
cs

-pool.jocl-(데이터베이스 연결정보)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<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="Shin"/>
        <string value="0000"/>
    </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>
 
cs

-DBCP 방식과 JDBC방식의 차이-

JDBC는 데이터베이스 커넥션 인터페이스 이다. 

DBCP는 DB커넥션을 어플리케이션 소스 내에서 제어하면서 DB풀을 가진다.

JNDI는 DB커넥션을 WAS단에서 제어하면서 서버에서 하나의 커넥션 풀을 가진다.

 

-DBUtil.java-(데이터베이스 간편연결 클래스)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package src.koreait.DbUtil;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
 
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
 
public class DBUtil {
    
    //mysql에 연결하는 Connection 을 리턴하는 메소드
    public static Connection getMysqlConnection() {
        Connection conn = null;
        try{//드라이버는 WEB-INF/lib 에 저장
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/jspam?useUnicode=true&characterEncoding=UTF-8";
            //?useUnicode=true&characterEncoding=UTF-8  테이블에 한글이 들어올경우 대비해서 설정
            conn = DriverManager.getConnection(url,"root","0000");
            System.out.println("연결 성공 :"+conn+"<br/>");
        }catch(ClassNotFoundException e){
            System.out.println("드라이버 클래스가 존재 하지 않습니다 ");
        }catch(SQLException e){
            System.out.println("데이터베이스 연결 정보가 옳바르지 않습니다 ");
        }
        return conn;
    }
    
    //Oracle에 연결하는 Connection을 리턴하는 메소드
    public static Connection getOracleConnection() {
        Connection conn = null;
        try{
            Class.forName("oracle.jdbc.driver.OracleDriver");//드라이버 로드 ,드라이버이름이 인자
            String url="jdbc:oracle:thin:@localhost:1521:xe";//1521: 포트번호 , xe:개발자테스트용버전
            conn=DriverManager.getConnection(url, "Shin""0000");//오라클 연결 얻기
        } catch (ClassNotFoundException e){
        } catch (SQLException e){
        }
        return conn;
    }
    
    //commonsDBCP를 사용해서 oracle에 연결하는 Connection을 리턴하는 메소드
    public static Connection getCommonsDBCPconnection() {
        Connection conn = null;
        try{
            //Class.forName("com.mysql.jdbc.Driver");//mysql 드라이버
            Class.forName("oracle.jdbc.driver.OracleDriver");//oracle 드라이버
            Class.forName("org.apache.commons.dbcp.PoolingDriver");//commonsDBCP드라이버 클래스를 읽어온다,드라이버 로드 
            String url="jdbc:apache:commons:dbcp:/pool";//데이터베이스 연결정보가 저장된 파일의 경로를 지정한다.
            conn=DriverManager.getConnection(url);//오라클 연결 얻기
            
        } catch (ClassNotFoundException e){
            e.printStackTrace();
        } catch (SQLException e){
            e.printStackTrace();
        }
        return conn;
    }
    
    public static Connection getTomcatDBCPConnection() {
        Connection conn = null;
        try{
            
            Context initContext = new InitialContext();
    /*         Context envContext = (Context)initContext.lookup("java:/com/env");
            DataSource dataSource = (DataSource)envContext.lookup("jdbc/TestDB"); */
            
            //위의 주석으로 처리한 2줄을 tomcat Server 7.0부터 아래와 같이 1줄로 줄여서 사용할 수 있다.
            DataSource dataSource = (DataSource)initContext.lookup("java:/comp/env/jdbc/TestDB");
            
            conn = dataSource.getConnection();
            
        }catch(Exception e){
            e.printStackTrace();
        }
        return conn;
    }
    
    //Connection을 닫아주는 메소드
        public static void close(Connection conn) {
            if(conn!= null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
}
cs

 

-요약-

 

 

-마침글-

.

'21년이전 > 국비-JSP' 카테고리의 다른 글

JSP-파일  (0) 2021.04.14
JSP-파일업로드  (0) 2021.04.14
Oracle-명령어정리  (0) 2021.03.31
Jquery- AJAX 이용  (0) 2021.03.30
Jquery-table  (0) 2021.03.30

+ Recent posts