MVC 패턴의 사용 목적
각 컴포넌트가 서로 분리되어 각자의 역할에 집중할 수 있기 때문에 시스템 결합도를 낮출 수 있다. 유지보수가 쉬우며, 중복 코드를 제거할 수 있고, 애플리케이션의 확장성과 유연성이 증가한다.
MVC란
- Model
웹 애플리케이션이 클라이언트의 요청을 전달받으면 요청 사항을 처리한 작업의 결과 데이터를 클라이언트에게 응답으로 돌려주어야 하는데, 이 때 응답으로 돌려주는 결과 데이터를 Model이라고 한다. - View
View는 Model을 이용해서 화면에 보이는 리소스를 제공하는 역할을 한다. - Controller
클라이언트의 요청을 직접적으로 전달받는 엔드포인트로써 Model과 View의 중간에서 상호작용을 해주는 역할
클라이언트의 요청을 전달받아 비즈니스 로직을 거친 후 Model 데이터가 만들어져 이를 View로 전달하는 역할을 한다.
Spring MVC의 구조
- DispatcherServlet
Front Controller의 역할을 수행하며 클라이언트의 요청을 각각의 컨트롤러에게 위임한다.
가장 앞 단에서 요청을 처리하는 컨트롤러로써 요청부터 응답까지 전반적인 처리과정을 통제한다. - HandlerMapping
요청에 맞는 컨트롤러를 탐색한다. - HandlerAdapter
매핑된 컨트롤러의 실행을 요청한다. - Controller
DispatcherServlet이 전달해준 HTTP 요청을 처리하고 결과를 Model에 저장한다. - ModelAndView
컨트롤러에 의해 반환된 Model과 View가 래핑된 객체다. - ViewResolver
View의 이름을 확인하여 컨트롤러로 부터 받은 처리결과를 반영할 view를 탐색한다. - View
로직 처리 결과를 반영할 최종 화면을 생성한다.
Spring MVC 동작과정
- 클라이언트의 요청을 DispatcherServlet이 받는다.
- DispatcherServlet은 요청된 URL을 HadlerMapping에 넘겨 호출해야 할 컨트롤러 메서드 정보를 얻는다.
- Dispatcher Servlet이 메서드 정보가 담겨 있는 HandlerAdapter를 가져온다.
- HandlerAdapter의 메서드를 실행한다.
- 컨트롤러는 비즈니스 로직을 처리하고 그 결과를 바탕으로 뷰에 전달할 데이터를 Model에 저장한다.
DispatcherServlet에게 View의 이름을 반환한다. - DispatcherServlet은 View의 이름을 View Resolver에 전달하여 View를 얻는다.
- DispatcherServlet은 View에게 화면 표시를 의뢰한다.
- View는 해당하는 뷰를 호출하며 Model에서 화면 표시에 필요한 데이터를 가져와 화면 표시를 처리한다.
'Spring' 카테고리의 다른 글
[Spring] WebClient (1) | 2024.12.09 |
---|---|
Spring Mybatis 페이징 처리 이해하기 2 (0) | 2024.09.11 |
Spring Mybatis 페이징 처리 이해하기 1 (0) | 2024.09.11 |
Spring Framework란 (2) | 2024.09.03 |