Servlet은 각 요청마다 해당 URL에 대해 직접 서블릿을 매핑해야했음
하지만 서블릿이 증가하면서 다음과 같은 문제가 발생하여 서블릿 접근 방법 개선이 필요
중복 코드 문제
서블릿이 여러 개로 늘어나면서, 모든 서블릿이 컨테이너로부터 요청을 직접 받아 처리하게 됨
이 과정에서 대부분의 서블릿은 공통적으로 수행해야 하는 작업이 존재하게 되어 각 서블릿에 중복 됨
⇒ 이걸 해결하는 것이 바로 첫번째 요구 사항이였음
서블릿의 한계
서블릿은 웹 요청과 응답을 직접적으로 request, response 오브젝트를 다뤄줘야 하는 방식이기 때문에 자연스럽지 않아 기본적인 서블릿만 가지고 개발하기에 한계가 존재
⇒ 이러한 한계를 극복하기 위한 첫 번째 시도가 바로 Front Controller
기존 서블릿 구조에서는 각 URL에 대해 서블릿을 개별적으로 매핑하고, 서블릿이 해당 URL로 들어오는 요청을 처리하는 방식으로 동작하지만, 이 방식은 코드 중복과 유지보수 문제가 발생할 수 있음
중앙화된 처리
모든 서블릿에서 공통적으로 등장하는 처리를 프론트 컨트롤러라는 하나의 컨트롤러 객체에서 수행
프론트 컨트롤러는 제일 앞단에서 공통적인 작업을 모두 처리한 후, 요청의 종류에 따라 적절한 로직을 처리할 다른 오브젝트에게 요청을 위임
후처리 작업
프론트 컨트롤러는 앞단의 처리뿐만 아니라, 각 로직이 처리된 후에 필요한 후처리 작업도 처리할 수 있음
각 로직을 처리한 후에 후처리 작업을 할때도 공통 코드가 존재한다면 프론트 컨트롤러가 맡아서 처리하는 것
프론트 컨트롤러는 다음과 같은 공통적인 작업을 처리할 수 있음