본문 바로가기
FrameWork/Spring

DispatcherServlet

by titlejjk 2023. 6. 16.

 

스프링 프레임워크에서 DispatcherServlet은 웹 애플리케이션의 핵심 컴포넌트 중 하나이다. 클라이언트로부터 요청을 받고, 해당 요청을 처리하기 위해 적절한 핸들러로 라우팅하는 역할을 담당한다.

 

DispatcherServlet의 동작을 이해하기 위해 몇가지 개념을 알아보자면

 

DispatcherServlet는 웹 애플리케이션 컨텍스트(Web Application Context)에 의존한다. 웹 애플리케이션 컨텍스트는 스프링의 인터페이스를 구현한 객체로, 스프링 컨테이너에 대한 참조를 갖고 있다. 스프링 빈, 설정 정보, 컴포넌트 스캔 등과 같은 웹 애플리케이션에 필요한 리소스를 로드하고 관리한다.

HandlerMapping을 사용하여 클라이언트 요청을 처리할 핸들러를 찾는다. HandlerMapping은 요청 URL을 특정 핸들러(컨트롤러)와 매핑시키는 역할을 한다. 스프링에서는 다양한 HandlerMapping구현체를 제공하며, 가장 일반적으로 사용되는 것은 AnnotationMethodHandlerMapping과 RequestMappingHandlerMapping이다.

그리고 DispatcherServlet은 HandlerAdapter를 사용하여 선택된 핸들러를 호출한다.

HandlerAdapter는 핸들러(컨트롤러)가 실제로 실행되도록 지원하는 역할을 하는데 스프링은 여러 종류의 핸들러를 처리하기 위해 다양한 HandlerAdapter를 제공한다.

Handler가 실행을 마치면, DispatcherServlet은 ViewResolver를 사용하여 클라이언트(사용자)에게 응답으로 보낼 뷰를 찾는다.

ViewResolver는 뷰 이름을 실제 뷰 객체로 변환해주는 역할을 한다. 스프링에서는 여러가지의 ViewResolver구현체를 제공하며, InternalResourceViewResolver는 JSP와 같은 웹 기반의 뷰를 처리하는데 주로 사용한다.

ModelAndView는 핸들러의 실행 결과 및 뷰 정보를 담고있는 객체인데 핸들러가 ModelAndView 객체를 반환하면, DispatcherServlet은 이를 기반으로 적절한 뷰를 찾아 사용자에게 답을 생성한다.

 

DispatcherServlet는 인터셉터 컴포넌트를 사용하여 들어오는 요청 전후에 로직을 처리하거나, 특정 조건에 따라 요청을 가로채고 처리중단을 한다.(인증과 권한 검사, 로깅, 캐싱 등)

 

예외처리는 HandlerExceptionResolver를 찾아 예외 처리를 요청하고 그에 알맞는 응답을 사용자에게 전송하며, 이 외에도

사용자로부터 전송된 요청 데이터를 매개변수나 모델 객체와 바인딩(자동으로 타입변환수행 및 검증)하는 DataBinder,

언어,국가 등의 지역화 정보를(다국어 지원)위한 LocaleResolver, 그리고 여러 파트로 분할된 요청을 전송할 때 사용하는 MultipartResolver등을 사용해 데이터를 추출하고 처리한다.

 

'FrameWork > Spring' 카테고리의 다른 글

Spring DI(Dependency Injection)  (0) 2023.06.19
MyBatis  (0) 2023.06.19
@RequestMapping  (0) 2023.06.16
@ResponseBody  (0) 2023.06.16
Spring Framework  (0) 2023.06.16

댓글