스프링 강의를 수강하면서 스프링에대해 하나하나 알아가고 있다.
그중 하나가 SpringMVC라는 것으로 카테고리가 하나가 있다.
기본적으로 MVC라는 것은 Model View Controller라는 구조로 소프트웨어를 만들기 위한 디자인 패턴 중 하나이다.
이렇 듯 Model View Controller는 각자의 역할을 맡아 소프트웨어를 구성하게 된다.
Model
- 데이터와 비즈니스 로직을 담당한다..
- 데이터베이스와 연동하여 데이터를 저장하고 불러오는 등의 작업을 수행한다.
View
- 사용자 인터페이스를 담당한다.
- 사용자가 보는 화면과 버튼, 폼 등을 디자인하고 구현한다.
Controller
- Model과 View 사이의 상호작용을 조정하고 제어한다.
- 사용자의 입력을 받아 Model에 전달하고, Model의 결과를 바탕으로 View를 업데이트한다.
MVC는 소프트웨어를 구성하는 요소들을 분리함으로써
코드 재사용성과 유지보수성을 높이고 개발자들 간의 협업을 용이하게 한다.
Spring에서의 MVC란?
Spring Web MVC는 Servlet API를 기반으로 구축된 독창적인 웹 프레임 워크를 말한다.
DIspatcherServlet이라는 것이 중앙에서 HTTP의 요청을 처리해 주는데 그것이 Front Controller 패턴이라고 한다.
Servlet이란?
자바를 사용하여 웹페이지를 동저긍로 생성하는 서버측 프로그램 또는 그 사양을 말한다고 한다.
사용자가 API 요청을 하였을때 서버의 서블릿이 동작하는 사진이다.
- 사용자가 Client(브라우저)를 통해 서버에 HTTP Request 즉, API 요청을 한다.
- 요청을 받은 Servlet 컨테이너는 HttpServletRequest, HttpServletResponse 객체를 생성.
약속된 HTTP의 규격을 맞추면서 쉽게 HTTP에 담긴 데이터를 사용하기 위한 객체이다.
- 설정된 정보를 통해 어떠한 Servlet에 대한 요청인지 찾는다.
- 해당 Servlet에서 service 메서드를 호출한 뒤 브라우저의 요청 Method에 따라 doGet 혹은 doPost 등의 메서드를 호출.
- 호출한 메서드들의 결과를 그대로 반환하거나 동적 페이지를 생성한 뒤 HttpServletResponse 객체에 응답을 담아 Client(브라우저)에 반환한다.
- 응답이 완료되면 생성한 HttpServletRequest, HttpServletResponse 객체를 소멸시킨다.
모든 API 요청을 위의 사진 처럼 서블릿 동작 방식에 맞춰 코드를 구현한다면 무수히 많은 Servlet 클래스를 구현해야한다.
따라서 Spring은 DispatcherServlet을 사용하여 FrontController 패턴 방식으로 API 요청을 효율적으로 처리한다.
- **Client(브라우저)**에서 HTTP 요청이 들어오면 DispatcherServlet 객체가 요청을 분석합니다.
- DispatcherServlet 객체는 분석한 데이터를 토대로 Handler mapping을 통해 Controller를 찾아 요청을 전달해 줍니다.
-
- Controller → DispathcerServlet
- 해당 Controller는 요청에 대한 처리를 완료 후 처리에 대한 결과 즉, 데이터('Model')와 'View' 정보를 전달합니다.
- DispatcherServlet → Client
- ViewResolver 통해 View에 Model을 적용하여 View를 Client에게 응답으로 전달합니다.
- Controller → DispathcerServlet
'내일배움캠프' 카테고리의 다른 글
내일배움캠프 TIL - DTO를 클래스에서 record로 (0) | 2024.01.23 |
---|---|
내일배움캠프TIL - IoC와 DI 관계 및 DI 집중 (0) | 2024.01.19 |
내일배움캠프 TIL - Gradle에 관해서 (0) | 2024.01.17 |
내일배움캠프 12일차 TIL - Java stream 간략하게 알아보기 (1) | 2024.01.09 |
내일배움캠프 11일차 TIL - 제너릭에 대하여 (1) | 2024.01.08 |