Spring/Springboot-Intellij

[SpringBoot] SPRING MVC, Servlet, DispatcherServlet

congs 2025. 1. 28. 18:10

MVC (Model - View - Controller)

  • 소프트웨어의 디자인 패턴 중 하나
  • 소프트웨어를 구성하는 요소들을 Model, View, Controller로 구분하여 각각의 역할을 분리
  • 코드의 재사용성과 유지보수성을 높이고, 개발자들간의 협업을 용이하게함

1. Model

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

2. View

  1. 사용자의 인터페이스 담당
  2. 사용자가 보는 화면과 버튼, 폼 등을 디자인하고 구현

3. Controller

  1. Model과 View 사이의 상호작용을 조정하고 제어
  2. 사용자의 입력을 받아 Model에 전달 - Model의 결과를 바탕으로 View 업데이트

 

SPRING MVC

  • Servlet API를 기반으로 구축된 독창적인 웹 프레임워크
  • 처음부터 Spring Framework에 포함되어 왔음
  • 정식 명칭인 "Spring Web MVC"는 소스 모듈(spring-webmvc)의 이름에서 따왔으나, "Spring MVC"로 알려짐
  • Spring에서 MVC 디자인 패턴을 적용하여 HTTP 요청을 효율적으로 처리하고 있음

Servlet 서블릿

  • 자바를 사용하여 웹 페이지를 동적으로 생성하는 서버측 프로그램, 사양

  1. 사용자가 브라우저를 통해 HTTP Request(API요청)을 함
  2. 요청 받은 서블릿은 약속된 HTTP규격에 맞는 데이터를 담은 객체 생성(HttpServletRequest, HttpServletResponse)
  3. API요청에 맞는 서블릿을 찾음(web.xml에서)
  4. 찾은 서블릿을 실행시킴
  5. 해당 서블릿에서 맞는 메서드를 찾아서 HttpServletRespons에 담아
  6. 브라우저에게 반환하며 생성했던 객체(HttpServletRequest, HttpServletResponse) 삭제

 

DispatcherServlet 디스패처서블릿 객체

  • 전달하려는 서블릿
  • 모든 API에 맞는 서블릿을 실행한다면 너무 많은 클래스를 구현해여함 
  • -> 따라서 DispatcherServlet을 사용하여  Front Controller방식으로 API요청을 효율적으로 처리함

  1. 브라우저에서 HTTP요청에 들어오면 DispatcherServlet가 요청 분석
  2. 분석한 데이터를 토대로 Handler mapping을 통해 Controller를 찾아 요청을 전달
    • 예) GET /api/hello → HelloController 의 hello() 함수
    • 예) GET /user/login → UserController 의 login() 함수
    • Handler mapping에는 API path/controller메서드가 매칭되어 있는걸 알수있음!
  3. 수행 후 결과(데이터)를 다시 DispatcherServlet으로 전달('Model-나의 포인트같은'와 'View-mypage.html같은' 정보를 전달)
  4. ViewResolver 통해 View에 Model을 적용하여 View를 Client에게 응답으로 전달