Spring MVC란?

일단 해볼게·2023년 7월 24일
0

Springboot

목록 보기
23/26

Spring MVC란?

웹 계층에 서블릿(Servlet) API를 기반으로 클라이언트의 요청을 처리하는 모듈이 있는데 이를 스프링 웹 MVC(spring-web-mvc) 또는 스프링 MVC라고 한다.

서블릿(Servlet)이란?

  • 서블릿은 클라이언트의 요청을 처리하도록 특정 규약에 맞춰 Java 코드로 작성하는 클래스 파일이다.
  • 아파치 톰캣(Apache Tomcat)은 이러한 서블릿들이 웹 애플리케이션으로 실행할 수 있도록 해주는 서블릿 컨테이너(Servlet Container) 중 하나이다.
  • Spring MVC 내부에서는 서블릿을 기반으로 웹 애플리케이션을 동작하며, 스프링 부트는 기본적으로 아파치 톰캣이 내장되어 있다.

MVC란?

  • Model(모델)

    • 처리한 작업의 결과 데이터를 클라이언트에게 응답을 돌려주어야 하는데, 이때 클라이언트에게 응답으로 돌려주는 작업의 처리 결과 데이터를 Model이라 한다. (데이터, Business Logic 포함)
      • Business Logic : 요청 사항을 처리하기 위해 Java 코드로 구현한 것
    • 모델의 규칙
      • 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야만 함
      • 뷰나 컨트롤러에 대해서 어떠한 정보도 알지 말아야 함
      • 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야 함
  • View(뷰)

    • Model을 이용하여 웹 브라우저와 같은 애플리케이션의 화면에 보이는 리소스(Resource)를 제공하는 역할을 한다.
      • HTML 페이지 출력
      • PDF, Excel 등의 문서 형태로 출력
      • XML, JSON 등 특정 형식의 포맷으로 변환
    • 뷰의 규칙
      • 모델이 가지고 있는 정보를 따로 저장해서는 안됨
      • 모델이나 컨트롤러와 같이 다른 구성 요소를 몰라야 함
      • 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야 함
  • Controller(컨트롤러)

    • 컨트롤러는 클라이언트 측의 요청을 직접적으로 전달받는 엔드포인트(Endpoint)로써 Model과 View의 중간에서 상호작용을 해주는 역할을 한다.
    • 클라이언트 측의 요청을 전달받아 비즈니스 로직을 거친 후, Model 데이터가 만들어지면, 이 Model 데이터를 View로 전달하는 역할을 한다.
    • 컨트롤러의 규칙
      • 모델이냐 뷰에 대해서 알고 있어야 함
      • 모델이나 뷰의 변경을 모니터링해야 함

Spring MVC 동작 과정

  1. dispatcherServletFrontController 역할을 하면서 들어온 요청을 받는다.
    1. FrontController : 앞쪽에서 처리하는 컨트롤러를 두는 패턴
  2. 받은 요청을 Handler Mapping 전략에 의해 controller를 조회한다.
  3. dispatcherServletHandlerAdapter를 통해 controller를 선택한다.
  4. HandlerAdapter 가 httpRequest를 controller 함수 파라미터에 맞게 변환한다.
  5. controller가 Service, Repository, Database를 통해 나온 결과 모델과 view name을 만든다.
  6. DispatcherServlet이 ViewResolver에 view name과 모델 전달
  7. ViewResolver가 특정한 view를 찾아준다. (jsp view, json view, thymeleaf view 등)
    1. ViewResolver : Model이 View를 반환하는데 어떤 View를 만들어 낼지 처리

참고

https://ittrue.tistory.com/234

https://cocoon1787.tistory.com/733

profile
시도하고 More Do하는 백엔드 개발자입니다.

0개의 댓글