SPRING

11. Web MVC 요청 처리 과정

ggomjiu 2025. 5. 26. 19:23

MVC 패턴의 한계

1. forward 중복

: view로 이동하는 코드 중복 호출

 

2. 사용하지 않는 코드

- response 객체

 

3. 공통 처리가 어려움

- 기능이 증가함에 따라 공통 처리 부분 증가

 

Front Controller의 등장

: 기존 MVC 패턴이 지니고 있던 단점들을 극복하기 위해 발전된 구조

- 모든 클라이언트의 요청이 단일 진입점인 FrontController로 집중됨

- 특징 )

  • FrontControllerServlet 하나로 클라이언트 요청을 받음
  • FrontController가 요청에 맞는 컨트롤러를 찾아 호출
    • 이로 인해 공통 처리가 가능해짐
  • FrontController를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨

- FrontController 도입 전 )

- FrontControler 도입 후 )

DispatcherServlet

: HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러

- 웹 어플리케이션에서 FrontController 패턴을 구현하는 방식 중 하나

- 요청 처리 단계 )

  1. 클라이언트로부터 HTTP 요청이 도착하면 서블릿 컨테이너는 DispatcherServlet에 해당 요청을 전달
  2. DispatcherServlet은 HandlerMapping을 사용하여 요청을 처리할 핸들러는 결정
  3. DispatcherServlet은 HandlerAdapter를 사용하여 결정된 핸들러를 실행
  4. DispatcherServlet은 ViewResolver를 사용하여 처리 결과를 절적한 뷰로 변환
  5. DispatcherServlet은 변환된 뷰를 사용하여 클라이언트에게 응답을 생성

- HandlerMapping : 요청을 적절한 핸들러에 매핑하는 역할을 담당

- HandlerAdapter : 핸들러를 실행하고 요청을 처리하는 역할을 수행

- ViewResolver : 요청 처리 결과를 뷰로 변환하여 응답으로 보내는 역할을 담당

- 장점 )

  • web.xml의 역할을 상당히 축소해줌
    • 과거에는 모든 서블릿을 URL 매핑을 위해 web.xml에 모두 등록해줘야 했지만, DispatcherServlet이 해당 어플리케이션으로 들어오는 모든 요청을 핸들링해주고 공통 작업을 처리해줌
    • 컨트롤러를 구현하기만 하면 DispatcherServlet이 알아서 적합한 컨트롤러로 위임해줌

 

 

 

 

 

 

 

 

 

 

Reference

https://mangkyu.tistory.com/18