클라이언트에서 웹 어플리케이션에 http 요청을 한다.
요청을 하면 여러 메타 데이터 (URL, parameter, http method, header, cookie, etc)를 전달한다.
위 요청 정보들을 HttpServletRequest 라는 객체가 받아서 알맞게 저장한다. (개발자는 이 객체를 사용해 리퀘스트 정보를 사용 가능하다)
클라이언트가 요청을 하면 컨트롤러가 바로 요청을 받는 것처럼 보이지만 사실은 아니다.
최초로 DispatcherServlet에서 최초 요청을 받는다.
@RequestMapping 정보를 통해 클라이언트의 요청을 처리할 컨트롤러를 찾아서 해당 컨트롤러에게 위임 한다.
Http 요청을 해석한다.
실제 요청에 대한 처리를 진행할 비지니스 로직을 가진 Service Layer를 선택한다.
해당 Service Layer에게 리퀘스트 정보를 전달한다.
비지니스 로직 수행 후 모델을 받는다.
어떤 View를 사용할지 결정한다.
컨트롤러는 자신의 책임을 모두 수행한 후 생성된 모델과 뷰를 반환한다.
컨트롤러가 View의 구현체를 반환하는 것이 아니라 View의 정보 (파일명) 을 반환한다.
DispatcherServlet은 컨트롤러로부터 반환된 View의 정보를 이용해 ViewResolver로 구현체를 생성한다.