공부/Spring
[Spring] Http Request에 대한 DispatcherServlet 동작과정
leejinwoo1126
2021. 11. 13. 22:47
반응형
DispatcherServlet 동작과정
- @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/
반응형