티스토리 뷰

Spring

Spring MVC (Model, View, Controller)

기내식은수박바 2022. 4. 15. 15:01
반응형

Spring MVC?

  • Model / View / Controller로 역할을 나누는 패턴이다.
  • MVC 패턴의 목적은 Business Logic과 Presentation Logic을 분리하는 것이다.
    • Business Logic : 어떤 특정한 값을 얻기 위해 데이터 처리를 수행하는 응용프로그램의 일부 (즉, 원하는 값을 얻기 위해 백엔드에서 일어나는 각종 처리)
    • Presentation Logic : 화면상의 디자인 구성을 위한 처리 (즉, 화면을 보여주기 위한 처리)
  • 역할 별로 코드를 분리하여 하나의 파일에 코드가 모이는 것을 방지하기 때문에, 가독성과 코드 재사용이 증가한다.
  • 단점으로 View와 Model 사이의 높은 의존성 때문에 애플리케이션이 커질수록 복잡해지고 유지보수가 어렵다.

Model

  • Controller에서 View로 전달되는 데이터 객체이다.
  • Key-Value 형태를 가지며, 하나의 (Key-Value) 객체를 Model Attribute라고 한다.

Controller

  • View와 Model 사이의 인터페이스 역할을 수행한다.
  • Request에 따라 적절한 결과를 Model에 담아 View에 전달한다.
    • 즉, View Name과 View에 출력할 Model을 반환한다.

View

  • Model 데이터의 렌더링을 담당하며, HTML Output을 생성한다.
  • 여러가지 템플릿 엔진이 존재한다. (ex. JSP, Thymleaf, Freemarker, ...)

 

 

 

Spring MVC의 흐름

  1. Client 요청 (Request) 이 들어오면 Filter를 거치고, Dispatcher Servlet으로 온다.
  2. Dispatcher Servlet은 받은 요청을 Handler Mapping에게 전달하고, Handler Mapping은 요청 URL을 분석하여 적절한 Controller 정보를 찾아 Dispatcher Servlet에게 반환한다.
  3. 적절한 Controller 정보를 받은 Dispatcher Servlet은 Handler Adapter를 호출하고, 전달 받은 Controller 중 요청한 URL에 맞는 적절한 Method를 찾아준다.
  4. 호출된 Controller는 Business Logic을 처리하고 나온 결과를 View에 전달할 수 있도록 Model 객체에 저장한다.
  5. 그 후, 호출된 Controller는 Dispatcher Servlet에게 View Name을 반환한다.
  6. Dispatcher Servlet은 View Resolver를 호출하여 View Name을 전달하고, View Resolver는 View Name을 바탕으로 적절한 View 객체를 결정한다.
  7. View 객체는 적절한 View (ex. JSP, Thymeleaf) 를 호출하고, View는 화면 표시에 필요한 데이터를 Model 객체에서 가져와 화면 표시를 처리한다.
  8. 렌더링된 View 화면을 Client에게 Response 한다.

 

 

구성 요소

Dispatcher Servlet

  • Spring Framework가 제공하는 Servlet 클래스로, Front Controller를 담당하고 있어 모든 HTTP 요청을 받는다.

Handler Mapping

  • Request URL에 해당하는 Controller 정보를 저장하는 테이블을 가진다.
  • 테이블에 저장된 정보에 따라 Request를 처리할 Method에 매핑한다.

ViewResolver

  • Controller가 반환한 View Name을 바탕으로 적절한 View 객체 (Physical View Files) 를 반환한다.
  • 예를 들면 아래와 같다.
    • View Name: home
    • Prefix: /WEB-INF/views/
    • Suffix: .jsp
    • 즉, "/WEB-INF/views/home.jsp" 위치의 View(JSP) 에 Controller에서 받은 Model을 전달하고, 해당 View에서 Model 데이터를 이용하여 적절한 페이지를 만들고 Client에게 보여준다.

 

Reference

 

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함