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

+ Recent posts