
Must Have 성낙현의 JSP 자바 웹 프로그래밍을 정리한 내용이다.
API란?
API(Application Programing Interface)는 프로그램들이 서로 상호작용하는 것을 도와주는 매개체라고 할 수 있다.
JDBC 드라이버를 설치하려면 ojdbc숫자.jar가 필요하다.
첫번째 방법은 한 번 설정하면 해당 컴퓨터에서 실행되는 모든 웹 애플리케이션에 적용된다. 그러나 웹 어플리케이션 배포 파일에 드라이버가 포함되지 않으므로 별도의 설정에 더 해줘야한다. 두번째 방법은 프로젝트마다 동일한 설정을 반복해야한다. 처음에는 번거롭지만 작업 공간을 변경하거나 배포 시에도 드라이버가 함께 따라간다.
JDBC 드라이버를 이용하여 DB와 연결을 관리하는 클래스
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.servlet.ServletContext;
public class JDBConnect {
public Connection con;
public Statement stmt;
public PreparedStatement psmt;
public ResultSet rs;
// 기본 생성자
public JDBConnect() {
try {
// JDBC 드라이버 로드
Class.forName("oracle.jdbc.OracleDriver");
// DB에 연결
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String id = "유저명";
String pwd = "유저 비밀번호";
con = DriverManager.getConnection(url, id, pwd);
System.out.println("DB 연결 성공");
}
catch (Exception e) {
e.printStackTrace();
}
}
// 연결 해제(자원 반납)
public void close() {
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (psmt != null) psmt.close();
if (con != null) con.close();
System.out.println("JDBC 자원 해제");
}
catch (Exception e) {
e.printStackTrace();
}
주로 web.xml에 입력해놓고 필요할 때마다 application 내장 객체를 통해 얻어온다.
<context-param>
<param-name>OracleDriver</param-name>
<param-value>oracle.jdbc.OracleDriver</param-value>
</context-param>
<context-param>
<param-name>OracleURL</param-name>
<param-value>jdbc:oracle:thin:@localhost:1521:xe</param-value>
</context-param>
<context-param>
<param-name>OracleId</param-name>
<param-value>유저명</param-value>
</context-param>
<context-param>
<param-name>OraclePwd</param-name>
<param-value>유저비밀번호</param-value>
</context-param>
public JDBConnect(String driver, String url, String id, String pwd) {
try {
// JDBC 드라이버 로드
Class.forName(driver);
// DB에 연결
con = DriverManager.getConnection(url, id, pwd);
System.out.println("DB 연결 성공(인수 생성자 1)");
}
catch (Exception e) {
e.printStackTrace();
}
}
public JDBConnect(ServletContext application) {
try {
// JDBC 드라이버 로드
String driver = application.getInitParameter("OracleDriver");
Class.forName(driver);
// DB에 연결
String url = application.getInitParameter("OracleURL");
String id = application.getInitParameter("OracleId");
String pwd = application.getInitParameter("OraclePwd");
con = DriverManager.getConnection(url, id, pwd);
System.out.println("DB 연결 성공(인수 생성자 2)");
}
catch (Exception e) {
e.printStackTrace();
}
}
커넥션 풀이란 Connection 객체를 미리 생성해 풀에 넣어놓고, 요청이 있을 때 이미 생성된 Connection 객체를 가져다 사용하는 기법이다. 사용이 완료되 ㄴ객체는 연결을 해제하는 것이 아니라 풀에 반납하여 필요할 때 재사용할 수 있도록 한다.
JSP 프로그래밍 시 커넥션 풀은 직접 만들어 사용하지 않고 WAS가 제공하는 것을 이용하는 게 좋다.
대부분의 WAS는 커넥션 풀을 비롯한 여러 자원을 JNDI 서비스로 제공한다. JNDI 서비스는 자바 소프트웨어에서 객체나 데이터를 전체 경로를 몰라도 '이름'만으로 찾아 쓸 수 있는 디렉터리 서비스이다. 이름과 실제 객체와의 연결은 외부의 설정 파일에서 관리하므로 다른 객체로 교체하거나 세부 설정을 바꿀 때도 소스코드를 수정하고 다시 컴파일할 필요가 없다.

<Resource auth="Container"
driverClassName="oracle.jdbc.OracleDriver"
type="javax.sql.DataSource"
initialSize="0"
minIdle="5"
maxTotal="20"
maxIdle="20"
maxWaitMillis="5000"
url="jdbc:oracle:thin:@localhost:1521:xe"
name="dbcp_myoracle"
username="유저명"
password="비밀번호" />
<ResourceLink global="dbcp_myoracle" name="dbcp_myoracle"
type="javax.sql.DataSource"/>