본문 바로가기
Spring/인프런 토비의 Spring Boot

섹션 3-5 [독립 실행형 서블릿 애플리케이션] 프론트 컨트롤러

by include_hoany 2024. 5. 30.

프론트 컨트롤러

서블릿은 요청마다 하나하나 매핑하여 구현이 필요하여 보일러 플레이트가 발생하는 문제점이 있다. 따라서 서블릿에 접근방법을 개선이 필요로 했고 또한 서블릿은 웹 요청과 응답을 직접적으로 request Object와 response Object를 다뤄줘야 하는 방식이기 때문에 자연스럽지 않는 문제가 있었습니다. 따라서 기본적인 서블릿으로만 기능을 개발하는데 한계가 있었습니다.  이러한 한계를 극복하기 위해 프론트 컨트롤러가 등장하게되었습니다.

프론트 컨트롤러는 서블릿은 각 URL에 맞게 맵핑을 해서 각기 다른 서블릿이 다른 서블릿 URL로 들어오는 요청을 맡아서 처리하는 방식으로 동작을 해야하는데 서블릿에 공통적으로 등장하는 코드를 중앙화된 제일 앞단에 존재하는 컨트롤러라고 이름 붙이는 오브젝트에서 공통적인 작업을 처리하고 요청의 종류에 따라서 이 로직을 처리하는 다른 오브젝트한테 요청을 다시 위임해서 전달하는 방식으로 처리하도록 만들어졌습니다. 공통적인 부분을 제일 앞단에서 먼저 처리하도록 합니다. 꼭 앞단 뿐만아니라 뒤에서 로직을 처리한 후 또 후처리 작업을 하는데도 공통적으로 등장하는 코드가 있다면 이것도 프론트 컨트롤러가 맡아서 처리를 하도록 구현이 가능합니다.

서블릿을 이용해서 프론트 컨트롤러를 만드는 개발방식 많이 사용되어지기 시작했고 프론트 컨트롤러를 내장한 유명한 웹 프레임워크들이 등장을 하기 시작했습니다.

프론트 컨트롤러가 처리해주는 공통적인 작업은 인증, 보안, 다국어 처리 모든 웹 요청에 대해서 공통적으로 린턴해줘야하는 내용이 있다거나 하는 작업들을 프론트 컨트롤러가 처리하는 방식으로 구조 일반화되었고 자바 엔터프라이즈 개발을 하는데 대표적인 패턴으로 자리를 잡았습니다.