백문이불여일타

[Jsp/Servlet] 프런트 컨트롤러 & 프론트 컨트롤 디자인패턴 본문

Jsp

[Jsp/Servlet] 프런트 컨트롤러 & 프론트 컨트롤 디자인패턴

퇴근각 2019. 7. 6. 23:54

프런트 컨트롤러의 도입?

프런트 컨트롤러 라는 디자인 패턴을 이용하여 좀더 유지보수가 쉬운 구조로 
MVC를 개선해보는 방향으로 도입이 되었다.
컨트롤러를 만들다 보면 요청 데이터를 처리하는 코드나 모델과 뷰를 제어하는 
코드가 중복되는 경우가 있다.
중복코드들은 유지보수를 어렵게 하므로 프런트 컨트롤러를 통해 
이 문제를 해결해 보겠습니다. 



프론트 컨트롤 디자인 패턴이란?


웹 애플리케이션을 개발할 때 사용하는 MVC 디자인 패턴은 뷰에서 요청이 들어왔을 때 요청을 받아 

처리하는 것은 컨트롤입니다. 
그런데 하나의 웹 애플리케이션에는 많은 뷰와 컨트롤러가 존재해서 각각의 뷰와 컨트롤러가 연결되어

독립적으로 실행되면,   서버 입장에서는 현재 웹 애플리케이션 실행에 대하여 일괄적으로 처리하기 어렵습니다.
이럴 때 대표 컨트롤러(Front Controller)를 두고 뷰에서 들어오는 모든 요청을 담당하여
웹  애플리케이션을 실행하는 모든 요청을 일괄적으로 처리할 수있습니다.
이러한 구조를 '프론트 컨트롤 디자인 패턴'이라고 합니다.

 

디자인 패턴 

아무리 자바 가상머신이 가비지를 찾아서 자동으로 없애준다해도,

이 작업 또한 CPU를 사용하는 일이기에 시스템 성능에 영향을 끼칩니다.

따라서 개발자는 늘 인스턴스의 생성과 소명에 대해 관심을 가지고 시스템 성능을 높일 수 있는 방향으로 구현해야합니다. 

또한, 중복 작업을 최소화하여 유지보수를 좋게 만드는 방법을 찾아야합니다.

많은 시간동안 시스템이 운영되면서 검증되기때문에 디자인 패턴은 이렇게 검증된 방법들을 

체계적으로 분류하여 정의한 것 입니다.

디자인 패턴은 이미 실무에서 사용되고 검증된 방법이기 때문에 시스템 개발에 

디자인 패턴을 활용하면 시행착오를 최소화 할 수 있습니다. 

 

프론트 컨트롤 디자인 패턴 MVC구조도 

프런트 컨트롤러 디자인 패턴에서는 두 개의 컨트롤러를 사용하여 

웹 브라우저 요청을 처리합니다.

즉 기존에 서블릿이 단독으로 하던 작업을 

1) 프런트 컨트롤러 와 2) 페이지 컨트롤러로 2개의 역활로 나누어 수행합니다.

 

앞의 구조도에서 보는것 처럼

프런트 컨트롤러는 1) VO객체의 준비 2) 뷰 컴포넌트로의 위임 3) 오류 처리 등과 같은 공통작업을 담당하고,

페이지 컨트롤러는 이름 그대로 요청한 페이지만을 위한 작업을 수행합니다. 

 

Comments