본문 바로가기

chap13-2.6 DBMS별 web.xml 파일 각 DBMS에 알맞은 MessageDao 클래스와 DBCP 설정 파일, MessageDaoProvider 클래스 및 MessageDaoProviderInit 서블릿 클래스를 작성했으므로, 이제 각 DBMS에 알맞은 web.xml 파일을 작성해 보도록 하겠다. 먼저 MySQL을 사용할 경우의 web.xml 파일은 다음과 같다. chap13\WEB-INF\web.xml DBCPInit kame.jdbc.loader.DBCPInit jdbcdriver com.mysql.jdbc.Drvier 1 MessageDaoProviderInit kame.chap13.dao.MessageDaoProviderInit dbms mysql 1 ...
MessageDaoProvider와 MessageDaoProviderInit 구현 chap13\WEB-INF\src\kame\chap13\dao\MessageDaoProvider.java package kame.chap13.dao; import kame.chap13.dao.mssql.MSSQLMessageDao; import kame.chap13.dao.mysql.MySQLMessageDao; import kame.chap13.dao.oracle.OracleMessageDao; public class MessageDaoProvider { private static MessageDaoProvider instance = new MessageDaoProvider(); public static MessageDaoProvider getInstance() { return instance; } p..
MySQL에서의 DAO 구현 (1) MySQL 테이블 생성 쿼리 D:\>mysqladmin -u root -p create chap13 D:\>mysql -u root -p mysql> grant select, insert, update, delete, create, drop -> on chap14.* to 'jernin20'@'localhost' identified by '******'; mysql> grant select, insert, update, delete, create, drop -> on chap14.* to 'jernin20'@'$' identified by '******'; mysql> quit D:\>mysql -u jernin20 -p chap13 mysql> create table guestbook_messa..
방명록을 구성하는 클래스의 구조 방명록 구현에 관련된 클래스 GetMessageListService : 요청한 페이지 번호에 포함된 메시지 목록을 구한다. WriteMessageService : 방명록에 메시지를 작성하는 기능을 제공한다. DeleteMessageService : 작성한 메시지를 삭제하는 기능을 제공한다. DAO 관련 클래스들은 다음과 같은 기능을 제공한다. MessageDao : GUESTBOOK_MESSAGE 테이블에 대한 CRUD 기능을 정의한 추상 클래스. DELETE 쿼리와 같이 모든 DBMS에 공통으로 적용될 수 있는 기능은 구현도 함께 제공한다. MySQLMessageDao : MySQL에 알맞은 쿼리를 수행하는 MessageDao OracleMessageDao : 오라클에 알맞은 쿼리를 수행하는 Messa..
Connection을 제공해 주는 ConnectionProvider JDBC API를 이용해서 DB 프로그래밍을 하려면 다음과 같이 Connection 객체를 먼저 생성해 준다. Connection conn = null; try { conn = DriverManager.getConnection(jdbcUrl, userId, userPassword); ... DB 연동이 필요한 모든 코드에서 DriverManager.getConnection() 메서드를 사용해서 Connection 객체를 구할 경우 JDBC URL, 사용자 아이디, 암호가 모든 코드에서 중본된다. 만약 JDBC URL을 변경해야 한다거나 커넥션 풀 구현 방식을 변경해야 할 경우 모든 코드에서 DriverManager.getConnection() 부분을 수정해 주어야 하는 부담이 발생할 수 있다. 또한, D..
DBCP를 이용해서 커넥션 풀 사용하기 자카르타 프로젝트의 DBCP API를 사용할 때에는 다음과 같은 과정을 거친다. 1. DBCP 관련 Jar 파일 및 JDBC 드라이버 Jar 파일 설치하기 2. 커넥션 풀 관련 설정 파일 초기화하기 3. 커넥션 풀 관련 드라이버 로딩하기 4. 커넥션 풀로부터 커넥션 사용하기 (1) 필요한 jar 파일 복사하기 Commons-DBCP API 관련 Jar 파일 Commons-DBCP API가 사용하는 Commons-Pool API의 Jar 파일(1.3 이상) 이 두 라이브러리는 http://commons.apache.org 사이트에서 다운로드 받을 수 있다. 다운받은 라이브러리의 압축을 풀면 jar 파일을 발견할 수 있는데, 이 두 jar 파일을 WEB-INF\lib 디렉터리에 복사해 준다. (2) 설정 파..
웹 어플리케이션의 일반적인 구성 및 방명록 구현 >> 자바는 객체 지향 언어로서 역할에 따라 클래스를 설게함으로써 효율적인 프로그래밍을 할수 있다. JSP의 기반 기술은 자바이기 때문에, 객체 지향에서 비롯되는 자바 언어의 효율성을 JSP 프로그래밍에서도 그대로 적용할 수 있다. 웹 어플리케이션을 개발할 때 클래스를 구성하는 전형적인 구조가 있는데 오늘은 이부분에 대해서 공부해 본다. 01. 어플리케이션의 전형적인 구성 요소 웹 어플리케이션을 포함한 다수의 소프트웨어는 개발 비용 이상으로 유지 보수 비용을 필요로 한다. 특히 웹 어플리케이션의 경우는 일반 어플리케이션에 비해서 개발이 완료된 뒤에도 지속적으로 수정 요구 사항이 발생한다. 이는, 개발이 완료된 이후에도 지속적으로 웹 어플리케이션의 코드를 수정하거나 새롭게 작성해야 한다는 것을 의미한다. ..
웹 어플리케이션 구동시 JDBC 드라이버 로딩하기 JDBC 드라이버는 한 번만 로딩하면 이후로 계속해서 사용할 수 있기 때문에 JSP페이지에서 매번 JDBC 드라이버를 로딩할 필요는 없다. 웹 어플리케이션이 시작될 때 자동으로 JDBC 드라이버를 로딩하도록 다음과 같은 서블릿 클래스를 사용한다. WEB-INF\src\kame\jdbc\loader\Loader.java package kame.jdbc.loader; import javax.servlet.http.HttpServlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import java.util.StringTokenizer; public class Loader extends HttpServlet { pub..