MVC
Model - View - Controller
소프트웨어 아키텍처 디자인 패턴
사용자 인터페이스 / 비즈니스 로직을 분리하고, 각각을 독립적으로 유지
Model
- 데이터가 들어있는 객체
- 데이터를 관리하고 변경이 발생하면 View에게 알림
- DB와의 연동을 위한 DAO(Data Access Object)와 데이터 구조를 표현하는 DO(Data Object)로 구성
- ex) 쇼핑몰의 검색 기능 - 검색 키워드가 넘어오면 (뷰를 통해) 관련된 상품의 데이터를 찾아 결과를 뷰에 전달
View
- 데이터를 사용자에게 보여주는 사용자 인터페이스(UI)
- 모델의 데이터를 특정 형식으로 표현하여 사용자에게 보여줌
- 사용자 입력을 받아 컨트롤러에 전달
- ex) 검색 키워드를 받아 컨트롤러에 전달 / 검색 결과를 모델로부터 받아 화면 등에 배치
Controller
- 모델과 뷰 사이의 연결고리 역할
- 뷰에서 사용자 입력을 받아 모델을 업데이트
- 모델의 변경 사항을 뷰에 반영
- ex) 쇼핑몰 검색 기능 - 키워드를 받아 모델과 뷰에 값을 처리하여 전달
MVC Model 1
MVC Model 2
Model 1의 JSP는 사용자의 요청을 모두 처리(Controller와 View의 역할 수행)하기 때문에 불필요한 경우에 대해서도 JSP 페이지가 요구됨
≫ 이를 보완하기 위해 현재는 Controller와 View를 분리한 MVC Model2가 사용됨
≫ 사용자의 요청을 Controller에서 처리함
≫ 비즈니스 로직과 사용자 인터페이스를 분리
Spring MVC 구성
화면이 필요하지 않은 경우
- 클라이언트의 요청을 Dispatcher Servlet에서 수신
- Handler Mapping은 Controller의 어떤 메서드를 실행해야 할지 검색
- Handler Adapter는 Handler Mapping를 통해 알게 되어 Dispatcher Servlet에게 전달받은 컨트롤러 정보에 해당하는 메서드 실행
- RestController에서 비즈니스 로직 실행
- 실행 결과를 Response Entity에 담아 전달
- 요청 결과를 사용자에게 전달
@RestController = @Controller + @ResponseBody
화면이 포함된 경우
- Dispater Servlet에서 클라이언트의 요청 수신
- Handler Mapping는 현재 요청에 알맞은 컨트롤러/메소드의 정보를 알아냄
- Dispatcher Servlet에서 보낸 컨트롤러 정보를 Handler Adapter에 보내 컨트롤러 실행 요청
- Handler Adapter는 Controller를 통해 비즈니스 로직 실행
- Controller는 View로 넘겨줄 객체를 Model에 저장하고 Dispatcher Servlet에게 View Name을 반환
- Dispatcher Servlet은 View Resolver에게 View Name을 통해 View를 찾는 작업 요청
- View Resolver는 해당 View를 찾아 반환
- 반환된 View에 대한 렌더링 프로세스를 View에게 요청
Dispatcher Servlet ≫ 프론트 컨트롤러 : 애플리케이션의 전반적인 흐름을 관리!
'spring' 카테고리의 다른 글
타임리프(Thymeleaf) (0) | 2024.09.13 |
---|---|
템플릿 엔진(Template Engine) (0) | 2024.09.13 |
Spring Bean / 생명주기 (0) | 2024.06.14 |
HTTP / REST API (0) | 2024.04.19 |
스프링 프레임워크 / Spring Boot (1) | 2024.04.19 |