원본
How Spring MVC Works Internally
'우체국'
에서 시작해서 '우체부'
에게 전달되고, 최종적으로 사용자에게 '택배'
가 도착하는 과정으로 이해해보기DispatcherServlet
이 그 요청을 받음DispatcherServlet
은 '지도'인 HandlerMapper
에게 어떤 '우체부'(컨트롤러)가 이 편지(요청)를 배달해야 하는지 물어봄HandlerMapper
는 지도를 보고 이 요청을 처리할 '우체부'(컨트롤러)를 찾아 DispatcherServlet
에 알려줌DispatcherServlet
은 해당 '우체부'(컨트롤러)에게 요청을 전달함/WEB-INF/views/profile.jsp
에 위치해 있다고 해도, 컨트롤러에서는 이를 'profile'
이라는 논리적 이름으로 참조할 수 있음DispatcherServlet
에 반환하고, DispatcherServlet
은 ViewResolver
를 사용하여 이 논리적 이름에 해당하는 실제 뷰 파일의 경로를 찾아냄ViewResolver
는 논리적 이름을 받아 실제 파일 경로로 변환하는 규칙을 가지고 있음'profile'
이라면, ViewResolver
는 이를 /WEB-INF/views/profile.jsp
로 변환할 수 있음ViewResolver
의 설정만 업데이트하면 되므로 애플리케이션의 유연성과 유지보수성이 향상DispatcherServlet
은 '포장 직원'(ViewResolver)에게 '포장지'의 종류(뷰의 논리적 이름)를 알려주고, 실제로 사용할 '포장지'(뷰 파일)를 결정하도록 함. '포장 직원'는 이 논리적 이름을 바탕으로 애플리케이션에서 사용할 실제 '포장지'(뷰 파일)를 찾아 '우체부'에게 제공함DispatcherServlet
에게 알려줌DispatcherServlet
은 정보(모델)와 '상자'(뷰)를 '포장대'(View)로 보냄DispatcherServlet
은 포장된 '택배'(HTML 응답)를 브라우저로 보내고, 브라우저는 그 '택배'를 열어 사용자에게 보여줌