중앙에 위치한 DispatcherServelet이 모든 연결을 담당
브라우저로부터 요청이 들어오면 HandleMapping이라는 빈 객체에게 컨트롤러 검색을 요청한다(경로를 이용해서)
@Controller, Controller 인터페이스, HttpRequestHandler 인터페이스를 동일한 방식으로 처리하기위해 중간에 HandlerAdapter를 사용한다.
Mapping에게 찾고, Adapter가 실행
-
Adapter는 컨트롤러의 메서드를 호출해서 요청을 처리, 결과를 DispatcherServelet에 리턴한다.
이 때 M&V라는 객체로 반환되어 리턴된다.
M&V로 받았으면 DS은 ViewResolver에게 위임, View 객체를 찾거나 생성해서 리턴한다.
-
클라이언트 요청을 처리하기 위해 사용되는 타입 중에는 HttpRequestHandler도 있다.
실제 처리 : HAndler
-
DispatcherServelet은 전달받은 설정 파일을 이용해서 스프링 컨테이너를 생성하는데, 이 컨테이너에서
HandlerMapping, HandlerAdapter, 컨트롤러, ViewResolver등의 빈 을 구한다.
사용한 핸들러의 종류에 따라 HandlerMapping과 HandlerAdapter를 스프링 빈으로 등록해야 하는데
@Configuration
@EnableWebMVC
MVCConfig { }
RequestMappingHandlerMapping
RequestMappingHandlerAdapter 가 자동 추가된다.
-
@Configuration
@EnableWebMVC
MVCConfig implements WebMvcConfigurer { }
@Override ->
configureServeletHandling -> configure.enable();
configureViewResolvers -> registry.jsp("WEB-INF/view/", ".jsp");
외에도 컨피규어패스매치 / 컨피규어디폴트서블릿핸들링 / 애드포매터 / 애드인터셉터