우당탕탕

[Spring] 디스패처 서블릿이란? (Dispatcher Servlet) 본문

Tech/Spring

[Spring] 디스패처 서블릿이란? (Dispatcher Servlet)

모찌모찝 2022. 8. 22. 18:24
디스패처 서블릿이란 무엇인가?

디스패처 서블릿

디스패처 서블릿이란 서블릿 컨테이너의 가장 앞단에서 HTTP 프로토콜로 들어오는 모든 요청을 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러이다.


프론트 컨트롤러란?

프론트 컨트롤러(Front Controller)란 서블릿 컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 모든 요청을 받아서 처리해주는 컨트롤러이다.
프론트 컨트롤러가 도입되기 전에는 각 컨트롤러마다 공통 로직을 복붙 형식으로 다시 작성하여 사용했지만, 프론트 컨트롤러가 도입된 이후에는 공통의 로직에 대한 처리가 가능해졌다.

프론트 컨트롤러

 

디스패처 서블릿의 흐름 ( Spring MVC 동작순서 )

Dispatcher Servlet 흐름


백엔드 개발자 면접 질문으로도 가끔 등장하는 디스패처 서블릿의 흐름이다.
스프링 부트에서는 스프링 부트 구동시 DispatcherServlet을 서블릿으로 자동 등록하고, 모든 경로 "/"에 대해 매핑한다.

1. 처음 클라이언트에서 요청이 오면 디스패처 서블릿이 해당 요청을 받는다.
2. Handler Mapping을 통해 요청에 알맞은 컨트롤러를 찾아낸다.
3. 찾아낸 컨트롤러를 Handler Adapter를 통해 해당 컨트롤러의 메서드를 실행시킨다.
4. 컨트롤러는 요청을 처리한 뒤 처리한 결과와 해당 뷰 정보(ModelAndView)를 다시 디스패처 서블릿에게 전달한다.
5. 받은 정보로 디스패처 서블릿은 View Resolver를 통해 View 파일을 찾는다.


이와 같은 흐름을 가지며, 간단하게 말하면 요청을 처리할 컨트롤러를 찾아서 위임하고 처리된 결과를 받는 것이라 생각하면 될 거 같다. 

Comments