- 서블릿 프로그래밍
- 프론트 컨트롤러 디자인 패턴의 목적과 활용 방법
- board-app 프로젝트 수행
- 트랜잭션 관리자 역할을 별도의 클래스로 분리하기
- Front Controller 디자인 패턴 도입하기
- 페이지 컨트롤러를 POJO로 전환하기
077. Front Controller 도입
Front Controller 도입전
Front Controller 도입후:
Architecture
Front Controller의 기능
- controller의 공통 기능을 처리
- client와의 접점을 줄인다. → Low Coupling
공통기능
- refresh
- redirect
- jsp 실행
- 오류 내용
⇒ Controller의 공통 기능
을 Front Controller
에 맡김으로써 기능 구현이 간결해진다.
Facade Design Pattern
Facade(퍼사드, front) 디자인 패턴을 적용한 예이다.
객체간의 복잡한 작업 과정을 캡슐화함으로써 사용 객체와의 접점을 줄인다. (Low Coupling)
⇒ 유지보수가 쉬워진다.
1단계 - 프론트 컨트롤러 역할을 수행할 클래스를 만든다.
- com.bitcamp.servlet.DispatcherServlet 클래스 생성
서블릿을 서버에 등록하는 방법
2단계 - 기존의 컨트롤러를 페이지 컨트롤러로 만든다.
- com.bitcamp.board.controller.XxxFormController 클래스 생성
- com.bitcamp.board.controller.XxxController 클래스 변경
- /webapp/xxx/*.jsp 변경
078. 페이지 컨트롤러를 POJO로 전환하기
- 프론트 컨트롤러 구조에서 페이지 컨트롤러를 POJO로 전환하는 방법
POJO
? Plain Old Java Object (기본 자바 문법으로 작성)
프론트 컨트롤러에서 요청을 받기 떄문에 페이지 컨트롤러는 굳이 서블릿이 될 이유가 없다!
1단계 - 페이지 컨트롤러의 사용 규칙을 정의한다.
- com.bitcamp.servlet.Controller 인터페이스 생성
2단계 - Controller 규칙에 따라 페이지 컨트롤러를 변경한다.
- com.bitcamp.board.controller.XxxController 클래스 변경
3단계 - ContextLoaderListener에서 페이지 컨트롤러를 생성한다.
- com.bitcamp.board.listener.ContextLoaderListener 클래스 변경
4단계 - 클라이언트 요청이 들어 왔을 때 Controller 규칙에 따라 페이지 컨트롤러를 실행한다.
- com.bitcamp.servlet.DispatcherServlet 클래스 변경