자바에서 DB에 직접 연결해서 처리하는 경우(JDBC) 드라이버(Driver)를 로드하고 커넥션(connection) 객체를 받아와야 한다. 그러면 매번 사용자가 요청을 할 때마다 드라이버를 로드하고 커넥션 객체를 생성하여 연결하고 종료하기 때문에 매우 비효율적이다. 이런 문제를 해결하기 위해서 커넥션풀(DBCP)를 사용한다.
public class JdbcUtil {
public static Connection connect() throws NamingException, SQLException {
//1 . Connection Pool 로딩
Context init = new InitialContext();
DataSource ds = (DataSource)init.lookup("java:comp/env/jdbc/oraxe");
Connection con = ds.getConnection();
// 2. DBMS연결
return con;
}
public static void close(PreparedStatement pstmt, Connection con) {
try {
if(pstmt != null) pstmt.close();
} catch (SQLException e) {}
try {
if(con != null) con.close();
} catch (SQLException e) {}
}
}
Controller : 입력처리(파라미터), 작업분기
Model : 데이터 처리(Dao) 결과로 엔티티가 생길경우 View에게 전달(SetAttribute())
View: 결과로 표시(HTML, model에서 전달받은 엔터티를 이용)
Command Pattern - 요청마다 서블릿이 따로 처리
-단점 서블릿이 많이 필요
등록폼 /web0816/board/insert_form
FrontController Pattern - 모든 (업무별) 요청을 하나의 서블릿이 수신
등록폼/web0816/board?command=insert_form