MVC 동작원리
사진
이렇게 하나하나 저렇게 되는건지 몰랐다...
----
포워딩과 인클루딩
서블릿끼리 작업을 위임하는 방법
포워딩 - 한번 위임하면 다시 이전 서블릿으로 제어권이 돌아오지 않음.
인클루딩 - 다시 돌아옴
----
데이터 보관소 4가지
-ServletContext 보관소
웹앱 시작 ~ 종료까지
-HttpSession 보관소
클라이언트 최초 요청 ~ 브라우저 닫을 때까지.
보통 로그인할때 로그아웃할때
-ServletRequest 보관소
클라이언트 요청이 들어올때 생성 ~ 응답할 때까지 유지.
-JspContext 보관소
Jsp페이지를 실행하는 동안만 유지.
ServletContext 활용
예전에는 이렇게 DD파일에 선언해서,
자바에서 하나하나 가져와야했음.
근데 앱 실행할때 ServletContext에 저 변수들 저장하는 Servlet을 만들어서 모든 서블릿들 전에 실행해놓으면
ServletContext를 가져와서
사진
이런식으로 사용가능
설정서블릿 load-on-startup
VO 와 DAO
VO(DTO) 값객체 = 데이터 수송 객체
- 데이터 베이스에서 가져온 정보를 뷰에 전달하기 위한 정보를 담을 객체.
- 계층간, 또는 객체 간에 데이터를 전달하는 데 이용하므로 데이터 수송 객체라고도 부름.
- 값객체는 업무영역의 데이터를 표현하기 때문에 설계분야에서는 도메인 객체라고도 부름.
Data Access Object
데이터 처리를 전문응로 하는 객체.
데이터 접근관련코드 포함되어있음.
보통 하나의 테이블에 대응
데이터에 접근해서 값을 불러와서 VO를 만듦.
DI
작업에 필요한 객체를 외부로부터 주입받는 것.
ServletContextListener
사건이 발생했을때 알림을 받는 객체를 리스너 라고 부름.
웹 어픞리케이션이 시작되거나 종료될때 이를 알리고자 서블릿 컨테이너는 리스너 메서드를 호출.
그뭐냐 dao 리스너에서 생성해서 서블릿 컨텍스트에 저장.
db 커넥션 풀
db커넥션 객체를 여러개 생성해서 풀에 담아 놓고 필요할 때 꺼내 쓰는 방식. => 풀링
똑같은 컨낵션을 통해 statement , dao를 생성하면 롤백할때 다른 dao도 롤백이 됨.
(컨낵션 객체를 통해서만 롤백을 수행할 수 있음.)
그런데 사용자마다, sql작업마다 db컨넥션 객체를 생성하게 되면 리소스 낭비. 많은 가비지가 생성됨.
그래서 컨넥션 풀을 이용해 여러개를 만들어 놓고 필요할때마다 쓰고 반환하는 식으로 씀.
---
Datasource 와 JNDI
datasource는 javax.sql 패키지에 들어있음.
driverManager 보다 나은 두가지 이유
1. datasource는 서버에서 관리
데이터 베이스나 JDBC드라이버가 변경되더라도 애플리케이션을 바꿀 필요가 없음.
2. connection 과 statement객체 풀링가능, 분산트랜잭션 가능
따로 풀링 구현할필요가 없음.
꿀팁
변수명 정할때 인터페이스의 구현체 이름을 직접 사용하면 나중에 다른 구현체로 바꿀때 이름 다 바꿔야하는 수가 있음. 처음부터 변수명을 인터페이스명으로 하면 손쉽게 대체 가능.
사진
'study' 카테고리의 다른 글
자바 웹개발 워크북 6장 (0) | 2023.04.25 |
---|---|
자바 웹개발 워크북 4장 서블릿과 JDBC (0) | 2023.03.09 |
자바 웹개발 워크북 3장 서블릿 프로그래밍 (0) | 2023.03.08 |
자바 웹 개발 워크북 2장 Http 프로토콜 (0) | 2023.03.07 |
자바 웹개발 워크북 1장 (0) | 2023.03.06 |
댓글