본문 바로가기

spring

MVC 패턴

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 구성
화면이 필요하지 않은 경우

  1. 클라이언트의 요청을 Dispatcher Servlet에서 수신
  2. Handler Mapping은 Controller의 어떤 메서드를 실행해야 할지 검색
  3. Handler Adapter는 Handler Mapping를 통해 알게 되어 Dispatcher Servlet에게 전달받은 컨트롤러 정보에 해당하는 메서드 실행
  4. RestController에서 비즈니스 로직 실행
  5. 실행 결과를 Response Entity에 담아 전달
  6. 요청 결과를 사용자에게 전달

@RestController = @Controller + @ResponseBody

화면이 포함된 경우

  1. Dispater Servlet에서 클라이언트의 요청 수신
  2. Handler Mapping는 현재 요청에 알맞은 컨트롤러/메소드의 정보를 알아냄
  3. Dispatcher Servlet에서 보낸 컨트롤러 정보를 Handler Adapter에 보내 컨트롤러 실행 요청
  4. Handler Adapter는 Controller를 통해 비즈니스 로직 실행
  5. Controller는 View로 넘겨줄 객체를 Model에 저장하고 Dispatcher Servlet에게 View Name을 반환
  6. Dispatcher Servlet은 View Resolver에게 View Name을 통해 View를 찾는 작업 요청
  7. View Resolver는 해당 View를 찾아 반환
  8. 반환된 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