지난 시간 복습
DBCP : DataBase Connection Pool, 수 많은 사용자의 요청에 따라 Connection이 생성되어 서버가 과부하가 걸리는 상황을 예방하기 위해 미리 일정 갯수의 Connection 을 만들어 Pool 에 저장하고, 사용자의 요청이 발생하면 Connection 을 제공하고 사용자와의 연결이 종료된다면 Pool 에 반환하여 보관하는 것
<Resource
name="jdbc/noticeXe"
auth="Container"
driverClassName="oracle.jdbc.driver.OracleDriver"
type="javax.sql.DataSource"
url="jdbc:oracle:thin:@localhost:1521:xe"
username="hr"
password="123456"
loginTimeout="50"
maxActive="50"
maxIdle="20"
maxWait="5000"
testOnBorrow="true"
/>
Servers - Tomcat - context.xml 수정 - 위의 내용 추가
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="javax.sql.DataSource"%>
<%@page import="javax.naming.InitialContext"%>
<%@page import="javax.naming.Context"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>kjs</title>
</head>
<body>
<h3>usePool.jsp</h3>
<%
try{
Context initCtx=new InitialContext();
Context envCtx=(Context)initCtx.lookup("java:comp/env");
DataSource ds=(DataSource)envCtx.lookup("jdbc/noticeXe");
Connection conn=ds.getConnection();
String sql="select seq,title,content from notices";
PreparedStatement pstmt=conn.prepareStatement(sql);
ResultSet rs=pstmt.executeQuery();
while(rs.next()){
String seq=rs.getString("seq");
String title=rs.getString("title");
String content=rs.getString("content");
%>
<%=seq %> , <%=title %> , <%=content %> <br />
<%
}
rs.close();
pstmt.close();
conn.close();
}catch(Exception e){
e.printStackTrace();
}
%>
</body>
</html>