Back-End/Spring

[Spring] Spring MVC

zsunny 2023. 4. 30. 08:17

🌿 MVC (Model - View - Controller) 란?

Application의 확장을 위해 Model, View, Controller 3가지 영역으로 분리한 것이다. Component의 변경이 다른 영역 Component에 영향을 미치지 않아 유지보수가 용이하고 Component간의 결합성이 낮아 프로그램 수정이 용이해 확장성이 뛰어나다.

 

Model

  • Service + Dao
  • 상태 쿼리에 대한 응답으로 변경을 View에 통지

View

  • 사용자의 입력을 Controller에 전달
  • Model을 화면에 표현

Controller

  • Application의 행위를 정의
  • 사용자 요청에 맞는 view를 선택

 

🌿 MVC 의 장/단점

장점

  • 화면과 비즈니스 로직을 분리해 작업이 가능 -> 유지보수 용이
  • 영역별 개발로 인해 확장성 뛰어남
  • 표준화된 코드 사용해 공동작업이 용이, 유지보수성 좋음

단점

  • 개발과정이 복잡해 초기 개발속도가 늦음
  • 초보자가 이해하고 개발하기에 어려움

 

Spring MVC 란?

Spring MVC는 MVC 기존 MVC2모델을 기반으로 Spring Framework에서 발전시킨 웹 모듈로 가장 큰 차이점은 Front Controller의 유무이다.

 

🌿 Spring MVC 특징

  • DI나 AOP 기능 + Servlet 기반의 웹 개발을 위한 MVC Framework를 제공
  • Model2 Architecture와 FrontController Pattern을 프레임워크 차원에서 제공

 

🌿 Spring MVC 구성요소

DispatcherServlet (Front Controller)

  • client의 요청 받음
  • Controller에게 클라이언트의 요청을 전달
  • Controller의 반환값을 ViewResolver 태워 알맞는 View 화면에 표시
  • 한개 이상의 HandlerMapping 가짐

HandlerMapping

  • 클라이언트의 요청 URL을 어떤 Controller가 처리할지 결정
  • URL, 요청정보를 기준으로 어떤 객체 사용할지 결정하는 객체

Controller

  • client의 요청 처리 -> Model 호출 , DispatcherServlet에 결과 전달

ModelAndView

  • Controller가 처리한 데이터 및 화면에 대한 정보를 보유하는 객체

ViewResolver

  • Controller가 반환한 View 이름 기반으로 화면에 표시할 jsp 결정

View

  • Controller의 처리결과 보여줄 응답 화면 생성

 

🌿 Spring MVC 실행 순서

  1. DispatcherServlet(Front Controller)이 Client의 요청 수신
  2. DispatcherServlet이 Handler Mapping(URL Mapping)을 통해 어느 Controller 사용할 것인지 선택위임
  3. Controller는 Service 및 DAO를 수행한 후 수행결과를 ModelAndView 객체에 담아 DispatcherServlet에 리턴
  4. DispatcherServlet는 이 반환값을 ViewResolver를 태워 논리적이름인 ViewName을 JSP파일로 변환
    ("index" -> /WEB-INF/views/index.jsp)
  5. View는 해당 JSP파일을 화면에 표현