출처
출처1
HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러로 위임해주는 프론트 컨트롤러(Front Controller)
클라이언트로부터 어떠한 요청이 오면 Tomcat같은 서블릿 컨테이너가 요청을 받음
=> 이 모든 요청을 디스패처 서블릿이 가장 먼저 받게 됨
=> 공통적인 작업 처리 후 해당 요청을 처리하는 컨트롤러를 찾아 작업 위임
해당 어플리케이션으로 들어오는 모든 요청을 핸들링해주고 공통 작업을 처리해주며 편리해짐
컨트롤러를 구현해두면 스프링의 디스패처 서블릿이 적합한 컨트롤러로 위임해주는 구조임
Dispatcher Servlet은 모든 요청을 처리함
=> 이미지 / HTML / CSS / JavaScript 등 정적 파일에 대한 요청마저 모두 가로챔
따라서, 해결을 위해
1. 정적 자원에 대한 요청과 어플리케이션에 대한 요청 분리
- 클라이언트의 요청을 2개로 분리하여 구분하는 것
- 코드가 지저분해지며 직관적인 설계가 어렵다는 단점 존재
어플리케이션에 대한 요청을 탐색하고 없으면 정적 자원에 대한 요청으로 처리
어댑터 패턴을 적용함으로써 컨트롤러의 구현 방식에 상관없이 요청 위임 가능해짐