• Spring MVC

    Untitled

    • Controller에 의해 사용자의 요청을 가장 먼저 수신
    • Model은 애플리케이션의 데이터, 비즈니스 규칙, 로직 및 기능을 나타냄
      • 데이터베이스의 데이터를 나타내는 엔티티(Entity)나 데이터 전송 객체(Data Transfer Object, DTO), 로직과 기능을 담당하는 서비스 레이어(Service Layer) 등을 포함
      • MVC의 Model은 애플리케이션의 '데이터와 그 데이터를 처리하는 로직'을 캡슐화
    • VIEW는 화면을 의미하고 viewResolver에 의해 화면을 사용자에게 HTML로 리턴
  • Spring MVC 처리 절차

    • Model, View, Controller의 약어로 JSP, 타임리프와 같은 템플릿 엔진을 가지고 화면을 렌더링하는 처리 형태

      Untitled

    • 위와 같은 방식으로 HTML 최종결과를 서버에서 만들어 웹브라우저에 전달

      • HTML을 동적으로 생성
      • 여기서 동적으로의 의미는 사용자마다 데이터가 다르기에 결과물인 html의 내용이 사용자와 사용자의 요청에 따라 조금씩 달라지는 것을 의미
      • mvc 아키텍처는 주로 고도의 프론트 기능이 들어간 화면이 아닌, 단순한 화면에서 사용
    • 비교)Rest API

  • Spring MVC의 핵심 구성 요소

    Untitled

    • DispatcherServlet
      • Spring MVC의 중앙 진입점이며, 모든 웹 요청을 처음으로 받아 처리
      • 들어오는 요청을 분석하고, 해당 요청을 처리할 컨트롤러를 HandlerMapping를 통해 검색
    • HandlerMapping
      • 요청 URL을 기반으로 어떤 컨트롤러가 해당 요청을 처리할지 결정
    • HandlerAdapter
      • 핸들러 어댑터는 핸들러 매핑에 의해 결정된 핸들러(컨트롤러 메서드)를 실행
    • Controller
      • HandlerMapping이 결정한 컨트롤러의 메서드가 요청을 처리하고, 모델 데이터를 준비한 다음, 보여줄 뷰의 이름을 반환
    • ViewResolver
      • 최종적으로 사용자에게 보여질 UI를 렌더링
      • 컨트롤러가 "home"이라는 뷰 이름을 반환하면, ViewResolver는 이를 home.jsp 또는 home.html과 같은 실제 뷰 파일로 해석(뷰 이름 해석)
        • Thymeleaf 뷰 템플릿을 사용시 ThymeleafViewResolver
        • JSP를 사용시 InternalResourceViewResolver
    • View
      • 컨트롤러로부터 전달받은 모델 데이터를 사용하여 HTML, JSON, XML 등의 형태로 클라이언트에게 응답을 생성