티스토리 뷰

정리용/SpringBoot

[Spring] 2. Spring MVC

hee-ya07 2025. 2. 7. 18:55

0. Spring MVC 패턴이란?

:: 애플리케이션의 로직을 Model - View - Controller 3가지로 분리하는 디자인 패턴


0.1 MVC의 구조

출처 : ASAC 수업자료

→ 동적 페이지를 생성하는 WAS의 경우 2개의 템플릿 엔진 사용

    :: 서버에서 사용하는 엔진 + 클라이언트에서 동적으로 합치는 엔진

구성 요소 설명
Model - 애플리케이션의 데이터이자, 그것에 대한 비즈니스 로직 담당
View - 사용자에게 보여지는 UI를 담당( Model + Template )
:: 유저의 요청에 따른 Controller의 응답 반환

:: 유저가 보는 것은 웹페이지 ← Controller가 반환
:: 유저가 하는 것은 JS 인터렉션 ← Controller를 호출

- HTML, JSP, Thymeleaf 등의 템플릿 엔진을 통해 데이터를 시각적 표현
Controller - 사용자의 요청을 받아 Model과 View 사이의 중개를 담당

1. MVC의 주요 구성요소

:: 위의 3가지 요소에 대한 상세 설명 추가

1.1 DispatchServlet

:: 모든 요청에 대한 중앙 관리

:: 클라이언트의 요청을 받아 적절한 Controller로 전달

:: Controller가 반환한 결과를 View에 전달


1.2 Model

:: 애플리케이션의 데이터를 담는 역할


 

1.3 Controller

:: Web Application Server에서 “어떤 요청을 받았을 때” 어떤 웹 페이지를 반환할지 결정

    - 클라이언트의 요청을 처리

    - 요청에 따른 비즈니스 로직 수행 및 Model의 결과를 View에 전달

:: REST API(Method + URL)요청을 받았을 때, 처리를 결정

:: @Controller 어노테이션을 사용하여 정의


1.3 - 1 HandlerMapping

2025.02.07 - [정리용/SpringBoot] - [Spring] 2-1. Spring MVC - HandlerMapping

 

[Spring] 2-1. Spring MVC - HandlerMapping

1. HandlerMapping:: 클라이언트의 요청을 처리할 Controller를 결정하는 컴포넌트:: 어떤 REST API 요청을 받았을 때, 어떤 메서드로 처리할지 정의1.1 HandlerMapping 내 탐색 순서가장 먼저 RequestMappingHandlerMapp

hee-ya07.tistory.com

 


1.4 View

:: 사용자에게 보여지는 화면을 담당

:: HTML, JSP, Thymeleaf 등의 템플릿 엔진을 사용하여 데이터를 시각적으로 표현

:: Spring MVC에서는 ViewResolver를 통해 View를 찾고 랜더링


1.4 - 1 ViewResolver

:: Controller가 반환한 View 이름 기반으로 실제 View 매핑

:: SSR/SSR엔진의 주체

  • 우선 순위
    :: 일반적인 HTML 파일의 경우 ViewResolver를 거치지 않고
    :: SpringBoot의 기본 자원 처리 방식에 따라 바로 반환

    1. static 디렉토리 :: /static/index.html
    2. pulbic 디렉토리 :: /pulbic/index.html
    3. templates 디렉토리 :: /templates/index.html

  • But, Error 페이지의 경우 templates 디렉토리 내 error 처리 파일이 우선
| ExceptionHandler 또는 ErrorViewResolver가 Error처리 페이지를 찾을 때,
1. ExceptionHandler :: ControllerAdvice에서 정의된 ExceptionHandler가 예외를 처리
:: 특정 View 이름을 반환 시, 해당 View 이름의 템플릿 파일을 templates 디렉토리에서 탐색
2. ErrorViewResolver :: ExceptionHandler가 없는 경우, ErrorViewResolver가 에러 페이지 탐색
:: ErrorViewResolver는 templates/error 디렉토리 아래에 있는 에러 페이지 템플릿 파일 탐색
3. static resourse :: 위 두 가지 방법으로 에러 페이지를 찾지 못한 경우,
   static 디렉토리 아래에 있는 error.html 파일 탐색

2. 동작 흐름

출처 : https://www.slideshare.net/ssuserced713/mvc-251365459

1. 클라이언트 요청
    :: 유저가 WB를 통해 특정 URL을 요청

2. DispatchServlet

    :: DispatchServlet을 통해 요청 수신

    :: DispatchServlet가 HandlerMapping에 요청을 처리할 Controller 탐색 및 반환 + 요청 처리 위임
    :: HandlerMapping은 HandlerExecutionChain 반환(선택된 Controller와 요청에 적용되는 Interceptor목록)

3. Controller 실행

    :: 비즈니스 로직 수행 or Model을 통해 데이터를 산출

    :: 처리 결과를 ModelAndView 객체로 DispatchServlet에 반환

4. DispatchServlet
    :: DispatchServlet는 ViewResolver를 사용하여 View 이름에 해당하는 실제 View 탐색 및 반환

5. View 렌더링
    :: View 생성(Model + ViewTemplate)

6. 응답 전송

 


참조

ASAC 수업자료

https://www.slideshare.net/ssuserced713/mvc-251365459

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함