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 패턴을 구현하는 방식 중 하나
- 요청 처리 단계 )
- 클라이언트로부터 HTTP 요청이 도착하면 서블릿 컨테이너는 DispatcherServlet에 해당 요청을 전달
- DispatcherServlet은 HandlerMapping을 사용하여 요청을 처리할 핸들러는 결정
- DispatcherServlet은 HandlerAdapter를 사용하여 결정된 핸들러를 실행
- DispatcherServlet은 ViewResolver를 사용하여 처리 결과를 절적한 뷰로 변환
- DispatcherServlet은 변환된 뷰를 사용하여 클라이언트에게 응답을 생성
- HandlerMapping : 요청을 적절한 핸들러에 매핑하는 역할을 담당
- HandlerAdapter : 핸들러를 실행하고 요청을 처리하는 역할을 수행
- ViewResolver : 요청 처리 결과를 뷰로 변환하여 응답으로 보내는 역할을 담당
- 장점 )
- web.xml의 역할을 상당히 축소해줌
- 과거에는 모든 서블릿을 URL 매핑을 위해 web.xml에 모두 등록해줘야 했지만, DispatcherServlet이 해당 어플리케이션으로 들어오는 모든 요청을 핸들링해주고 공통 작업을 처리해줌
- 컨트롤러를 구현하기만 하면 DispatcherServlet이 알아서 적합한 컨트롤러로 위임해줌
Reference
https://mangkyu.tistory.com/18