Skip to Content
Suffering builds character

2.MVC 패턴

JSP가 등장하면서 MVC 패턴이 보다 구체화됨

MVC 패턴을 요약하면 비즈니스 로직은 서블릿처럼 다른 곳에서 처리하고
JSP는 목적에 맞게 HTML로 화면을 그리는 일에만 집중하도록 코드를 분리하여 작성하는 방식을 말함

1. MVC, Model - View - Controller

1970년대 후반 노르웨이 컴퓨터 과학자 Trygve Reenskaug가 공식화한 구조에 관한 패턴
스몰토크 플랫폼용 프레임워크로 처음 개발했다고함

MVC 패턴에 등장하는 각 계층별 역할은 다음과 같음

1-1. Model

개발하고자 하는 프로그램에서 요구되는 관심사이자 데이터를 추상화, 모델링하여 표현된 결과 클래스

1-2. View

ModelUI Presentation에 표시하는 역할을 담당하는 클래스
REST 기반의 모던 웹 서비스에서는 이러한 View 혹은 Presentation 계층이 SPA 프레임워크와 같은 형태로 서버로부터 분리되어 독립적으로 동작하는 방식를 따르고 있음

1-3. Controller

사용자와 시스템을 이어주는 가교 역할
사용자로부터 입력을 받아 Model을 조작, View를 적절하게 업데이트하는 역할을 수행

2. 관심사의 분리

이러한 MVC 패턴의 핵심은 본질적으로 서로 다른 역할을 담당하는 로직을 역할 및 용도에 따라 분리하는 것이라고 볼 수 있음

디자이너는 심미적인 요소와 사용자 인터페이스, 화면 배치를 위한 레이아웃에만 집중하고,
개발자는 서비스의 동작에 필요한 로직 작성에만 집중하듯이 MVC는 이러한 각 역할에 맞게 분리한 결과라고 볼 수 있음

2. 의존하는 방향에 따른 특성

화살표의 방향을 보면, ViewModel에 의존하지만 반대로 ModelView에 의존하지 않고 있음

모델을 프로그래밍하는 개발자는 Model 객체가 View에 사용되고 있다는 것을 알 필요가 없어야함
그렇게 해야 ModelView에 의존하지 않게 되면서, 다른 표현으로는 종속되지 않게 되면서
View가 수정됨에 따라 Model이 수정될 필요가 없어지기 때문

View의 레이아웃은 다양하게 변경될 수 있으나 그럴 때마다 Model이 같이 변경되어야 하면 문제가 복잡해짐
변경 주기가 다르면 분리하는 것이 권장됨

3. Servlet/JSP에서의 MVC Pattern

서블릿에서 MVC패턴은 다음과 같이 비교할 수 있음

3-1. model 1

서블릿을 통해 setAttribute로 전달하는 방식은 MVC 패턴 중 초기 모델인 model 1의 방식을 따른다고 볼 수 있음

3-2. model 2

ServletJSP 기술을 같이 활용하는 방식은 MVC 패턴 중 보다 발전된 model 2의 방식을 따른다고 볼 수 있음

Note

MVC 패턴 요약

모델
뷰에 출력할 데이터 보관, 뷰는 화면 렌더링에만 집중 가능


모델에 담겨있는 데이터를 사용해서 화면을 그리는 일(HTML 생성)에 집중

컨트롤러
HTTP 요청을 받아 파라미터를 검증, 비즈니스 로직 수행하는 역할을 수행

💡
Tip

Original MVC 패턴 전문
MVC Its Past and Present

MVC 패턴의 한계점으로 인해 파생되어 나온 MVVM, Flux 패턴 등에 대해서도 필요에 따라 참고

Last updated on