Spring MVC

Spring MVC

2022, Jan 06    

알아보게 된 이유.

스프링을 개발하면서 특징에 대해 잘모르고 개발을 하고 있는 것 같아서 하나씩 정리해보기로 한다.

정리를 해보자.

Spring MVC

Model , View , Controller 의 약자 이며 하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 세가지의 역할로 구분한 패턴.

모델, Model

애플리케이션의 정보, 데이터를 나타냄 데이터베이스, 처음의 정의하는 상수, 초기화값, 변수 등을 뜻함 또한 이러한 데이터, 정보들의 가공을 책임지는 컴포넌트

뷰, View

데이터 및 객체의 입력, 그리고 보여주는 출력을 담당. Input 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소.

컨트롤러, Controller

데이터와 사용자인터페이스 요소들을 잇는 다리역할. 사용자가 데이터를 클릭하고, 수정하는 것에 대한 이벤트 들을 처리하는 부분.

  1. 사용자는 원하는 기능을 처리하기 위한 모든 요청을 컨트롤러에 보낸다.
  2. 컨트롤러는 모델을 사용하여 알맞은 비즈니스 로직을 수행한다.
  3. 사용자에게 보여줄 뷰를 선택한다.
  4. 선택된 뷰는 사용자에게 알맞는 결과 화면을 보여준다. 이때 사용자에게 보여줄 데이터는 컨트롤러를 통해서 전달받는다.

Model1 vs Model2 패턴의 차이

model1은 뷰와 로직을 모두 JSP페이지 하나에서 처리하는 구조를 말하며 model2는 JSP페이지와 서블릿, 그리고 로직을 위한 클래스가 나뉘어 브라우저 요청을 한다.

동작방식

spring-mvc

  1. DispatcherServlet이 브라우저로부터 요청을 받는다.
  2. DispatcherServlet은 요청된 URL을 HandlerMapping 객체에 넘기고, 호출해야 할 Controller메소드 정보를 얻는다.
  3. DispatcherServlet이 HandlerAdapter 객체를 가져온다.
  4. HandlerAdapter 객체의 메소드를 실행한다.
  5. Controller 객체는 비즈니스 로직을 처리하고, 그 결과를 바탕으로 뷰에 전달할 객체를 Model 객체에 저장한다. DispathcerServlet에게 view name을 리턴한다.
  6. DispatcherServlet은 view name을 View Resolver에게 전달하여 View 객체를 얻는다.
  7. DispathcerServlet은 view 객체에 화면 표시를 의뢰한다.
  8. View 객체는 해당하는 뷰를 호출하며 뷰는 Model객체에서 화면 표시에 필요한 객체를 가져와 화면 표시를 처리한다.