MVC
Model, View, Controller로 이루어진 디자인 패턴
모델 - 데이터베이스, 상수, 변수 등
뷰 - 사용자가 보는 화면 프론트
컨트롤러 - 모델과 뷰를 이어주는 역할
MVC 패턴을 이용한 대표적인 프레임워크 Spring
Spring의 MVC 처리 순서
1. client 요청이 DispatcherServlet에게 전달된다.
2. DispatcherServlet은 HandlerMapping을 사용해서 client요청을 처리할 Controller 객체를 추출한다.
3. Controller에서 model을 사용하여 client의 요청을 처리한다.
4. Controller는 처리결과 data를 Model(AndView)에 담아서 return한다.
5. DispatcherServlet은 ViewResolver로부터 응답결과를 생성할 view 객체를 추출한다.
6. View는 client에게 전송할 응답이다.
그림에는 spring framework이 기본적으로 제공하는 것(파란색), 개발자가 직접 만드는 것(보라색), 주로 spring framework이 제공하지만 개발자가 수정할수도 있는 것(초록색)으로 각각의 역할이 구분되어있다.
MVC 지키기 위한 다섯가지 규칙
1.
Model은 Controller와 View에 의존하지 않아야 한다.
(Model 내부에 Controller와 View에 관련된 코드가 있으면 안 된다.)
2.
View는 Model에만 의존해야 하고, Controller에는 의존하면 안 된다.
(View 내부에 Model의 코드만 있을 수 있고, Controller의 코드가 있으면 안 된다.)
3.
View가 Model로부터 데이터를 받을 때는, 사용자마다 다르게 보여주어야 하는 데이터에 대해서만 받앙야 한다.
4.
Controller는 Model과 View에 의존해도 된다.
(Controller 내부에는 Model과 View의 코드가 있을 수 있다.)
5.
View가 Model로부터 데이터를 받을 때, 반드시 Controller에서 받아야 한다.