[section 3] Spring MVC - API 계층(1) - 개요

수경·2022년 12월 15일
0

코드스테이츠

목록 보기
41/57

Spring MVC

Spring에서 제공하는 웹 모듈
Model, View, Controller 세 가지 구성요소로 사용자의 HTTP Request를 처리하고 다양한 응답을 할 수 있도록 하는 프레임워크

Spring-webmvc
서블릿(Servlet) API를 기반으로 클라이언트의 요청을 처리하는 모듈, Spring MVC라고 부름

✔️ 서블릿(Servlet) : 클라이언트의 요청을 처리하도록 특정 Java코드로 작성하는 클래스 파일
✔️ 아파치 톰캣(Apache Tomcat) : 서블릿이 실행되도록 하는 서블릿 컨테이너

Model

클라이언트의 요청을 처리한 결과 데이터

✔️ 서비스 계층(Service Layer) : 클라이언트의 요청 사항을 구체적으로 처리하는 영역
✔️ 비즈니스 로직(Business Logic) : 실제 요청사항을 처리하기 위해 Java코드로 구현한 것

View

Model 데이터를 이용해서 웹브라우저 같은 클라이언트 화면에 보여지는 리소스(Resource)를 제공

View의 형태

  • HTML 페이지 출력
    ❗️프론트와 백엔드가 통합된 구조

  • PDF, Excel 등의 문서 형태로 출력

  • XML, JSON 등 특정 형식의 포맷으로 변환
    ✔️ 프론트와 백엔드의 분리로 유지보수가 용이함
    ✔️ 프론트엔드 측에서 비동기 클라이언트 애플리케이션을 만드는 것이 가능
    JSON의 기본 포맷: {"속성":"값"}

Controller

클라이언트 측의 요청을 직접적으로 전달 받는 엔드포인드, Model과 View의 중간에서 상호 작용을 해주는 역할

➡️ 클라이언트 측의 요청을 전달 받아서 비즈니스 로직을 거친 후 Model 데이터가 만들어지면 View로 전달


Spring MVC의 동작 방식 (View가 있는 경우)

❗️Dispatcher Servlet의 역할 : 요청에 대한 처리를 다른 요소에 위임

  1. 클라이언트가 요청 전송 ➡️ Dispatcher Servlet 이 요청 받음

  2. Dispatcher Servlethandler mapping 에게 클라이언트의 요청을 처리할 Controller 탐색을 요청

  3. handler mapping 이 해당하는 Controller 정보 전달

  4. Dispatcher Servlethandler Adapter 에게 해당 Controller 호출 위임

  5. handler Adapter 는 Controller를 호출, 비즈니스 로직 처리 후 반환받은 Model과 View 를 전달

  6. handler Adapter 는 전달받은 Model과 View를 Dispatcher Servlet 에게 전달

  7. Dispatcher Servlet 는 전달받은 View 정보를 View resolver 에게 전달해서 View 검색을 요청

  8. View resolver 는 해당하는 view를 다시 Dispatcher Servlet 에게 전달

  9. Dispatcher Servlet 는 전달받은 View 객체에게 Model 데이터를 넘겨주며 클라이언트에게 전달할 응답 데이터를 요청

  10. View 는 응답 데이터를 생성해서 다시 Dispatcher Servlet 에게 전달

  11. Dispatcher Servlet 는 전달받은 응답 데이터를 클라이언트에게 전달


View가 있는 경우

View가 없는 경우 viewResolver가 아닌 messageConverter가 동작

(내가 개발하는 프로젝트는 view가 없는 REST 형식의 @ResponseBody를 사용 -> messageConverter 사용)

profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글