DispatcherServlet은 다음과 같이 요청을 처리합니다.
WebApplicationContext는 프로세스의 컨트롤러 및 기타 요소가 사용할 수 있는 속성으로 요청에서 검색되고 바인딩됩니다. 기본적으로 DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE 키 아래에 바인딩됩니다.
로케일 resolver는 프로세스의 요소가 request을 처리할 때(뷰 렌더링, 데이터 준비 등) 사용할 로케일을 resolve할 수 있도록 요청에 바인딩됩니다. 로캘 resolving이 필요하지 않으면 로캘 resolver도 필요하지 않습니다.
테마 resolver는 뷰와 같은 요소가 사용할 테마를 결정할 수 있도록 요청에 바인딩됩니다. 테마를 사용하지 않는다면 무시해도 됩니다.
멀티파트 파일 resolver를 지정하면 요청에서 멀티파트가 검사됩니다. 멀티파트가 발견되면 프로세스의 다른 요소에 의한 추가 처리를 위해 요청이 MultipartHttpServletRequest로 래핑됩니다. 멀티파트 처리에 대한 자세한 내용은 Multipart Resolver를 참조하세요.
적절한 핸들러가 검색됩니다. 핸들러가 발견되면 핸들러(전처리기, 후처리기 및 컨트롤러)와 연관된 실행 체인이 실행되어 렌더링할 모델을 준비합니다. 또는 어노테이션이 달린 컨트롤러의 경우 뷰를 반환하는 대신 response을 (HandlerAdapter 내에서) 렌더링할 수 있습니다.
모델이 반환되면 뷰가 렌더링됩니다. 모델이 반환되지 않으면(보안상의 이유로 전처리기나 후처리기가 요청을 가로채기 때문일 수 있음) request가 이미 이행되었을 수 있으므로 뷰가 렌더링되지 않습니다.
WebApplicationContext에 선언된 HandlerExceptionResolver 빈은 request 처리 중에 발생한 예외를 resolve하는 데 사용됩니다. 이러한 예외 resolver 프로그램을 사용하면 예외를 해결하기 위한 논리를 사용자 정의할 수 있습니다. 자세한 내용은 예외를 참조하세요.
HTTP 캐싱 지원을 위해 핸들러는, 컨트롤러에 대한 HTTP 캐싱에 설명된 대로 어노테이션이 달린 컨트롤러에 대한 추가 옵션과 함께 WebRequest의 checkNotModified 메서드를 사용할 수 있습니다.
web.xml 파일의 Servlet 선언에 Servlet 초기화 매개변수(init-param 요소)를 추가하여 개별 DispatcherServlet 인스턴스를 사용자 정의할 수 있습니다. 다음 표에는 지원되는 매개변수가 나열되어 있습니다.
| 매개변수 | 설명 |
|---|---|
|
|
|
컨텍스트 인스턴스에 전달되는 문자열( |
|
|
|
요청에 대한 핸들러를 찾을 수 없을 때 6.1 버전부터 이 속성은 참고로, 기본 서블릿 처리가 구성되어 있는 경우에도 미해결 요청은 항상 기본 서블릿으로 전달되고 404가 발생하지 않습니다. |