리루

5. Servlet (써블릿) - DispatcherServlet 본문

카테고리 없음

5. Servlet (써블릿) - DispatcherServlet

뚱보리루 2020. 2. 2. 22:12

1. 요청이 어떻게 처리되느냐?

 - 해당 요청의 정보들을 판단한다.(Multipart, Theme, etc..)

 - 요청을 처리할 수 있는 Handler를 찾는다. (DispatcherServlet 이 들고있는 여러 종류의 HandlerMapping 중, 기본적으로는 BeanNameUrlHandlerMapping, RequestMappingHandlerMapping 인터페이스가 있다.)

 - RequestMappingHandlerMapping 가 @Controller, @GetMapping, @PostMapping 등을 사용한 Handler를 찾아준다.

 - 찾은 Handler를 가져와 어느 HandlerAdapter가 찾아낸 Handler를 실행할 수 있는가를 찾아낸다. 이 경우에는 RequestMappingHandlerAdaptor가 해당 Handler를 지원한다.

 - HandlerInternal Method 안에서 Java의 Reflection을 통해서 invokeHandlerMethod를 수행한다.

 - 해당 Hander를 수행하고, 결과값을 반환한다.

 - 여러 타입(15가지)의 ReturnValueHandler 중 반환되는 값의 타입을 어던 Handler가 처리해줄 수 있는지 선택된다.

 - @RestController(@Controller + @ResponseBody)일 경우에는 RequestResponseBodyMethodProcessor 가 처리해줄 수 있다.( 그리고 이 상황에서는 ModelAndView 값은 Null이다.)

 - Convertor를 사용해 Return 값을 Http Reponse 본문에 넣어주는 역할을 한다.