HttopRequest에따라서 Controller, 또한 Controller에서 다른 Controller 및 Handler로 데이터를 보낼 수 있도록 만들어준다.
(데이터 이동 가능하게 해줌)
Controllers: View의 요청에 따른 처리
ViewResolver: String핸들러에서 반환 된 논리적 기반 뷰 이름,View 를 응답에 렌더링 할 실제 경로로 변경
HandlerMapping: Web의 요청에 따른 경로 Mapping (path에따른 Controller로 위임)
RootWebApplicationContext 에는 일반적으로 여러 Servlet인스턴스에서 공유해야하는 데이터 저장소 및 비즈니스 서비스와 같은 인프라 빈이 포함됩니다.
자세한과정:SpringDocs3.2
public class DispatcherServlet extends FrameworkServlet {
@Nullable
private MultipartResolver multipartResolver;
@Nullable
private LocaleResolver localeResolver;
@Nullable
private ThemeResolver themeResolver;
@Nullable
private List<HandlerMapping> handlerMappings;
@Nullable
private List<HandlerAdapter> handlerAdapters;
@Nullable
private List<HandlerExceptionResolver> handlerExceptionResolvers;
@Nullable
private RequestToViewNameTranslator viewNameTranslator;
@Nullable
private FlashMapManager flashMapManager;
@Nullable
private List<ViewResolver> viewResolvers;
public DispatcherServlet() {
this.setDispatchOptionsRequest(true);
}
public DispatcherServlet(WebApplicationContext webApplicationContext) {
super(webApplicationContext);
this.setDispatchOptionsRequest(true);
}
.
.
.
1.DispatcherServlet은 FrameworkServlet을 상속하고 있는데
이는 HttpServletBean을 상속하며 WebApplicationServlet,비즈니스로직, Configuration을 관리하고 다룹니다.
1. 실제로 여러가지 Resolver들과 HandlerMapping관련 인터페이스를 맴버변수로 가지고 있음을 알 수 있다.
public interface WebApplicationContext extends ApplicationContext {
String ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE = WebApplicationContext.class.getName() + ".ROOT";
String SCOPE_REQUEST = "request";
String SCOPE_SESSION = "session";
String SCOPE_APPLICATION = "application";
String SERVLET_CONTEXT_BEAN_NAME = "servletContext";
String CONTEXT_PARAMETERS_BEAN_NAME = "contextParameters";
String CONTEXT_ATTRIBUTES_BEAN_NAME = "contextAttributes";
@Nullable
ServletContext getServletContext();
}
1.WebApplicationContexts=ApplicationContext+Web+ServletContext
1.View에서 DispatcherServlet에게 해당 경로로 데이터를 요청하게 됩니다.
2.RequestHandelrMapping에서 OwnerController의 initFindForm으로 Mapping시켜 줍니다.
3.해당 내용을 처리하고 해당내용을 return 하는데 ViewResolver에서 경로 지정하여 전달해줍니다.
DispatcherServlet 은 들어오는 HttpRequest를 처리 하고 요청을 위임 하며 Spring 애플리케이션 내에서 구현 된 구성된 HandlerAdapter 인터페이스 에 따라 해당 요청을 처리합니다.(Handler,Controller,EndPoint 관련 어노테이션을 통해서)