WEB Application Architecture
- JSP를 이용하여 구성할 수 있는 WEB Application Architecture 는 크게 2가지로 나뉜다.
- Model 1
- Model 2
- JSP가 Client의 요청에 대한 logic 처리와 view 처리를 모두 하느냐(model1), 아니면 view에 대한 처리만 하는가(model2) 가 가장 큰 차이점이다.
- Model2 구조는 MVC (Model-View-Controller) pattern 을 web 개발에 도입한 구조를 뜻한다.
Model 1
구조
- model1은 view와 logic을 JSP 페이지 하나에서 처리하는 구조를 뜻한다.
- Client 로부터 요청이 들어오면 JSP페이지는 java beans나 별도의 service class를 이용하여 작업을 처리한다.
장단점
- 장점
- 단점
- 출력을 위한 view코드와 로직처리를 위한 java코드가 섞여있어 복잡하다
- JSP코드에 BE와 FE가 혼재되어 분업이 어렵다
- 규모가 커지면 유지보수가 어렵다
- 확장성(신기술 도입, framework의 이용)이 어렵다.
Model 2
구조
- Model2는 모든 처리를 JSP페이지에서 하는 것이 아니라, Client의 요청에 대한 처리는 Servlet이, logic 처리는 java class가 담당하여 분업화 한 것을 말한다.
- model2 구조는 MVC pattern을 웹 개발에 도입한 구조이며 완전히 같은 형태를 보인다.
장단점
- 장점
- 복잡하지 않다.
- 분업이 용이해졌다.
- 그결과 유지보수가 쉬워지고,
- 확장성이 증가했다.
- 단점
- 초기 구조파악이 복잡하다
- 개발 시간의 증가로 개발 비용이 증가한다.
Front Controller
FrontController 개요
FrontController의 등장
뷰 렌더링과 컨트롤러 역할을 분리하여 설계하는 것은 장점이 되었지만, 해당 페이지가 늘어나면서 각 컨트롤러 내 중복 코드가 다량으로 발생하게 되는 문제가 발생한다.
- View로 이동하는 Forward 코드가 중복
→ 공통 처리가 어려운 것을 해결하기 위해서 Front Controller 패턴을 도입했다.
FrontController 흐름
- Client의 요청이 FrontController 에 들어온다. (URL)
- FrontController는 매핑정보를 조회
- 해당 컨트롤러에게 처리를 요청한다.
- 해당 컨트롤러로부터 결과를 출력할 view의 이름을 리턴한다.
- 컨트롤러에서 보내온 view이름을 토대로 view를 검색 (ViewResolver)
- 처리결과를 View에 송신
- 처리결과가 포함된 View를 FrontController에 송신
- Client에게 Response 반환
FrontController 특징
- 서블릿 하나로 클라이언트의 요청을 받음
- Front Controller가 요청에 맞는 컨트롤러를 찾아서 호출한다.
- Front Controller를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다.
- FrontController는 공통 코드를 처리하고 요청에 맞는 컨트롤러를 매핑해주는 역할을 수행하게 된다.
- 대표적인 예시로, Spring Web MVC의 Dispatcher Servlet이 있다.