MVC Pattern
- Model
- Service, DAO 등
- 애플리케이션 상태 캡슐화
- 비즈니스 로직 처리
- 변경을 View에게 통지
- View
- Model을 화면에 시각적으로 표현
- 사용자 입력을 Controller에 전달
- Controller가 View를 선택하도록 허용
- Controller
- 애플리케이션의 행위 정의
- 응답에 대한 View 선택
Spring MVC
- DI나 AOP 같은 기능 뿐 아니라, Servlet 기반의 웹 개발을 위한 MVC Framework 제공
- Model 2 Architecture와 Front Controller Pattern 제공
- DispatcherServlet(Front Controller)
- Front Controller: Controller 앞단에 위치해서 기능 수행
- 모든 클라이언트의 요청을 받음
- Controller에게 클라이언트의 요청을 전달하고, Controller가 리턴한 결과값을 View에게 전달하여 알맞은 응답 생성
- HandlerMapping
- 클라이언트의 요청 URL을 어떤 Controller가 처리할지 결정
- URL과 요청 정보를 기준으로 어떤 핸들러 객체(Controller)를 사용할지 결정하는 객체이며, DispatcherServlet은 하나 이상의 핸들러 매핑을 가질 수 있음
- Controller
- 클라이언트의 요청 처리 후, Model을 호출하고 ModelAndView 리턴
- ModelAndView
- Controller가 처리한 데이터 및 화면에 대한 정보 보유(Model과 View의 이름)
- ViewResolver
- Controller가 리턴한 View의 이름을 기반으로 View 결정
- View
구현 단계
- web.xml에 DispatcherServlet 등록 및 Spring 설정 파일 등록
- 컨테이너는 설정 파일의 내용을 읽고 ApplicationContext 객체 생성
- 1개 이상의 DispatcherServlet 설정 가능
- 각 DispatcherServlet 마다 각각의 ApplicationContext 생성
- 설정 파일에 HandlerMapping 설정
- Controller 구현 및 Context 설정 파일에 등록
- Controller와 jsp의 연결을 위해 ViewResolver 설정
- jsp 코드 작성