MVC 패턴 개요

Servlet에서 요청을 받고 주 로직 처리는 JSP 에서 처리하다 보니 JSP의 코드가 굉장히 난잡해졌다.

뷰에 포함되어있던 비즈니스 로직을 컨트롤러 단으로 옮긴 뒤, 뷰에서는 화면 출력 처리만 담당하도록 개선할 수 있다.

(비즈니스 로직을 컨트롤러에 두지 않고, 서비스 레이어로 한번 더 분리하기도 한다.)

뷰와 컨트롤러 사이에 데이터를 주고받을 수 있도록 데이터 전송 객체(DTO; Getter Setter만 있는 단순 객체)를 사용하는데, 이를 Model이라고 한다.

Model, View, Controller가 분리된 이러한 패턴을 MVC 패턴이라고 한다.

Spring Web에서의 MVC패턴

Spring에서는 모든 요청을 공통 컨트롤러(Dispatcher Servlet)가 받고, URL 패턴과 메서드에 따라 적절한 컨트롤러(Servlet이 아니다!)로 요청 처리를 위임한다.

Untitled

(사진에서 FrontController라고 표시된 역할을 Dispatcher Servlet이 담당한다.)

따라서 Spring Web MVC를 사용하면 더 이상 HttpServlet을 상속받아 Servlet 을 구현할 필요가 없다.

더불어, 모든 Servlet에서 처리해야 하는 공통 로직을 DispatcherServlet에 구현해 공통 처리가 가능하다.

의존성 추가

시리즈 제목은 Spring Web MVC이면서 아직까지 Spring을 의존성에 추가하지도 않고 있었다.

Spring Web MVC가 필요한 이유를 설명하기 위해 긴 여정을 거쳤다.