Spring MVC
서블릿 API를 기반으로 클라이언트의 요청을 처리하는 모듈을 spring-webmvc라 하고, 이를 줄여서 Spring MVC라고 부른다.
( 서블릿이란 클라이언트의 요청을 처리하도록 특정 규약에 맞춰 Java 코드로 작성하는 클래스 파일로, 아파치 톰캣이 서블릿들을 웹 애플리케이션으로 실행되도록 해주는 서블릿 컨테이너 중 하나이다 )
* Spring MVC는 클라이언트의 요청을 편리하게 처리해주는 프레임워크이다.
Model
- Spring MVC의 'M'
- Spring MVC 기반의 웹 애플리케이션이 클라이언트의 요청을 받으면, 요청 사항을 처리하기 위한 작업을 하고, 클라이언트에게 처리한 작업의 결과 데이터를 Model이라 한다.
View
- Spring MVC의 'V'
- Model 데이터를 이용해, 웹 브라우저 같은 클라이언트 애플리케이션의 화면에 보여지는 리소스를 제공하는 역할
Controller
- Spring MVC의 'C'
- 클라이언트의 요청을 직접적으로 전달받는 엔드포인트(endpoint)로, Model과 View 사이에서 상호작용 역할
( 쉽게 말해, Model 데이터를 View로 전달하는 역할 )
- 클라이언트가 요청을 전송하면 DispatcherServlet 클래스에 요청이 전달
- DispatcherServlet은 클라이언트의 요청을 처리할 Controller에 대한 검색을 HandlerMapping 인터페이스에게 요청
- HandlerMapping은 클라이언트 요청과 매핑되는 핸들러 객체를 다시 DispatcherServlet에게 리턴
( 핸들러 객체는 해당 핸들러의 핸들러 메서드 정보를 포함. 핸들러 메서드는 Controller 클래스 안에 구현된 요청 처리 메서드를 의미 ) - DispatcherServlet은 핸들러 메서드를 직접 호출하지 않고, HandlerAdpater에게 핸들러 메서드의 호출을 위임
- HandlerAdapter는 DispatcherServlet으로부터 전달받은 Controller 정보를 기반으로 해당 Controller의 핸들러 메서드를 호출
- Controller의 핸들러 메서드는 비즈니스 로직 처리 후, 리턴 받은 Model 데이터를 HandlerAdapter에게 전달
- HandlerAdapter는 전달받은 Model 데이터와 View 정보를 다시 DispatcherServlet에게 전달
- DispatcherServlet은 전달받은 View 정보를 다시 ViewResolver에게 전달해서 View 검색을 요청
- ViewResolver는 View 정보에 해당하는 View를 찾아서 View를 다시 리턴
- DispatcherServlet은 ViewResolver로부터 전달받은 View 객체를 통해, Model 데이터를 넘겨주면서 클라이언트에게 전달할 응답 데이터 생성을 요청
- View는 응답 데이터를 생성해서 다시 DispatcherServlet에게 전달
- DispatcherServlet은 View로부터 전달받은 응답 데이터를 최종적으로 클라이언트에게 전달
* DispatcherServlet은 실제로 요청에 대한 처리를 다른 구성 요소들(HandlerMapping, HandlerAdapter, ViewResolver, View 등)에게 위임(Delegate)하고 있다.
* DispatcherServlet이 애플리케이션의 가장 앞단에 배치되어, 다른 구성 요소들과 상호작용하면서 클라이언트의 요청을 처리하는 패턴을 Front Controller Pattern이라 한다.
Ref)
'Develop > Spring' 카테고리의 다른 글
Spring MVC - API 계층 (0) | 2022.10.30 |
---|---|
GET, POST 메서드 요청 시, DTO 객체에는 setter가 필요한가? (0) | 2022.10.23 |
Assert.assertTrue(); 안됨 해결 (0) | 2022.07.28 |
@Autowired 란? (0) | 2022.07.27 |
Repository 란? (0) | 2022.07.27 |