Spring은 여러 모듈을 제공하는데, 그 중에 Web 계층을 담당하는 몇가지 모듈이 있습니다.
그 중에 Servlet을 기반으로 client의 요청을 처리하는 module이 있는데, 그것이 바로 Spring MVC (spring-webmvc) 입니다.
(Spring Web MVC = Spring MVC = Spring MVC Framework 셋다 모두 같은 말입니다.)
Servlet이란?
Servlet은 client의 request를 받고 response를 전달해주는 역할을 하는 Java class를 의미합니다.
정의: A servlet is a Java programming language class that is used to extend the capabilities of servers that host applications accessed by means of a request-response programming model.
출처: https://docs.oracle.com/javaee/5/tutorial/doc/bnafe.html
*Apache Tomcat은 servlet들이 web application으로 실행되도록 해주는 servlet container 중에 하나 입니다.
MVC란?
그렇다면 MVC란 무엇일까요?
MVC는 Mode, View, Controller의 약자입니다. 셋이 서로 상호작용하며 요청을 받고 응답을 만들어내는데요, 각자의 역할과 업무 흐름에 대해서 알아보겠습니다.
Model
Client에게 응답으로 돌려주는 작업의 처리 결과 데이터를 만들어 냅니다.
View
Model로 부터 받은 결과 데이터를 이용(가공)해 web browser와 같은 client application 화면에 보여질 resource를 제공하는 역할을 합니다. 화면에 보여질 resource를 제공한다는 것을 좀 더 구체적으로 말하면,
- HTML page를 직접 rendering하기도 하고(front와 back이 통합된 형태)
- PDF나 excel 등으로 출력하기도 하고
- XML, JSON format으로 변환하기도 합니다. (front와 back이 분리된 형태)
JSON은 client application과 server application이 주고받는 data의 형식입니다.
Controller
Client 측의 요청을 직접적으로 전달받는 endpoint로써 Model과 View의 중간에서 상호작용합니다. (Model과 View에 요청하고 응답을 받으며 업무를 수행해냅니다.)
=> Client의 요청을 전달 받아서 business logic을 거친 후에, model data가 만들어지면 이 model data를 view로 전달합니다!
이러한 상호작용 흐름을 그림으로 나타내보면 아래처럼 표현할 수 있습니다.
요청을 받고 응답을 전달하고, 또 그 응답을 토대로 요청을 하고 응답을 받아내는 일련의 과정입니다.
블로그에 그림으로 넣으니 글자가 조금 작아보이지만 눌러서 크게 보실 수 있습니다.
흐름 이해에 참고하시면 좋을 것 같습니다!
이 흐름이 완전히 잘 이해될 때까지 자주 보면서 익혀야겠습니다 ☺️
혹시나 수정이 필요한 부분이 있다면 꼭 알려주세요! 감사합니다!
'Java Spring > MVC' 카테고리의 다른 글
[Spring] H2 in-memory DB 사용하기 (0) | 2022.06.28 |
---|---|
[Spring] Servlet과 Servlet Container (0) | 2022.06.24 |
[Spring] 계층 이해하기 (0) | 2022.06.23 |
[Spring] AOP 사용하기 (2) | 2022.06.18 |
[Spring] IOC Container vs Application Container vs Bean Factory 간단 정리 (0) | 2022.06.17 |