Processing

Dev.Hammy·2024년 3월 26일
0

반응형 스택에서 이에 상응하는 내용 보기

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 캐싱에 설명된 대로 어노테이션이 달린 컨트롤러에 대한 추가 옵션과 함께 WebRequestcheckNotModified 메서드를 사용할 수 있습니다.

web.xml 파일의 Servlet 선언에 Servlet 초기화 매개변수(init-param 요소)를 추가하여 개별 DispatcherServlet 인스턴스를 사용자 정의할 수 있습니다. 다음 표에는 지원되는 매개변수가 나열되어 있습니다.

표 1. DispatcherServlet 초기화 매개변수
매개변수 설명

contextClass

ConfigurableWebApplicationContext를 구현한 클래스로, 이 서블릿에서 인스턴스화되고 로컬로 구성됩니다. 기본적으로 XmlWebApplicationContext가 사용됩니다.

contextConfigLocation

컨텍스트 인스턴스에 전달되는 문자열( contextClass로 지정됨)로, 컨텍스트를 찾을 수 있는 위치를 나타냅니다. 문자열은 여러 개의 문자열로 구성될 수 있으며(쉼표를 구분자로 사용), 여러 컨텍스트를 지원합니다. 두 번 정의된 빈이 있는 여러 컨텍스트 위치의 경우, 최신 위치가 우선합니다.

namespace

WebApplicationContext의 네임스페이스입니다. 기본값은 [servlet-name]-servlet입니다.

throwExceptionIfNoHandlerFound

요청에 대한 핸들러를 찾을 수 없을 때 NoHandlerFoundException을 throw할지 여부입니다. 그런 다음 예외를 HandlerExceptionResolver(예: @ExceptionHandler 컨트롤러 메서드 사용)를 사용하여 catch하고 다른 예외처럼 처리할 수 있습니다.

6.1 버전부터 이 속성은 true로 설정되어 있으며 사용이 중단되었습니다.

참고로, 기본 서블릿 처리가 구성되어 있는 경우에도 미해결 요청은 항상 기본 서블릿으로 전달되고 404가 발생하지 않습니다.

0개의 댓글