Spring에서 제공하는 웹 모듈
Model, View, Controller 세 가지 구성요소로 사용자의 HTTP Request를 처리하고 다양한 응답을 할 수 있도록 하는 프레임워크
Spring-webmvc
서블릿(Servlet) API를 기반으로 클라이언트의 요청을 처리하는 모듈, Spring MVC라고 부름
✔️ 서블릿(Servlet) : 클라이언트의 요청을 처리하도록 특정 Java코드로 작성하는 클래스 파일
✔️ 아파치 톰캣(Apache Tomcat) : 서블릿이 실행되도록 하는 서블릿 컨테이너
클라이언트의 요청을 처리한 결과 데이터
✔️ 서비스 계층(Service Layer) : 클라이언트의 요청 사항을 구체적으로 처리하는 영역
✔️ 비즈니스 로직(Business Logic) : 실제 요청사항을 처리하기 위해 Java코드로 구현한 것
Model 데이터를 이용해서 웹브라우저 같은 클라이언트 화면에 보여지는 리소스(Resource)를 제공
View의 형태
HTML 페이지 출력
❗️프론트와 백엔드가 통합된 구조
PDF, Excel 등의 문서 형태로 출력
XML, JSON 등 특정 형식의 포맷으로 변환
✔️ 프론트와 백엔드의 분리로 유지보수가 용이함
✔️ 프론트엔드 측에서 비동기 클라이언트 애플리케이션을 만드는 것이 가능
JSON의 기본 포맷: {"속성":"값"}
클라이언트 측의 요청을 직접적으로 전달 받는 엔드포인드, Model과 View의 중간에서 상호 작용을 해주는 역할
➡️ 클라이언트 측의 요청을 전달 받아서 비즈니스 로직을 거친 후 Model 데이터가 만들어지면 View로 전달
❗️Dispatcher Servlet의 역할 : 요청에 대한 처리를 다른 요소에 위임
클라이언트가 요청 전송 ➡️ Dispatcher Servlet
이 요청 받음
Dispatcher Servlet
이 handler mapping
에게 클라이언트의 요청을 처리할 Controller 탐색을 요청
handler mapping
이 해당하는 Controller 정보 전달
Dispatcher Servlet
은 handler Adapter
에게 해당 Controller 호출 위임
handler Adapter
는 Controller를 호출, 비즈니스 로직 처리 후 반환받은 Model과 View 를 전달
handler Adapter
는 전달받은 Model과 View를 Dispatcher Servlet
에게 전달
Dispatcher Servlet
는 전달받은 View 정보를 View resolver
에게 전달해서 View 검색을 요청
View resolver
는 해당하는 view를 다시 Dispatcher Servlet
에게 전달
Dispatcher Servlet
는 전달받은 View
객체에게 Model 데이터를 넘겨주며 클라이언트에게 전달할 응답 데이터를 요청
View
는 응답 데이터를 생성해서 다시 Dispatcher Servlet
에게 전달
Dispatcher Servlet
는 전달받은 응답 데이터를 클라이언트에게 전달
View가 있는 경우
View가 없는 경우 viewResolver가 아닌 messageConverter가 동작
(내가 개발하는 프로젝트는 view가 없는 REST 형식의 @ResponseBody를 사용 -> messageConverter 사용)