[뉴진주택] 4회차
MVC 패턴이란 Model, View, Controller의 약자이다.
Model
모델은 어떤 동작을 수행하는 코드를 말하며, 표시 형식에 의존하지 않는다.
모델의 상태에 변화가 있을 때 컨트롤러와 뷰에 이것을 통보한다. 어떤 MVC 패턴에서는 통보가 아닌 뷰나 컨트롤러가 직접 모델의 상태를 읽어오기도 한다.
View
뷰는 앱의 데이터를 보여주는 방식을 정의한다.
-> 사용자가 볼 결과물을 생성하기 위해 모델로부터 정보를 얻어온다.
MVC에서 모델은 여러 개의 뷰를 가질 수 있다.
Controller
MVC의 뷰는 여러 개의 컨트롤러를 가지고 있다. 사용자는 이 컨트롤러를 통해 모델의 상태를 바꾼다.
컨트롤러는 모델에 명령을 보내 모델의 상태를 변경할 수 있다.
컨트롤러가 관련된 뷰에 명령을 보내 모델의 표시 방법을 바꿀 수 있다.
MVC 패턴
쉽게 말해서 사용자가 컨트롤러를 조작하면 컨트롤러는 모델을 통해 데이터를 가져오고 그 데이터를 바탕으로 뷰를 통해 시각적으로 사용자에게 전달한다. 이러한 패턴을 사용한다면 비지니스 로직과 UI 로직을 분리해서 유지보수를 독립적으로 수행할 수 있게 된다.
이러한 MVC 패턴에도 두 가지 종류가 있다.
Model 1
Model 1은 JSP에서 모든 로직과 출력을 처리한다.
즉, JSP 페이지에 비지니스 로직을 처리하기 위한 코드와 웹프라우저에 결과를 출력하는 코드가 섞여 있다.
Model 2
Model 2는 모든 요청을 서블릿이 받아 처리하고 JSP 페이지로 포워드한다.
이때 서블릿은 클라이언트(브라우저) 요청을 구분하여 처리한다. (View로 보여줄 것인지 Model로 보낼 것인지를 판단하여 전송)
차이점
Model 1
Model 1의 경우에는 빠르고 쉽게 개발이 가능하지만, JSP 파일이 너무 커지고 컨트롤러와 뷰가 같이 존재하기 때문에 유지보수에 어렵다.
Model 2
Model 2의 경우에는 디자이너와 개발자의 분업이 가능하고, 유지보수 및 확장이 쉽다.
하지만 설계가 어렵고 개발 난이도가 높다.
참고 블로그