ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring MVC란?
    Spring Boot/스프링부트 공부 2022. 2. 19. 17:30

    Spring MVC란? 

    • Sprign MVC란 Spring에 내장되어 있는 Model-View-Controller 구조를 이용해서 Web Application을 개발하는 프레임워크이다.
    • 기본적으로 Presentation Layer를 제공한다.
    • MVC란?

     

     

    MVC 구분

    1 View 사용자가 보는 화면, Model data의 렌더링을 담당하며
    2 Controller 전체를 제어하는 부분, View와 Model 사이의 인터페이스 역할
    3 Model 어플리케이션에서 사용할 데이터 관리
    • Spring MVC와 MVC는 다르다.
      • MVC는 용도별로 코드를 분리한 디자인 패턴. 개발자가 직접 구현
      • Spring MVC는 스프링이 제공하는 Framework. 이미 만들어진 클래스들,
    • 주의! Model을 단순히 Entity, DB처리라고 답변하면 틀린 답변이다.(JSON이나 외부 API가 담길수도 있음, 사용할 데이터 관리라고 봐야함)
     

     


    Spring MVC Framework의 구조 

    Spring MVC Framework

    스프링이 제공하는 대표적인 프레임워크.
    MVC 기능들이 미리 제공되어 있고, 간단하게 사용해서 MVC 아키텍처를 구현할 수 있다.
    스프링 MVC 프레임워크가 동작하는 원리를 이해하고 있어야 한다
    

    파란색 - spring framework이 기본적으로 제공하는 것,
    보라색 - 개발자가 직접 만드는 것
    초록색 - spring framework이 제공하지만 개발자가 수정할수도 있는 것
    
     

    Spring MVC 구성 요소

     

     

    Dispatcher Servlet

    • Dispatcher Servlet == 모든 요청을 처리하는 Controller(핵심 기능)
      • Servlet class이며, 모든 client의 요청을 처리한다. (Servlet? 서버의 대부분의 일을 대신하는 역할 - TCP/IP 연결 & 해제, HTML 메시지 파싱, 요청/응답 생성.. 등등)
      • Handler(Controller)에게 client의 요청을 전달하고, Controller가 리턴한 결과값을 View에 전달하여 알맞은 응답을 생성하도록 한다.

    HandlerMapping

    • Client의 요청 URL(또는 URI)을 어떤 Controller(Action)가 처리할지는 결정한다.
    • @RequestMapping을 까보면 HandlerMapping 코드를 볼 수 있다.

    HandlerAdapter

    • HandlerMapping으로 찾은 Handler를 실행하는 역할.
    • @RequestMapping 내부에 HandlerAdapter 코드를 볼 수 있다.

    Handler(Controller)

    • 클라이언트의 실질적인 요청을 처리한다. Model(DAO, DTO, etc) 처리.
    • 처리 결과를 DispatcherServlet에 Model 또는 ModelandView로 반환 (Model 또는 ModelandView에 처리한 결과를 저장한다.)

    ViewResolver

    • ViewResolver는 view를 찾는 객체이다.
    • Model에 담긴 데이터를 렌더링할 view를 결정

    View

    • 화면 렌더링
    • JSP, 타임리프, 머스테치 같은 템플릿 엔진

     


     

    Spring 동작 방법 

     

    1. 브라우저 요청
    2. 디스패처 서블릿이 요청 받아 핸들러매핑 실행
    3. 핸들러 매핑이 Handler(컨트롤러) 찾기
    4. Handler를 실행할 수 있는 어댑터 찾고, 핸들러 어댑터가 Hander 실행하여 ModelandView 반환
    5. viewResolver가 반환된 ModelandView를 view로 옮김.
    6. View가 모델에 있는 데이터와 화면 렌더링

     

    추가로 공부해 볼 것 

     

    그래서 Spring MVC를 사용해서 뭐가 좋은 거지? 

    다른 방법은 없나?

     

     


     

    출처

     

     

    반응형

    'Spring Boot > 스프링부트 공부' 카테고리의 다른 글

    SOLID 객체 지향 설계 5원칙  (2) 2022.01.03
Designed by Tistory.