Spring MVC (1) 개념, 기본 동작 흐름

Minkyeong Kim·2021년 11월 28일
0

[boostcourse] Web-Backend

목록 보기
37/55

MVC란?

  • Model : 뷰가 렌더링하는데 필요한 데이터, 예를 들어 사용자가 요청한 상품 목록이나, 주문 내역이 이에 해당함
  • View : 웹 애플리케이션에서 실제로 보이는 부분, 모델을 사용해 렌더링함, 뷰는 JSP, JSF, PDF, XML등으로 결과를 표현함
  • Controller : 사용자의 액션에 응답하는 컴포넌트, 모델을 업데이트하고, 다른 액션을 수행

Model 1 아키텍처

  • 브라우저가 jsp에게 직접 Request
  • 브라우저의 요청만큼 jsp 페이지가 존재해야 함
  • JSP에서 Java Bean을 이용해 데이터베이스 접근

Model 2 아키텍처

  • Java와 HTML 코드가 섞여있는 JSP를 보완하기 위해 새로운 아키텍처 등장
  • 브라우저의 요청을 jsp가 아닌 Servlet이 받도록 함
  • Servlet이 Java Bean을 이용해 데이터베이스에 접근
  • 수행된 결과를 JSP page 형식으로 브라우저에 전달

Model 2 아키텍처 발전 형태

  • 클라이언트의 모든 요청을 딱 하나의 서블릿(프론트 컨트롤러)으로 받음 -> 관련된 URL을 하나의 클래스에서 처리 가능하게 됨

  • 실제 처리는 컨트롤러(또는 핸들러) 클래스에게 위임

  • 컨트롤러에서 Java Bean을 이용해 결과 도출, 모델에 담아 프론트 컨트롤러에 반환

  • 프론트 컨트롤러는 알맞은 에게 모델을 전달하여 결과 전달

  • Spring Web Modlue에서 Model2 MVC 패턴을 지원함

🍒 Spring MVC 기본 동작 흐름

💜: 개발자가 채워야 하는 부분
💙: 스프링에서 제공
💚: 스프링에서 제공하나 가끔 개발자가 채워야 함

Procedure

1) 요청을 보내면 Dispatcher Servlet이 받음

2) Dispatcher Servlet은 요청을 처리해줄 Handler와 메소드 정보를 Handler Mapping에서 알아냄

  • Handler Mapping은 어떤 요청에 어떤 컨트롤러가 동작할 지 xml 또는 java의 어노테이션 등에 설정된 정보를 관리함

3) Handler Adapter에 실행을 요청

4) Handler Adapter에 의해 컨트롤러, 메소드가 실행되어 결과 반환

5) Dispatcher Servlet에 컨트롤러가 반환한 view name을 View Reslover에 전달
6) View Resolver를 통해 뷰 출력

REFERENCES
https://www.boostcourse.org/web326/lecture/58979?isDesc=false

0개의 댓글