Spring Web MVC 아키텍쳐 알아보기
[Spring] - 모델-뷰-컨트롤러(MVC) 패턴이란?
이전 포스팅에서 모델-뷰-컨트롤러라는 전체적인 MVC 패턴에 대하여 알아보았다. 오늘은 더 범위를 좁혀서 Spring Web MVC 아키텍쳐에 대하여 알아보도록 하겠다.
Spring Web MVC 아키텍쳐는 아래의 그림 하나로 요약이 가능하다.
위 다이어그램에서 볼 수 있듯이 Srping Web MVC에서 핵심이 되는 것은 "DispatcherServlet"이다. 이는 등록된 요청 핸들러라고 할 수 있으며 요청을 전달하는 프론트 컨트롤러이다. 프론트 컨트롤러는 다른 컨트롤러들을 관리하는 최상위 컨트롤러라고 할 수 있다.
각 핸들러는 서비스의 역할을 수행하며 DispatcherServlet이 요청을 전달할 뷰를 지정하게 된다.
위 다이어그램을 통해서 Spring Web MVC에서 어떠한 과정으로 플로우가 흘러가는지 간단히 설명하도록 하겠다.
1. HTTP 요청 : 요청이 DispatcherServlet에 연결된다.
2. 요청에 따른 컨트롤러 확인: DIspatcherServlet은 요청 경로에 따라 등록된 핸들러 중 어떤 핸들러가 호출되어야 할 지 결정하여 요청을 다시 전달하게 된다.
3. HTTP 요청: HTTP 요청을 핸들러가 처리하게 된다. 1번은 HTTP 요청이 DIspatcherServlet 즉 최상위 컨트롤러에 전달되어 어떤 컨트롤러에게 전달되어야 되는지 확인했던 과정이라면, 3번에서는 직접 연결되는 컨트롤러에 HTTP 요청이 전달된 것이라고 보면 된다.
4. 모델 쿼리 업데이트: 핸들러는 모델에 대한 쿼리나 업데이트를 수행한다.
5. 모델 데이터 반환: 모델에서 필요한 작업을 수행한 뒤 모델 데이터가 반한된다.
6. 모델 및 뷰 반환: 핸들러는 데이터와 논리 뷰 이름을 최상위 컨트롤러인 DIspatcherServlet으로 반환한다.
7. 뷰 이름으로 뷰 찾기: 논리 뷰 이름을 전달받은 DispatcherServlet은 뷰 이름을 확인하여 뷰 이름으로 뷰를 찾는다.
8. 모델 데이터 전달: 실제 뷰에 모델 데이터를 전달한다.
9. 페이지 렌더링: 뷰에서는 모델 데이터를 전달받아 응답을 생성하고 DispatcherServlet은 응답을 클라이언트로 내보낸다.
전반적인 개념 설정은 위와 같고, 실제 구체적인 예시를 통해 Spring Web MVC 응용프로그램을 만드는 것은 다음 포스팅에서 다루어보도록 하겠다.