MVC패턴은 소프트웨어 공학에서 사용되는 디자인 패턴 중 하나입니다.
MVC패턴은 사용자 인터페이스와 비즈니스 로직을 분리하여 각각의 로직을 독립적으로 운용하여 유지보수를 용이하게 만들 수 있는 디자인 패턴입니다.
M (Model)
V (View)
C (Controller)
MVC Model1
은 View와 Controller를 JSP에서 모두 구현하는 구조를 가지고 있습니다.
따라서 클라이언트의 요청을 받는것도 JSP, Model과 상호작용을 하여 변경된 Model을 사용하여 View를 다시 그려내는것도 JSP
입니다.
즉, 사용자의 요청처리와 요청에 대한 응답처리를 JSP에서 모두 구현하는 구조입니다.
위의 특징때문에 MVC Model1구조는 흐름이 단순하기 때문에 개발이 쉽고 중소형 프로젝트에 적합하다는 장점이 있습니다.
하지만 프로젝트의 규모가 커질수록 유지보수가 어려워지고, View와 Controller가 하나의 JSP에 합쳐져 있기때문에 디자이너와 개발자의 협업에 어려움이 생길 수 있습니다.
MVC Model2
는 MVC Model1
과는 다르게 View와 Controller가 분리된 구조를 가지고 있습니다.
클라이언트의 요청을 처리, 흐름제어를 하면서 필요시 Model과 상호작용을 하는 Controller는 Servlet
에서 담당하고, 사용자 인터페이스를 보여주는 View는 JSP
에서 담당하고 있습니다.
이렇게 Controller와 View를 분리함으로써 클라이언트의 요청처리 부분과 응답처리 부분을 분리하여 각 로직을 독립적으로 수행할 수 있습니다.
따라서 유지보수 측면에서 매우 좋고 디자이너와 개발자간의 협력이 수월하다는 장점이 있습니다.
하지만 MVC Model1보다 프로그램의 흐름이 복잡하기 때문에 개발 난이도가 높으며, 설계에서 어려움을 겪을 수 있다는 단점이 있습니다.
MVC Model1
과 MVC Model2
에 대해 간략히 알아보았습니다.
두 모델의 핵심적인 차이는 두 가지로 요약할 수 있습니다.
클라이언트의 요청처리와 응답처리가 분리되어 있는가
MVC Model1
은 요청처리와 응답처리가 모두 하나의 JSP
에서 이루어집니다.MVC Model2
는 요청처리는 Servlet
에서 담당하고 응답처리는 JSP
에서 이루어지기 때문에 두 로직이 분리되어 있습니다.접근방식
MVC Model1
은 View와 Controller가 하나의 JSP
에 존재하기 때문에 클라이언트가 직접적으로 View에 접근할 수 있습니다.MVC Model2
에서 클라이언트는 View에 직접적으로 접근할 수 없고 반드시 Controller를 통해서 접근해야 합니다.두 가지 차이점 중에서도 첫 번째가 가장 핵심적인 차이점이라고 할 수 있습니다.
또한 MVC패턴에 대해 말할때는 보통 MVC Model2
를 의미하며, MVC Model1
을 사용하여 개발하는 사례는 거의 없습니다.
따라서 우리는 MVC Model2
에 대한 개념을 잘 알고있어야 합니다.