Spring MVC
| topics | 300-백엔드개발 301 Spring |
| types | 이론 |
| tags | #spring-mvc #dispatcher-servlet #model-view-controller |
- Model
- 데이터를 처리하는 영역
- DB와 연동하여 사용자가 입력한 데이터나 사용자에게 출력할 데이터를 다룸
- View
- 어플리케이션이 처리한 데이터나 그 작업 결과를 사용자에게 출력할 화면(UI)으로 만듦
- 종속성이 없도록 구현
- Controller
- 사용자 입력을 받아 데이터를 변경하거나 이를 뷰에 전달하는 역할
- @Controller
- 내가 프론트에서 API 받을 때 그 형식이 여기서 정해지는 듯
DispatcherServlet : 애플리케이션의 가장 앞단에 배치되어 다른 구성요소들과 상호 작용하며 클라이언트의 요청을 처리하는 패턴을 Front Controller Pattern(프론트 컨트롤러 패턴)
- 클라이언트의 요청을 DispatcherServlet이 받는다.
- 요청 정보를 통해 이를 위임할 Controller를 HandlerMapping을 통해 검색한다.
- HandlerMapping은 Controller 정보를 DispatcherServlet에게 리턴한다.
- DispatcherServlet은 HandlerAdapter에게 Controller의 Handler 메서드 호출을 위임한다.
- HandlerAdapter가 해당 Controller의 Handler 메서드를 호출한다.
- controller는 리턴 받은 Model 데이터를 HandlerAdapter에게 전달한다.
- HandlerAdapter는 전달 받은 Model 데이터와 View 정보를 다시 DispatcherServlet에게 전달한다.
- DispatcherServlet은 전달 받은 View 정보를 ViewResolver에게 전달해 View 검색을 요청한다.
- ViewResolver는 해당하는 View를 찾아 View를 다시 리턴해준다.
- DispatcherServlet은 전달 받은 View 객체를 통해 Model 데이터를 넘겨주면서 클라이언트에게 전달할 응답 데이터 생성을 요청한다.
- View는 응답 데이터를 생성해 다시 DispatcherServlet에게 전달한다.
- DispatcherServlet은 View로부터 전달 받은 응답 데이터를 최종적으로 클라이언트에게 전달한다.
→ 즉, DispatcherServlet은 애플리케이션의 가장 앞에 배치되어 다른 구성 요소와 상호 작용하며 클라이언트의 요청을 처리한다.
(실제 요청에 대한 처리는 다른 구성 요소들에게 위임하고 있다.)