티스토리 뷰
0. Spring MVC 패턴이란?
:: 애플리케이션의 로직을 Model - View - Controller 3가지로 분리하는 디자인 패턴
0.1 MVC의 구조
→ 동적 페이지를 생성하는 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. 동작 흐름
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
'정리용 > SpringBoot' 카테고리의 다른 글
[Spring] 2-2-2. Spring MVC - Servlet 객체 / FrontController (0) | 2025.02.07 |
---|---|
[Spring] 2-2-1. Spring MVC - Controller의 반환 값 (1) | 2025.02.07 |
[Spring] 2-2. Spring MVC - 구조와 동작 (0) | 2025.02.07 |
[Spring] 2-1. Spring MVC - HandlerMapping (0) | 2025.02.07 |
[Spring] 1. 스프링 부트 기본 설정 (0) | 2025.02.07 |
- Total
- Today
- Yesterday
- acas#acas7기
- useMemo
- useReducer
- acac
- useEffect
- ASAC
- asac#asac7기
- useLayoutEffect
- react
- ssh
- asac7기
- asac7
- useRef
- asac7#asac
- Nginx
- memo
- git
- useContext
- useCallback
- useState
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |