20.03 ~ 20.08 국비교육/JSP

JSP와 데이터베이스 연동 3. ConnectionPool을 사용한 연동

찹키리 2020. 4. 28. 17:46

<Connection Pool>

 

 

 

DBCP(Database Connection Pool)에서 연동 객체를 빌려와 쓴 뒤 반납한다.

: Connection 객체는 처음 만들어질 대 많은 시스템 자원을 요구하지만, connection pool을 사용해 미리 여러 개를 만들어 놓고, 필요할 때마다 빌려쓰고 반납함으로써 즉, 객체를 재사용 함으로써 보다 효율적으로 시스템을 운용할 수 있다.

 

 

 

 

-DBCP 사용하기

 

 

 

Connection Pool의 메소드

 

 

 

 

DBCP에서 Connection 메소드를 호출한다.

 

 

 

 

마지막은 close가 아닌 반납(free)

 

 

 

 

 

<ConnectionPool과 Bean을 이용한 연동>

 

 

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
import java.util.*;
 
public class RegisterMgrPool {
    
    private DBConnectionMgr pool = null;
    
    public RegisterMgrPool() {
        try {
            pool = DBConnectionMgr.getInstance();
        } catch(Exception e) {
            System.out.println("Error: 커넥션 얻어오기 실패");
        }
    }
    
    public  Vector<RegisterBean> getRegisterList() {
        Connection con = null;
        Statement stmt = null;
        ResultSet rs = null;
        Vector<RegisterBean> vlist = new Vector<RegisterBean>();
        
        try {
            con = pool.getConnection();
            String strQuery = "select * from tblRegister";
            stmt = con.createStatement();
            rs = stmt.executeQuery(strQuery);
            while(rs.next()) {
                RegisterBean regBean = new RegisterBean();
                regBean.setId(rs.getString("id"));
                regBean.setPwd(rs.getString("pwd"));
                regBean.setName(rs.getString("name"));
                regBean.setNum1(rs.getString("num1"));
                regBean.setNum2(rs.getString("num2"));
                regBean.setEmail(rs.getString("email"));
                regBean.setPhone(rs.getString("phone"));
                regBean.setZipcode(rs.getString("zipcode"));
                regBean.setAddress(rs.getString("address"));
                regBean.setJob(rs.getString("job"));
                vlist.add(regBean);
            } // end loop
        } catch(Exception ex) {
            System.out.println("Exception" + ex);
        } finally {
            pool.freeConnection(con);
        }
        
        return vlist;
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

 

연동 객체를 얻어온 뒤 데이터를 갖고오는 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
    import = "java.util.*, chapter11.*"%>
<jsp:useBean id="regMgr" class="chapter11.RegisterMgrPool" scope = "page"></jsp:useBean>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP에서 데이터베이스 연동</title>
</head>
<body bgcolor = "#FFFFCC">
    <h2>Bean과 커넥션 풀을 사용한 데이터베이스 연동 예제</h2>
    <h3>회원정보</h3>
    <table bordercolor = "#0000ff" border = "1">
    <tr>
    <td><strong>ID</strong></td>
    <td><strong>PWD</strong></td>
    <td><strong>NAME</strong></td>
    <td><strong>NUM1</strong></td>
    <td><strong>NUM2</strong></td>
    <td><strong>EMAIL</strong></td>
    <td><strong>ZIPCODE/ADDRESS</strong></td>
    <td><strong>JOB</strong></td>
    </tr>
    <%
    Vector<RegisterBean> vlist = regMgr.getRegisterList();
    int counter = vlist.size();
    for(int i = 0; i < vlist.size(); i++) {
        RegisterBean regBean = vlist.get(i);
    
    %>
    <tr>
    <td><%= regBean.getId() %></td>
    <td><%= regBean.getPwd() %></td>
    <td><%= regBean.getName() %></td>
    <td><%= regBean.getNum1() %></td>
    <td><%= regBean.getNum2() %></td>
    <td><%= regBean.getEmail() %></td>
    <td><%= regBean.getPhone() %></td>
    <td><%= regBean.getZipcode() %>/<%= regBean.getAddress() %></td>
    <td><%= regBean.getJob() %></td>
    </tr>
    
    <%
    }
    %>
    </table><br/><br/>
    total records: <%= counter %>
</body>
</html>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

 

자바 빈에서 데이터를 갖고와 출력하는 뷰 페이지