Web Dev

61일차 Study

수오니니 2022. 1. 11. 09:39

<<스터디 주제>>

- Servlet(Session, DBCP, JNDI, DAO 디자인 패턴)

 

<<스터디 내용>>

 

Session

연결의 지속성을 위한 정보를 서버에 저장

복합적인 값을 저장하기 위해서 사용

 

JSESSIONID : 쿠키의 이름

아이디(식별자) : 아이디(세션의 고유값)

JSESSIONID와 세션의 ID를 비교해서 같으면 바인딩

권한에 대한 정보를 Session에 저장!!!

JavaWeb + JDBC

  1. OracleDriver 클래스를 읽어 메모리에 저장 - 클래스 로딩 작업
    ⇒ OracleDriver 인스턴스를 생성하여 DriverManager 클래스에 JDBC Driver 등록
  2. DriverManager 클래스에 등록된 JDBC Driver를 이용하여 Oracle DBMS 서버에 접속하여 Connection 인스턴스를 반환받아 저장
  3. Connection 인스턴스로 부터 SQL 명령을 저장한 PreparedStatement 인스턴스를 저장받아 사용 (pstmt는 sql명령어를 저장한 객체)
  4. PreparedStatement 인스턴스에 저장된 SQL 명령을 전달하고 실행결과를 반환받아 저장
  5. 반환받은 SQL 명령의 실행 결과를 이용하여 처리 작업
    ⇒ SQL 명령의 실행결과를 HTML 문서로 변환하여 클라이언트에게 응답 ResultSet 커서를 다음행으로 이동하여 처리행이 있는 경우 반복 처리
    ⇒ ResultSet 커서 위치에 처리행이 없는 경우 반복문 종료
  6. JDBC 관련 자원 제거

트래킹, 바인딩, 쿠키, 세션

getAttribute

setAttribute

Cookie, Session, JDBC, DBCP 예정

쇼핑몰 이미지 나열도 while문 반복

 

SQL 오류 발생

오라클 캐릭터셋이 OS와 다른 형태를 사용하기 때문에 발생한 문제..

오라클 다시 깔아라 결국은...

 

 

DBCP는 오라클의 ucp가 아닌 tomcat-dbcp.jar를 사용함. 이미 Apache Tomcat안에 라이브러리가 빌드되어 있음!

 

DBCP(DataBase Connection Pool)

: Connection 인스턴스를 미리 생성하여 저장하여 제공하는 기능

미리 만들어 두고 필요할 때 가져다 쓰는게 가독성도 좋음

Connection을 필요할때마다 실행시킬 필요가 없음! 속도도 느림!

⇒ JDBC 프로그램의 실행 속도가 높아지고 유지보수의 효율성 증가, 커넥션의 개수를 조정할 수 있음

⇒ DBCP 기능을 제공하는 클래스는 일반적으로 javax.sql.DataSource 인터페이스를 상속받아 작성한다

 

Apache Tomcat 라이브러리에서 제공하는 DBCP 기능의 클래스를 이용하여 Connection 인스턴스를 미리 생성하고 Connection 인스턴스를 제공받아 클라이언트에게 응답하는 서블릿

BasicDataSource 클래스로 인스턴스 생성 ⇒ BasicDataSource : DBCP 기능을 제공하는 인스턴스 생성

  • BasicDataSource dataSource=new BasicDataSource();

BasicDataSource 인스턴스에 Connection 인스턴스를 생성하여 저장하기 위해 BasicDataSource 인스턴스의 필드값 변경.

ConnectionFactory는 필요할때마다 만듬. DBCP는 미리 만들어둠.

 

JNDI(Java Naming Directory Interface)

: 인스턴스 생성에 필요한 정보에 이름을 부여하여 WAS 프로그램에 등록하고 필요한 경우 인스턴스를 생성하여 사용하는 기술
⇒ 인스턴스 생성에 필요한 정보를 저장한 파일 필요 - /src/main/webapp/META-INF/context.xml

WAS 프로그램에 등록된 정보를 이용하여 DataSource 인스턴스(DBCP)를 생성하고 DataSource 인스턴스에 저장된 Connection 인스턴스를 제공받아 클라이언트에 응답하는 서블릿

 

context.xml

WAS 프로그램 시작시 인스턴스 생성에 필요한 정보에 이름을 부여하여 제공하는 파일

jdbc/oracle 이란 이름으로 WAS에 이런식으로 등록할거다 라는 부분

properties 파일과 비슷한 환경정보 저장. 인스턴스 객체를 만들어줌.

 

DAO 디자인패턴

싱글톤 클래스로 작성하는 것을 권장!!

서블릿의 역할 = 클라이언트가 웹프로그램에 요청했을 때 전달된 값을 가져다가 DAO클래스로 받아서 응답!!

 

 

'Web Dev' 카테고리의 다른 글

63일차 Study  (2) 2022.01.13
62일차 Study  (0) 2022.01.11
60일차 Study  (0) 2022.01.07
59일차 Study  (0) 2022.01.06
58일차 Study  (0) 2022.01.04