[Spring] Spring MVC 동작 원리

SSOYEONG·2022년 3월 17일
0

스프링 입문

목록 보기
2/4
post-thumbnail

Spring MVC의 동작 원리

1. DispatcherServlet - Front Controller 패턴

(1) 웹 브라우저로부터 Request가 들어오면 DispatcherServlet 클래스의 객체가 요청을 받는다.

요청을 한곳에서 받아서 처리하고, 요청에 맞는 handler로 요청을 Dispatch하고, 해당 handler의 실행 결과를 Http Response 형태로 만드는 역할을 한다.

2. HandlerMapping - 컨트롤러 검색

(2) DispatcherServlet은 해당 요청을 처리하기 위한 컨트롤러를 검색하기 위해 HandlerMapping 객체를 이용한다.

HandlerMapping은 여러 개의 Controller 파일 중, request에 해당하는 적합한 컨트롤러를 찾아서 연결한다.

3. HandlerAdapter - 컨트롤러 실행

HandlerMapping으로 실행하지 않고 HandlerAdapter 객체를 따로 둔 이유는?

컨트롤러 구현 방법

  1. @Controller annotation
  2. Controller interface 구현
  3. HttpRequestHandler interface 구현

위 세 가지 방식 중 어떠한 방법으로 컨트롤러를 구현했는지에 상관없이 동일한 방법으로 컨트롤러를 실행하기 위해서이다.

(3) 다시 DispatcherServlet으로 돌아와서 HandlerAdapter에게 요청을 보낸다.
(4) HandlerAdapter는 컨트롤러의 methods 중 요청에 맞는 적합한 method를 매칭하고,
(5) 컨트롤러 실행 결과를 ModelAndView 객체 타입으로 리턴한다.

4. ViewResolver - 컨트롤러의 실행 결과를 보여줄 뷰 객체 검색

뷰도 컨트롤러처럼 검색 객체와 실행 객체를 따로 둔다.

(6) 컨트롤러의 요청 처리 결과를 ModelAndView로 받으면 DispatcherServlet은 결과를 보여줄 뷰 객체를 검색하기 위해 ViewResolver 빈 객체를 사용한다.

5. View - 뷰 객체를 실행하여 응답 결과 JSP 페이지를 생성

(7) ViewResolver 객체로부터 실행해야 할 뷰 객체를 찾았다면, DispatcherServlet은 ViewResolver가 리턴한 View 객체에게 응답 결과 생성을 요청한다.
(8) 마지막으로 View를 Response로 반환한다.

References

profile
Übermensch

0개의 댓글