본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

프론트 컨트롤러 패턴(Front Controller Pattern)은 웹 애플리케이션의 모든 요청을 하나의 진입점 객체가 먼저 받아 인증·로깅 같은 공통 처리를 한 뒤 요청별 처리기와 뷰로 넘기는 엔터프라이즈 애플리케이션 패턴이다.

요청마다 페이지나 서블릿이 따로 받으면 보안 검사, 국제화, 사용자별 화면 선택 같은 공통 처리가 여러 곳에 흩어져 중복되고, 실행 중에 바꾸기도 어렵다. 마틴 파울러는 프론트 컨트롤러가 모든 요청을 하나의 처리기 객체로 모아 공통 동작을 수행하고(데코레이터로 실행 중에 바꿀 수 있다), 요청별 동작은 커맨드 객체에 맡긴다고 설명한다.[1] 오라클의 Core J2EE Patterns도 컨트롤러를 요청 처리의 최초 접점으로 두고, 인증·권한 확인, 업무 처리 위임, 뷰 선택, 오류 처리를 맡긴다. 결정과 통제를 한곳에 모으면 JSP에 박힌 코드가 줄고 요청 간 재사용이 늘어난다.[2]

참여자 역할
컨트롤러 모든 요청의 최초 접점. 공통 처리를 하고 헬퍼에 인증·데이터 조회를 맡긴다
디스패처 다음에 보여 줄 뷰를 고르고 제어를 그 자원으로 넘긴다(뷰 관리와 내비게이션)
헬퍼 뷰나 컨트롤러의 처리를 돕는다. 뷰가 쓸 데이터를 모으거나 커맨드 객체 역할을 한다
뷰 사용자에게 결과를 표시한다

스프링 MVC의 DispatcherServlet이 대표적인 구현이다. 모든 HTTP 요청을 받아 핸들러 매핑으로 컨트롤러를 찾고, 결과를 뷰 리졸버로 넘긴다. 프론트 컨트롤러가 요청을 한곳에 모아도 싱글턴처럼 개수를 하나로 제한하지는 않는다. 서비스 묶음마다 컨트롤러를 따로 둘 수 있다.

  • 장점 - 보안·로깅·국제화 같은 공통 정책을 한곳에서 적용한다. 요청 흐름(내비게이션)을 중앙에서 관리한다. 페이지마다 같은 코드를 복사하지 않는다.
  • 단점 - 컨트롤러가 비대해지면 병목과 복잡도의 중심이 된다. 요청 분기 규칙을 잘 나누지 않으면 거대한 조건문이 된다.

비슷한 패턴과 구별하기

편집 원본 편집
패턴 무엇을 한곳에 모으나 구별 포인트
프론트 컨트롤러 요청 접수와 공통 처리 요청 하나를 받아 알맞은 처리기·뷰로 보낸다. 일을 쪼개 병렬로 시키지 않는다
MVC 패턴 - 화면(뷰), 데이터·로직(모델), 입력 해석(컨트롤러)을 나눈다. 프론트 컨트롤러는 MVC의 컨트롤러 계층을 구현하는 한 방식이다
마스터-슬레이브 패턴 작업 분할과 결과 병합 마스터가 작업을 분할해 슬레이브에 병렬로 맡기고 결과를 병합한다
파이프 앤 필터 - 처리 단계를 순서대로 잇는다
책임 연쇄 패턴 - 요청을 처리할 수 있는 객체를 만날 때까지 사슬을 따라 넘긴다. 서블릿 필터 체인이 예이다
  1. ↑ Martin Fowler, 「Front Controller」, Patterns of Enterprise Application Architecture 카탈로그, https://martinfowler.com/eaaCatalog/frontController.html, 확인일: 2026-11-04.
  2. ↑ 「Core J2EE Patterns - Front Controller」, Oracle, https://www.oracle.com/java/technologies/front-controller.html, 확인일: 2026-11-04.