DispacherServlet
HttpServlet 을 상속 받으며, 서블릿으로 동작합니다.
그래서 스프링 부트는 DispacherServlet 을 서블릿으로 자동 등록하면서 모든 경로에 대해 매핑합니다.
요청 흐름
1) 서블릿이 호출되면 HttpServlet 이 제공하는 service() 가 호출됨
2) Spring MVC에서 DispatcherServlet 의 부모인 클래스의 service() 를 호출하면서
DispacherServlet.doDispatch() 가 호출됩니다.
doDispatch()
1) 핸들러 조회 : mh = getHandler()
- 핸들러 매핑을 통해 URL 에 매핑된 핸들러를 조회
2) 핸들러 어댑터 조회 : ha = getHandlerAdapter()
- 핸들러를 실행할 수 있는 핸들러 어댑터 조회
3) 핸들러 어댑터 실행 : ha.handle(request, response, mh.geHandler() )
=> ModelAndView 반환
- 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView 로 변환해서 반환
4) 뷰 리졸버를 통해 뷰 찾기 => 뷰 반환
- 뷰 리졸버를 찾아 실행
뷰 리졸버의 역할 :
뷰의 논리를 물리 이름으로 바꾸고, 렌더링 역할을 담당하는 뷰 객체를 반환한다.
5) 뷰 렌더링
- 뷰를 통해 뷰를 렌더링
DispacherServlet 의 장점
코드의 변경 없이 원하는 기능을 변경하거나 확장할 수 있다는 점입니다.
그 이유는 대부분의 핵심 기능이 인터페이스로 제공되기 때문입니다.
주요 인터페이스
1) 핸들러 매핑 : HandlerMapping
2) 핸들러 어댑터 : HandlerAdapter
3) 뷰 리졸버 : ViewResolver
4) 뷰 : View
'스터디' 카테고리의 다른 글
로그인 페이지는 GET ? POST ? (1) (0) | 2022.12.01 |
---|---|
logging 알아보기 (0) | 2022.11.30 |
MVC 패턴 (0) | 2022.11.28 |
백엔드에서의 HTML, HTTP 간단한 요점 (0) | 2022.11.24 |
멀티 쓰레드 (0) | 2022.11.24 |