MVC 패턴이란?
Model, View, Controller를 줄여 MVC라고 부른다.
우리가 어플리케이션을 구성할 때, 구성요소를 세 가지의 역할 (Model, View, Controller)로 구분한 것을 MVC 패턴이라고 부른다.
그럼 MVC 패턴에 대해 알아보자!
1. Model
데이터를 처리(셀렉트, 저장, 삭제 등)하는 영역이다.
DB와 연동을 위한 DAO(Data Access Object)와 데이터의 구조를 표현하는 DO(Data Object)로 구성된다.
2. View
데이터를 유저에게 보여주는 화면 영역(UI)이다.
응답받은 데이터를 화면의 각 요소에 배치한다.
뷰에서는 별도의 데이터를 따로 저장하지는 않는다.
3. Controller
모델과 뷰 사이에서의 브릿지 역할을 수행한다. 클라이언트의 입력이나 요청에 대한 응답으로 모델, 뷰를 업데이트하는 로직을 수행하게 된다. 클라이언트의 요청은 모두 컨트롤러를 통해 진행되고, 컨트롤러로 들어온 요청은 내부에서 처리되어 모델로 요청을 전달하게 된다.
출처: 어라운드 허브 스튜디오 https://www.youtube.com/watch?v=JMBjqNUFOm8
MVC의 구동 원리
내가 회사를 다니며 가장 자주 사용하던 패턴이 MVC 패턴임에도 불구하고, Spring MVC는 어떻게 구동하는가, 어떤 방식으로 동작하는가를 공부하면 까먹고 또 블로그 글을 보면 알다가도 나중엔 결국 제대로 알지 못해 다시 한 번 찾아보고를 반복하다 정말 내 것으로 만들어 보자! 가 포스팅을 하게 된 이유이다.
1. 웹 브라우저(유저)가 웹 서버에 웹 애플리케이션 실행을 요청한다.
2. 웹 서버는 들어온 요청을 처리할 수 있는 서블릿을 찾아서 요청을 전달한다. (매칭)
3. 서블릿(Controller)은 모델 자바 객체의 메서드를 호출한다.
4. 데이터를 가공하여 값 객체를 생성하거나, JDBC를 사용하여 DB와의 인터렉션을 통해 값 객체를 생성한다.
5. 업무 수행을 마친 결과값을 Controller에 반환한다.
6. Controller는 Model로부터 받은 결과값을 View에게 전달한다.
7. 전달받은 값을 참조하여 출력할 결과 화면을 만들고, 컨트롤러에게 전달한다.
8. 뷰로부터 받은 화면을 웹 서버에게 전달한다.
9. 웹 브라우저는 웹 서버로부터 요청한 결과값을 응답받으면 그 값을 화면에 출력한다.
출처: https://osy0907.tistory.com/63
MVC 패턴의 장점은?
비즈니스 로직과 뷰 로직을 변경하여 유지보수를 보다 편리하게 수행할 수 있다. 즉, 한 영역이 독립되어 있어 분업, 협업이 원활하고 한 영역을 업데이트 한다고 하더라도 수정하지 않은 부분에서는 영향을 받지 않는다. 그리고 간단한 패턴으로 현재 가장 많이 사용하고 있는 패턴이기도 하다.