병갈이 블록

DB연결 커넥터 초기화 리스너 구성. 본문

IT(Old)/JSP 실습 과정 기록

DB연결 커넥터 초기화 리스너 구성.

woojang 2017. 7. 12. 14:40

리스너를 구성하기 위해 생각해야 할 것들.


1. 리스너는 ServletContextListener 인터페이스를 구현한 클래스이다.(implements ServletContextListener를 해야된다.)

아래 두개의 클래스를 임포트한다.

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;


2. ServletContextListener 인터페이스의 두가지 메서드를 구현해야한다.

public void contextInitialized(ServletContextEvent sce) { 초기화 내용을 구성할 클래스. }

public void contextDestroyed(ServletContextEvent sce) { 구현 안해도 됨. }


3. 알아야 할 주소들.

1. mysql 드라이버 주소 - "com.mysql.jdbc.Driver"

2. mysql 접속 주소 - "jdbc:mysql://localhost:포트번호/스키마이름?characterEncoding=utf8"

3. ConnectionPool 드라이버 주소 - "org.apache.commons.dbcp2.PoolingDriver"

4. ConnectionPool 접속 주소 - "jdbc:apache:commons:dbcp:풀이름" //풀이름은 구성중에 지정하도록...


4. 3번의 4에서 만든 접속주소는 따로 커넥션을 제공하는 클래스를 만들때 사용한다.

--잠깐 정리.--

listener는 웹 어플리케이션이 동작할 때 초반에 동작된다. 

즉, 서버가 실행될 때 초반에 mysql과 연동된 connection을 만들어 보관 및 관리하는 

ConnectionPool을 만들어서 그 풀에 접속가능한 주소를 등록한다.

이 후, 별도의 Connection을 제공하는 클래스는 mysql과 직접 연결된 Connection을 주는것이 아닌, 

ConnectionPool에 접속하는 커넥션을 제공하게 된다.

(코드 일부:: return DriverManager.getConnection("Pool접속URL"); )


5. 모든 코드를 만들었으면, test페이지 작성.

필요한 클래스만 임포트 한다.(Connection, SQLException, 커넥션을 제공하는 클래스)

간단하게 try-catch문으로 예외없이 정상처리 되었다면 "성공"문구를, 예외가 발생하여 catch문에 걸린다면 "실패"문구를 나타내도록 한다.

그리고 테스트. 

**의외로 복잡한 과정이라 보여지는 부분인데(mysql에 사용자도 등록해야하고 권한도 부여해야하고 스키마 이름 틀리면 안되고...)

늘 에러없이 잘 진행되는 부분임. 참 다행이라 여겨진다는...




MySQL 관련.

1. 사용자 등록.

 create user 'ID'@'호스트' identified by 'PW'; 

- create user >> 유저를 만든다.

ID >> 생성할 유저 id

- 호스트 >> 접속할 호스트를 등록. 

: localhost - 로컬호스트에서 접속.

: % - 모든 호스트에서 접속.

- identified by 'PW' >> 뒤에 PW로 사용자를 인증하겠다는 의미.


2. 사용자 권한 부여

 grant 권한 on 스키마.테이블 to ID@'호스트' identified by 'PW'; 

1번에서 생성된 유저(ID@'호스트')를 특정 스키마의 특정 테이블에 관하여 특정 권한을 부여함.

- 권한 : 특정 명령에 관한 권한을 정함. 모든 권한은 ALL PRIVILEGES

- 스키마.테이블 : 특정 스키마와 그 스키마의 특정 테이블을 지정할 수 있음. 

특정 스키마의 모든 테이블이면 스키마.*

ID@'호스트' identified by 'PW' : 1번에서 생성된 유저와 동일한 정보여야함.


Comments