JSP/서블릿 흝어 보기

모델1와 모델2

MVC 디자인 패턴의 두 가지 모델

"MVC 디자인 패턴에는 Model1과 Model2 라는 두가지 모델이 있다."

Model1은 뷰와 컨트롤러를 JSP로 구현된다. Model1은 클라이언트로 부터 요청이 들어왔을 때 JSP가 요청받아 처리하면서 동시에 뷰의 역할도 같이 한도록 한다. 구현이 쉽지만 대신 구현이 복잡할 떄는 유지보수가 어렵다.

Model2는 뷰는 JSP, 컨트롤러는 서블릿으로 작성되어 클라이언트의 요청을 서블릿으로 구현된 컨트롤러가 받아 파리미터를 서비스 객체로 전달하여 처리하며 그 결과를 받아 뷰에 전달한다. Model2은 역할 구분이이 확실하기 때문에 설계가 Model1 보다 어려지만, 유지보수가 수월해지는 장점이 있습니다.

책(p489)에서 MVC 디자인 패턴의 기본 예제가 있는데.. 앞에서 뷰와 컨트롤이 JSP로 구현되면 모델1이라 하지만. 이 예제의 경우 요청 처리와 뷰의 역할이 분리되어 있다. 요청을 JSP에서 처리한 다음 뷰(View)로 디스패치 하는데.. 컨트롤러의 역활을 JSP가 하지만.. 디스패치로 인해 컨트롤러와 뷰와 역할이 분리되니 이것도 모델2로 볼 수 있지 않을까??

앞에서 모델1은 JSP가 요청처리와 뷰의 역할을 같이한다고 했다. 그렇다면 아래 블로그의 예제와 같이 오래된 전형적인 방식의 3-Tier 아키텍처를 모델1로 보는 것인가??
https://blog.naver.com/kimstcool01/220908881839

3-Tier 아키텍처란, 뷰와 컨트롤러가 있는 영역을 '프레젠테이션 게층'으로 분리하고 실제 요청된 서비스를 처리하는 비즈니스 로직이 구현된 영역을 '비즈니스 계층', 데이터베이스에 대한 처리흘 하는 영역을 '영속 계층'으로 구분하여 구현하는 것을 의미한다.

책(p489)의 예제 처럼 요청처리와 뷰가 별개의 JSP로 구현되었다면, 디스패치를 이용해 요청처리와 뷰의 역할이 구분된다면 이러한 패턴도 모델2로 보는게 맞지 않을까 싶다. 

단, 과거와 현재를 명확하게 구분짓는 것은 전통적인 MVC 패턴와 다음에 소개할 프런트 컨트롤러 디자인 패턴이 아닐까 싶다.

 

댓글

댓글 본문