공부/Spring

[Spring] Http Request에 대한 DispatcherServlet 동작과정

leejinwoo1126 2021. 11. 13. 22:47
반응형

DispatcherServlet 동작과정

출처-Overview of Spring MVC Architecture

  • @Controller 인 경우
    • ① Client(사용자)에서 브라우저 통해 Http Request 보내면 DispatcherServlet이 받음
    • HandlerMapping한테 지시하여 Http Request URI에 맞는 Handler(Controller)를 찾음
    • ③ 해당 Handler를 실행할 수 있는 HandlerAdapter를 탐색
    • ④ 찾은 HandlerAdapter를 사용해서 Handler Method를 실행
    • ⑤ 개발자가 만든 비즈니스 로직을 수행 후 View name(ex. "index")과 model (key, value 형태) 반환받음
    • ⑥ DispatcherServlet은 ViewResolver 에게 View name전달하여 해당 View 파일을 찾게 됨
    • ⑦ 찾은 View 파일에 Model 객체를 전달하여 데이터가 있을 경우 렌더링하고, 없을 경우 View를 그대로 사용
    • ⑧ 최종적으로 DispatcherServlet 은 View 결과를 HttpServeltResponse에 담아서 Client(사용자)에게 반환
  • @RestController 인 경우
    • View를 찾고 처리하는 과정(⑥,⑦) 없이, 비즈니스 로직 수행 결과를 HttpServeltResponse(응답객체)에 담아서 반환함

요약

  • DispatcherServlet을 Front Controller라고 부름
  • 요청/로직실행/응답을 프레임워크에서 제어권 가지고 처리해주기 때문에 개발자는 비지니스 로직에 집중 가능해짐 (IoC, 제어의 역전)
개발자가 비즈니스 로직 생성하고 Mapping 설정하면, 
Http Request 요청시 DispatcherServlet이 해당 Mapping을 찾아 정보 전달 및 함수 실행하고 
그 결과를 HttpServletResponse 객체 담아 요청자에게 반환하게 됨 

=> 서버에서 받은 응답(파일,데이터 등)을 브라우저 엔진을 통해 화면에 표출함 !

참고

https://tecoble.techcourse.co.kr/post/2021-06-25-dispatcherservlet-part-1/
https://tecoble.techcourse.co.kr/post/2021-07-15-dispatcherservlet-part-2/

반응형