Servlet (서블릿)은 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말함
출처: 위키백과
우선 servlet이 호출되면 아래와 같이 doServlce() 메서드가 호출됩니다. doService()의 코드를 쭉 읽다보면 아래에서 doDispatch() 메서드가 호출되는데요. 메서드 이름에서 알 수 있다시피, 실제로 dispatch를 실행하는 과정이 진행됩니다.
그러면 이제 doDispatch() 메서드로 넘어가서 하나하나 살펴보겠습니다.
[1] 핸들러 조회, 핸들러 어댑터 조회
가장 먼저 doDispatch()에서는 클라이언트의 요청에 해당하는 핸들러를 조회하고, 해당 핸들러를 받기 위한 어댑터를 조회합니다.
[2] 위에서 찾은 핸들러 어댑터의 handle() 메서드를 호출합니다. 이를 통해 ModelAndView를 반환하죠. 그리고 아래에서 processDispatchResult() 메서드를 호출하는데요.
[3] 뷰 렌더링 호출
processDispatchResult() 메서드는 안에서 render() 메서드를 또 다시 호출합니다.
[4] 뷰 렌더링
render() 메서드 안에서는 뷰 리졸버(viewResolver)를 통해 뷰를 찾고, 해당 view를 반환받습니다. 그리고 마지막으로 뷰를 실제로 렌더링하죠.
즉, 핸들러 조회 → 핸들러 어댑터 조회 → 핸들러 어댑터 실행 → 핸들러 실행 → ModelAndView 반환 → ViewResolver 호출 → View 반환 → 뷰 렌더링의 순