Spring 4. MVC, Servlet

김창민·2024년 8월 9일

BE

목록 보기
24/50

MVC

소프트웨어를 개발할 때 여러가지 디자인 패턴이 있는데, 그 중 하나인 Model-View-Controller의 앞글자를 딴 MVC 디자인 패턴이다.

소프트웨어를 구성하는 요소를 역할별로 Model, View, Controller로 구분한다.

Model

  • 데이터와 비즈니스 로직을 담당한다.
  • DB와 연동하여 데이터를 저장하고 불러오는 작업을 수행한다.

View

  • UI를 담당한다.
  • 버튼, 화면, 폼 등을 디자인하고 구현한다.

Controller

  • Model과 View 사이 상호작용을 조정한다.
  • 입력을 받아 Model에 전달하고, Model의 반환을 바탕으로 View를 업데이트 한다.

이러한 구조를 통해 코드의 재사용성과 유지보수성을 높이고 협업을 수월하게 한다.

Spring MVC

공식
쉽게 말해서 MVC 패턴을 적용한 Spring은 HTTP 요청을 효율적으로 처리한다는 것이다.
공식 문서에 다음과 같이 써있다. "중앙에 있는 DispatcherServlet이 요청을 처리하기 위한 공유 알고리즘을 제공하는 Front Controller 패턴을 중심으로 설계되어 있으며 이 모델은 유연하고 다양한 워크 플로우를 지원합니다. "

Servlet

Servlet은 자바를 이용하여 웹 페이지를 동적으로 생성하는 프로그램이다. Servlet은 다음과 같이 동작한다.
1. Client의 API 요청
2. Servlet이 요청을 받고 Request, Response 객체 생성
3. 정보를 통해 어떤 Servlet에 대한 요청인지 파악
4. 해당 Servlet에서 service 메서드 호출, 브라우저의 요청 메소드(Get, Post, Put..)에 따라 해당 메서드 호출
5. 반환된 결과를 반환하거나 동적 페이지를 생성한 뒤 Response 객체에 응답을 담아 Client에 반환
6. 객체 소멸

Front Controller

근데 위에서 적은 6개의 동작을 위해서 직접 Servlet 클래스를 구현해야 하는데, Spring은 이를 해결하고자 DispatcherServlet를 사용해서 API 요청을 효율적으로 처리한다.

  1. CLient의 API 요청을 DispatcherServlet가 분석
  2. DispatcherServlet 객체는 분석 결과를 토대로 Handler mapping을 통해 Controller를 찾아 요청 전달
  3. Handler mapping에는 API path와 Contoller메서드가 매칭되어 있음
  4. Contoller가 요청을 처리하고 그 결과로 데이터(model)와 view 정보를 전달함
  5. ViewResolver를 통해 View에 model을 적용해서 완성한 View를 Client에게 전달.
profile
일일 회고 : https://rlackdals981010.github.io/

0개의 댓글