MVC
소프트웨어 디자인 패턴중 하나 소프프트웨어를 구성하는 요소들을 Model View Controller로 구분하여 각각의 역할을 분리하였다.
Model은 데이터와 비즈니스 로직을 담당한다. 데이터베이스와 연동을 하거나 데이터를 저장하고 불러오는 등의 작업을 수행한다.
View는 사용자 인터페이스를 담당 보는 화면이나 버튼, 폼등을 디자인하고 구현한다.
Controller는 Model과 View 사이의 상호작용을 조정하고 제어할 수있다. 사용자의 요청을 입력을 받아 Model에게 저장하고 그 결과로 View를 업데이트 할 수 있다.
MVC패턴은 소프트웨어를 구성하는 요소들을 분리함으로써 코드의 재사용성과 유지보수성을 높이고 개발자들간의 협업을 용이하게 한다.

Servlet?
Java를 이용하여 웹페이지를 동적으로 생성하는 서버측의 프로그램 혹은 사양을 뜻한다.
사용자가 즉 API 요청을 했을 때 서버에 Servlet이 어떻게 동작하는지 보자

클라이언트가 HTTP를 통해 Request를 요청하면 요청을 받은 Servlet컨테이너 HttpServletRequest와 HttpServletResponse객체를 생성한다.
이 두가지의 객체는 약속된 HTTP 규격을 맞추며 HTTP에 담긴 데이터를 사용하기 위해 만든 객체이다.
그렇게 객체를 생성한 다음에 API요청에 대해 확인을 하고 그 요청이 어떤 Servlet과 매칭이 되는지 찾는다.
만약 api 요청이 /api/hello라고 한다면 그것과 매칭이 되는 Servlet에 대한 정보가 web.xml에 담겨있다.
매칭되는 Servlet을 실행시킨다. 그러면 해당 Servlet에서 service method를 호출시키고 HTTP요청이 어떤 메서드방식인지를 확인을 한다. GET, POST, PUT등 해당하는 방식에 맞게 메서드를 호출하게된다.
그 결과를 우리가 반환을 하거나, 동적페이지를 생성을 한 다음 HTTPServletResponse객체에 응답을 담아 클라이언트에 반환을 하게 된다.
Front Controller

1. Request 요청
2. DispatcherServlet이 요청을 분석하여 Handler mapping을 통해서 Controller 요청을 전달 해준다.
API path와 Controller의 메서드가 서로 매칭되어있다. /api/hello : /api/hello
3. Controller는 해당 요청에 대한 작업(3 Layer Structure)을 수행한다. 해당 작업에 대한 결과를 Model 그리고 View에대한 정보를 전달해 준다.
4 ViewResolver를 통해서 그 View에 적용을 한다.
5. 만들어진 최종 View를 Response해준다.
'Spring' 카테고리의 다른 글
| Rest template란 무엇인가? (0) | 2023.06.21 |
|---|---|
| 같은 타입의 bean이 2개 이상일 때 (0) | 2023.06.19 |
| 스프링 IoC 와 DI (0) | 2023.06.14 |
| Gradle (2) | 2023.06.12 |
| TIL-10 빈 스코프와 Provider (0) | 2023.05.23 |