최종적으로 직접 구현한 MVC 프레임 워크
- 클라이언트의 HTTP Request To 프론트컨트롤러
- 프론트컨트롤러에서 해당 Request에 따라 핸들러 조회 및 매핑
- 핸들러 어댑터 목록 중, 해당 핸들러를 처리할 수 있는 어댑터 조회
- 핸들러 어댑터를 통해 핸들러를 호출
- 핸들러를 통해 ModelView를 생성해 프론트컨트롤러에 반환
- 뷰 리졸버를 통해 view 논리이름을 물리이름으로 반환(MyView)
- 반환받은 MyView로 렌더링 작업(JSP 호출)
- HTML 응답
SpinrgMVC와 로직구조는 거의 비슷하다!
이러한 복잡한 과정들을 SpringMVC는 어노테이션을 활용하여 편리하게 사용할 수 있다.
MyMVC -> SpringMVC
- FrontController → DispatcherServlet
- handlerMappingMap → HandlerMapping
- MyHandlerAdapter → HandlerAdapter
- ModelView → ModelAndView
- viewResolver → ViewReslover
- MyView → View
DispatcherServlet
DispatcherServlet 도 HttpServlet을 상속받아 사용하고 서블릿으로 동작한다.
SpringMVC 는 DispatcherServlet을 서블릿으로 자동으로 등록하면서 모든 경로(' urlPatterns = "/" ')에 대해서 매핑한다.
구체적인 경로일수록 우선순위가 높아진다.
- 서블릿이 호출되면 HttpServlet이 제공하는 service()가 호출됨
- 스프링 MVC는 DispatcherServlet의 부모인 FrameworkServlet에서 service()가 오버라이드 되어있음
- FrameworkServlet.service()를 시작으로 기존 MVC 흐름에따라 메소드들이 호출되면서 최종적으로DispatcherServlet.doDispatch() 가 호출된다
'MVC with 김영한' 카테고리의 다른 글
로깅(logging) (0) | 2021.10.17 |
---|---|
스프링 애노테이션 (0) | 2021.10.16 |
MVC 프레임워크 (0) | 2021.10.07 |
MVC 패턴 (0) | 2021.10.06 |
서블릿 (0) | 2021.10.04 |