MVC
Model - View - Controller 의 약자

Model
데이터와 비즈니스 로직을 담당합니다.
데이터베이스와 연동하여 데이터를 저장하고 불러오는 등의 작업을 수행합니다.
View
사용자 인터페이스를 담당합니다.
사용자가 보는 화면과 버튼, 폼 등을 디자인하고 구현합니다.
Controller
Model과 View 사이의 상호작용을 조정하고 제어합니다.
사용자의 입력을 받아 Model에 전달하고, Model의 결과를 바탕으로 View를 업데이트합니다.
MVC패턴은 구성하는 요소들을 분리함으로써 코드의 재사용성과 유지보수성을 높이고,
개발자들 간 협업을 용이하게 한다.
Spring MVC
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 객체를 소멸합니다.
Front Controller

1. Client(브라우저)에서 HTTP 요청이 들어오면 DispatcherServlet 객체가 요청을 분석합니다.
2. DispatcherServlet 객체는 분석한 데이터를 토대로 Handler mapping을 통해 Controller를 찾아 요청을 전달해 줍니다.
-. Handler mapping 에는 API path 와 Controller 메서드가 매칭되어 있습니다.
-. API path 즉, URL을 Controller에 작성하는 방법은 @Controller 애너테이션이 달려있는 클래스를 생성한 뒤 @GetMapping 처럼 요청한 HTTP Method 와 일치하는 애너테이션을 추가한 메서드를 구현합니다.
- URL은 @GetMapping("/api/hello") 이처럼 해당 애너테이션의 속성값으로 전달해주면 됩니다.
- 해당 메서드명은 URL을 매핑하는데 영향을 미치지 않음으로 자유롭게 정해도 상관 없습니다.
-. 이제는 직접 Servlet을 구현하지 않아도 DispatcherServlet에 의해 간편하게 HTTP 요청을 처리할 수 있게 되었습니다.
3. Controller → DispathcerServlet
- 해당 Controller는 요청에 대한 처리를 완료 후 처리에 대한 결과 즉, 데이터('Model')와 'View' 정보를 전달합니다.
4. DispatcherServlet → Client
- ViewResolver 통해 View에 Model을 적용하여 View를 Client에게 응답으로 전달합니다
'java 배우기 > TIL' 카테고리의 다른 글
| 상태 코드 status code (0) | 2024.08.13 |
|---|---|
| 클래스간 상속 (0) | 2024.08.12 |
| 래퍼(wrapper)클래스 이해하기 (0) | 2024.08.09 |
| 팀 프로젝트(학생정보 등록,수정, 조회)를 완성하며 KPT 회고 (0) | 2024.08.08 |
| 팀 프로젝트 추가 사항(멤버ID로 멤버 정보 조회) 구현하기 (0) | 2024.08.06 |