본문 바로가기
✨ Back-end/etc

스프링(Spring) MVC 패턴에 대한 개념과 동작 순서

by 환풍 2023. 8. 29.
728x90
반응형

 

스프링 MVC ( Model- View- Controller ) Pattern

Model 

  • 어플리케이션 상태의 캡슐화
  • 어플리케이션의 기능 표현
  • 상태 쿼리에 대한 응답
  • 변경을 view에 전달

View

  • 모델에게 업데이트 요청
  • 모델을 화면에 시각적으로 표현
  • 사용자의 입력을 컨트롤러에 전달
  • 컨트롤러가 View를 선택하도록 허용

Controller

  • 사용자 액션을 모델 업데이트와 Mapping
  • 응답에 대한 view를 선택.

 

Spring MVC의 구성요소

DispatcherServlet
(Front Controller)
클라이언트의 요청을 받는다.
Controller에게 클라이언트의 요청을 전달한다.
Controller가 리턴한 결과값을 View에게 전달하여 알맞은 응답을 생성한다.
HandlerMapping 클라이언트의 요청 URL을 어떤 Controller가 처리할지 결정한다.
URL과 요청 정보를 기준으로 어떤 핸들러 객체를 사용할지 결정하는 객체이다.
DispatcherServlet은 하나 이상의 핸들러 매핑을 가질 수 있다.
Controller 클라이언트의 요청을 처리한 뒤, Model을 호출하고 그 결과를 DispatcherServlet에 알려준다,
ModelAndView Controller가 처리한 데이터 및 화면에 대한 정보를 보유한 객체이다.
ViewResolver Controller가 리턴 한 뷰 이름을 기반으로 Controller의 처리 결과를 보여줄 View를 결정한다.
View Controller의 처리 결과를 보여줄 응답화면을 생성한다.

 


Spring MVC 요청 흐름

요청흐름

1. 핸들러 조회

2. 핸들러 어댑터 조회

3. 핸들러 어댑터 실행

4. 핸들러 어댑터를 통해 핸들러 실행

5. ModelAndView 실행 -> 뷰 렌더링 호출

6. 뷰 리졸버를 통해 뷰 찾기

7. 뷰 변환

8. 뷰 렌더링

 

스프링의 MVC의 실행순서는 클라이언트의 요청이 서버에 도달하여 처리되기까지의 과정이다.

 

동작순서

1. 핸들러 조회
 - 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회한다.


2. 핸들러 어댑터 조회
 - 핸들러를 실행할 수 있는 핸들러 어댑터를 조회한다.


3. 핸들러 어댑터 실행
 - 핸들러 어댑터를 실행한다.


4. 핸들러 실행
 - 핸들러 어댑터가 실제 핸들러를 실행한다.


5. ModelAndView 반환
 - 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView로 변환해서 반환한다.


6. viewResolver 호출
 - 뷰 리졸버를 찾고 실행한다.


7. View 반환
 - 뷰 리졸버는 뷰의 논리 이름을 물리 이름으로 바꾸고, 렌더링역할을 담당하는 뷰 객체를 반환한다.

 

8. 뷰 렌더링
 - 뷰를 통해 뷰를 렌더링한다.

스프링 MVC의 큰 강점은 DispatcherServlet 코드의 변경없이, 원하는 기능을 변경하거나 확장할 수 있다는 점이다.

 

스프링 부트는 InternalResourceViewResolver 라는 뷰 리졸버를 자동으로 등록하는데, 

이때 application.properties에 등록한다.

ViewResolver란?

 웹 애플리케이션에서 사용자에게 보여지는 화면을 생성하는 역할을 담당하는 중요한 구성 요소이다.

뷰 리졸버는 컨트롤러(Controller)가 처리한 결과 데이터를 기반으로 어떤 뷰(View)를 사용할지를 결정하고 해당 뷰를 찾아 반환하는 역할을 수행하는 것이다.

728x90
반응형

댓글