• Home
  • About
    • Junseok photo

      Junseok

      개발자 블로그

    • Learn More
    • Facebook
    • Instagram
    • Github
  • Posts
    • All Posts
    • All Tags
  • Java
    • java-basic
    • java-solid
    • java-pattern
    • java-logging
  • Javascript
  • Angular
  • spring
    • spring-framework
    • spring-boot
    • spring-test
  • server
    • jeus
    • webtob
    • tomcat
  • test
    • junit
    • assertj
    • hamcrest
    • dbunit
    • spring
  • docker
  • unix
  • maven
  • db
  • network
  • eclipse
  • intellij
  • microservices
  • etc

DispatcherServlet 요청 순서

17 Dec 2018

Reading time ~1 minute

DispatcherServlet 소스 분석

dispatcherServlet 요청 순서

  1. doService
  2. doDispatch : 핸들러에 실제 디스패치를 처리합니다. 아래는 doDispatch 분석 내용

  3. WebAsyncUtils
    비동기 웹 요청 처리와 관련된 유틸리티 메소드입니다.
    현재 요청에 대해 WebAsyncManager를 가져 오거나 찾지 못한 경우 요청과 함께 만들어서 연결합니다.
    asyncManager를 가져온다. servletRequest의 getAttribute 이름은 WEB_ASYNC_MANAGER 가져온다.
    없으면 인스턴스화 해서 setAttribute 이름 WEB_ASYNC_MANAGER 한다.

  4. Multipart인지 검사한다.
    DispatcherServlet의 multipartResolver 가 null 이 아니고 multipart 요청이 맞는지 확인..

  5. 현재 요청에 대한 handler 결정
  6. 현재 요청에 대한 handler adapter 결정
  7. Handler 에서 지원하는 경우 마지막으로 수정된 haeder를 처리한다.
  8. Interceptor.preHandle 실행
  9. 실제 handler 호출
  10. Interceptor.postHandle 호출
  11. Exception 검사하고 mav 렌더링 -> locale 설정 header 정보의 accept-language 를 가져옴. (ko_kr, ko, en-US, en)
    dispatcherServlet 에 등록한 viewResolver 에 viewName과 local을 던져서 view를 가져옴. (jstlView) 없으면 다음 viewResolver 검색 반복.
  12. interceptor.afterCompletion 실행


springframeworkDispatcherServlet Share Tweet +1