ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Front Controller Pattern 아이디어 구현에 따른 변경
    Spring/MVC 2026. 5. 13. 17:59
    2026.05.13 작성
    Front Controller Pattern을 적용하면서 변경된 URL 매핑 환경과 그에 영향을 받은 것을 생각하며 작성한 글입니다.
    학습 중 생각 정리의 목적으로 작성된 글로, 전반적으로 짧습니다.

     


     

    Front Controller Pattern이란?

    모든 클라이언트 요청에 대해 단일 진입점을 두는 디자인 패턴입니다.

     

    Front Controller Pattern 도입의 이유

    과거에는, URL의 개수 만큼 Servlet이 존재했습니다.

    URL이 늘어나면 늘어날 수록 그에 매칭되는 Servlet을 작성해야 했고, 중복 코드와 관리 부담이 함께 늘어났습니다.

     

    Servlet을 통한 Front Controller Pattern 아이디어 구현

    하나의 Servlet을 두고, 내부에서 doGet(), doPost() 와 같은 메서드를 두고, URL을 해당 메서드 내부에서 분기하여 알맞은 처리를 하도록 했습니다.

     

    Spring MVC을 통한 Front Controller Pattern 아이디어 구현

    Servlet의 역할을 Spring MVC의 DispatcherServlet 에게 위임합니다. 즉, 개발자 직접하던 URL 매핑을 DispatcherServlet 이 대신하게 된 것입니다.

    *순수 Spring MVC를 사용할 때는 개발자가 web.xml에 DispatcherServlet 을 직접 등록해야 했습니다. 그러나 Spring Boot는 이 설정을 자동화합니다.

     

    DispatcherServlet 의 경로는 "/*"로, 해당 경로로 모든 요청을 가로챕니다. 때문에 경로에도 아래와 같은 변화가 생깁니다.

    전: http://localhost:8080 / myApp / loginServlet
    후: http://localhost:8080 / myApp / login
                                        ^^^^^^
                                      @GetMapping으로 매핑

     

    아래는 Spring Boot에서의 경로 변화

    더보기

    myApp의 경우 Context-path라고 하는 애플리케이션 주소로, 과거에는 하나의 Tomcat에 여러 개의 애플리케이션을 띄웠기 때문에 필요로 했으나, Spring Boot에서는 한 애플리케이션 당 하나의 내장 Tomcat을 이용하게 되므로 Tomcat 내부에서 애플리케이션을 구별할 필요가 없어졌으므로 자연스레 없어졌습니다.

    전: http://localhost:8080 / myApp / login
    후: http://localhost:8080 / login
                                ^^^^^^
                              Context Path 사라짐

     

     


     

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

    Spring MVC @Controller와 @RestController의 차이점  (0) 2025.02.17
Designed by Tistory.