Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백준
- GCP
- MySQL
- 코딩테스트
- 클라우드에서 도커 실행하기
- Spring MVC 구성요소
- 자바
- 재귀함수
- 코드스테이츠
- 11659
- String.valueOf()
- vm인스턴스생성
- List.of
- 성능테스트툴
- 재귀와반복문
- java
- 코드스테이츠 백엔드
- Spring MVC 동작원리
- 구간합구하기
- 인텔리제이
- 스택
- 알고리즘
- Spring Web MVC
- 버블정렬
- 프로그래머스
- 백준 11659
- 싱글톤패턴
- 투포인터알고리즘
- Array.asList
- OOP
Archives
- Today
- Total
순간을 기록으로
[스프링] Spring MVC 동작 방식과 구성요소 본문
안녕하세요. 루미너스입니다.
오늘은 Spring MVC 동작 방식과 구성요소에 대해 배워보겠습니다.
개요
우선 간단히 Spring MVC에 대해 알아보겠습니다.
Spring MVC는 클라이언트의 요청을 편리하게 처리해주는 프레임워크(모듈, 프로젝트)입니다.
전체 이름은 Spring Web MVC이지만 일반적으로 Spring MVC라고 불립니다.
Spring MVC는 서블릿 기반으로 동작합니다.
위키백과에 보면 서블릿(Servlet)이란 웹페이지를 동적으로 생성하는 서버측 프로그램을 말합니다.
더 구체적으로 말하자면 서블릿은 웹서버의 성능향상을 위해 사용되는 자바 클래스의 일종입니다.
서블릿은 JSP와 유사합니다. 하지만 차이가 있습니다.
서블릿은 자바코드 안에 HTML을 포함합니다. 반면에 JSP는 HTML안에 자바 코드를 포함합니다.
Spring MVC 동작 방식과 구성요소
다음은 클라이언트가 요청을 서버에 보냈을 때 Spring MVC가 내부적으로 어떻게 요청을 처리하는 보여주는 그림입니다.
번호의 흐름을 설명하자면 다음과 같습니다.
- 클라이언트가 요청을 서버에 전송하면, DispatcherServlet이라는 클래스에게 요청이 전달됩니다.
- DispatcherServlet은 클라이언트 요청을 처리할 Controller에 대한 검색을 HandlerMapping 인터페이스에게 요청합니다.
- HandlerMapping은 클라이언트 요청에 해당하는 컨트롤러를 찾고 해당 컨트롤러 정보를 다시 DispatcherServlet에게 응답합니다.
- Controller 정보는해당 Controller 안에 있는 Handler 메서드 정보도 가지고 있습니다.
- Handler 메서드란 Controller 클래스 안에 구현된 요청을 처리해주는 메서드입니다.
- 요청을 처리할 Controller를 찾았으니 이제 클라이언트 요청을 처리할 Handler 메서드를 찾아서 호출해야 합니다. DispatcherServlet은 Handler 메서드를 직접 호출하지 않고 HandlerAdapter에게 Handler 메서드 호출 책임을 넘깁니다.
- HandlerAdapter은 DispatcherServlet의 요청과 더불어 Controller 정보를 가지고 해당 Controller의 Handler 메서드를 호출합니다.
- Controller의 Handler 메서드는 비즈니스 로직을 처리한 후 리턴받은 Model 데이터를 HandlerAdapter에게 반환합니다.
- HandlerAdapter은 반환받은 Model 데이터와 View 이름을 다시 DispatcherServlet에게 반환합니다.
- DispatcherServlet은 반환받은 2개의 데이터 중 View 이름을 가지고 ViewResolver에게 해당 View를 달라고 요청합니다.
- ViewResolver는 View 정보에 해당하는 View를 찾아서 DispatcherServlet에게 반환합니다.
- DispatcherServlet은 ViewResolver에게 받은 View 객체에게 Model 데이터를 넘겨주면서 클라이언트에게 전달할 응답 데이터 생성을 요청합니다.
- View는 응답 데이터를 생성해서 다시 DispatcherServlet에게 반환합니다.
- DitpatcherServlet은 View로부터 받은 응답데이터를 마지막으로 클라이언트에게 응답합니다.
DispatcherServlet의 역할
- DIspatcherServlet은 바빠보이지만 직접적으로 요청을 처리하지 않고 다른 구성요소에게 요청을 위임(Delegate)합니다.
- 이처럼 애플리케이션 가장 앞단 배치되어 다른 구성요소들과 상호작용하면서 클라이언트 요청을 처리하는 패턴을 Front Controller Pattern이라고 합니다
'Development > Spring' 카테고리의 다른 글
@SpringBootTest vs. @WebMvcTest (0) | 2022.09.08 |
---|---|
[스프링] properties와 yml 파일 변환하기 (0) | 2022.08.30 |
Jar 파일은 무엇일까? (0) | 2022.02.05 |
[Spring] 회원관리예제 - 홈 화면 추가 (0) | 2021.11.19 |
[Spring] 스프링 빈을 등록하는 방법2: 직접 등록하기 (0) | 2021.11.19 |
Comments