새발블로그

[Spring] FrontController 본문

Server/Spring

[Spring] FrontController

EUG 2025. 7. 6. 16:37

1. Front Controller 패턴이란?

정의

모든 요청을 단일 진입점(Controller) 으로 받아서, 적절한 처리 로직(Controller, Service, DAO 등)에 분기(dispatch) 하는 아키텍처 패턴

주요 역할

  • 요청 URI 분석
  • 어떤 컨트롤러나 커맨드로 보낼지 결정
  • 응답 방식(Forward, Redirect) 결정
  • 예외 및 404 처리

2. FrontController 아키텍처

[Client]
   ↓ 요청
[FrontControllerServlet (Front Controller)]
   ↓ URI 분기
[Command 구현체 (Controller 역할)]
   ↓
[Service → DAO → DB]
   ↑
[View(JSP)] ← Forward/Redirect ← FrontController

핵심 구성 요소

구성 요소  역할
FrontControllerServlet 모든 요청의 진입점 (@WebServlet("/"))
Command 인터페이스 각각의 요청 처리 방식 정의 (execute())
Map<String, Command> URI에 따라 알맞은 로직 연결
/WEB-INF/views/*.jsp 실제 사용자에게 보여지는 화면 (View)
"redirect:/경로" 리다이렉트 요청 처리

3. DispatcherServlet이란?

  • DispatcherServlet 은 공통 기능을 제공하는 부모 클래스
  • FrontControllerServlet 이 그걸 상속해서 앱별로 기능 확장

아키텍처

               [ Client ]
                   ↓
     ┌────────────────────────┐
     │  DispatcherServlet     │ (Front Controller)
     └────────────────────────┘
             ↓ 분석
       getMap / postMap
             ↓
    ┌───────────────┐
    │ Command 구현체 │  ex) TodoController#getList
    └───────────────┘
             ↓
      Service → DAO → DB
             ↑
   Forward / Redirect View (JSP)

4. Spring MVC와 비교

Java Servlet 기반 (직접 구현) Spring MVC
FrontControllerServlet 직접 구현 DispatcherServlet 자동 제공
Command 인터페이스 @Controller, @RequestMapping, @GetMapping, ...
Map<String, Command> 수동 관리 URL → 메서드 매핑 자동 관리 (핸들러 매핑)
View 이름 → 직접 prefix/suffix 조립 ViewResolver 자동 처리
request/response 수동 처리 파라미터 자동 바인딩, 모델 관리 지원
JSP만 지원 JSP, Thymeleaf, JSON 등 다양한 View 지원

5. Spring MVC 동작 순서

[사용자 요청] → DispatcherServlet →
    1. HandlerMapping: 어떤 컨트롤러의 어떤 메서드가 이 요청을 처리할지 결정
    2. HandlerAdapter: 해당 메서드 실행
    3. Controller: 비즈니스 로직 처리 후 viewName 반환
    4. ViewResolver: viewName으로 실제 뷰(JSP, Thymeleaf 등) 선택
    5. View: 사용자에게 화면 응답

6. 비교

  

기능 직접 구현 (Servlet) Spring MVC
요청 처리 FrontControllerServlet DispatcherServlet
라우팅 Map + URI 수동 분기 어노테이션 자동 처리
요청 핸들러 Command 객체 @Controller, @RequestMapping
View 처리 forward/redirect 수동 처리 자동 ViewResolver
개발자 편의성 낮음 (직접 다 구현) 높음 (자동 바인딩, 검증 등 포함)

Front Controller vs DispatcherServlet

항목 설명
Front Controller (패턴) 하나의 진입점에서 모든 요청을 받아 처리하는 아키텍처 패턴 이름입니다. 디자인 패턴의 개념
DispatcherServlet (Spring) Spring에서 Front Controller 패턴을 구현한 클래스입니다. 즉, Front Controller 패턴의 구현체

 

 정리: DispatcherServlet은 Front Controller 패턴의 대표적인 구현체 (Spring MVC에서 사용).

'Server > Spring' 카테고리의 다른 글

[Spring] Bean 등록 방식 (수동 vs 자동)  (0) 2025.07.08
[Spring] Spring Container 스프링 컨테이너  (0) 2025.07.06
[Spring] 요청 포워딩  (1) 2025.07.06
[Spring] 필터  (0) 2025.07.06
CORS (Cross-Origin Resource Sharing)  (0) 2025.06.25