Dispatcher-Servlet이란?

Myong Hyo You
2 min readMay 20, 2020
  1. 개념
    클라이언트로부터 어떠한 요청이 들어오면 서블릿 컨테이너가 요청을 받는다. 이 때 제일 앞에서 서버로 들어오는 요청을 처리하는 프론트 컨트롤러를 Dispatcher-Servlet이라고 한다. (Spring에서 정의함)
    공통작업에 대한 처리는 Dispatcher-Servlet에서 이루어지지만 세부적인 작업 내용은 해당되는 컨트롤러에 위임하여 처리한다.
  2. 특징
    Dispatcher-Servlet이 등장함에 따라 Spring MVC의 web.xml의 역할이 축소되었다. 기존에는 모든 서블릿에 대해 URL 매핑을 활용하기 위해서 web.xml에 모두 등록해주어야만 했다. 그러나 Dispatcher-Servlet이 들어오는 모든 요청을 핸들링해주면서 작업을 상당히 편리하게 할 수 있게 되었다.
    Dispatcher Servlet이 요청들을 Controller로 넘겨주는 것은 편해보이지만, 한가지 문제점이 있다. 이미지나 HTML을 불러오는 요청마저 모두 Controller로 넘겨버린다는 것이다. 심지어 JS나 CSS 파일에 대한 요청 모두 Dispatcher-Servlet이 가져가기 때문에 자원 호출이 제대로 이루어지지 않는다. Spring은 이에 대한 해결책으로 <mvc:resources/>를 이용할 수 있도록 내놓았다. 만약 Dispatcher-Servlet에서 해당 요청에 대한 컨트롤러를 찾을 수 없는 경우에, 2차적으로 설정된 경로에서 요청을 탐색하여 자원을 호출할 수 있도록 한 것이다.

--

--