공간정보아카데미

Spring MVC

minjava 2025. 9. 3. 20:08

스프링 프레임워크 모듈 중 웹 계층을 담당하는 모듈 -> 서블릿 API를 기반으로 클라이언트의 요청을 처리하는 모듈 -> 이를 스프링 웹 MVC 라고 한다.

 

서블릿

- 클라이언트의 요청을 처리하도록 특정 규약에 맞춰 Java 코드로 작성하는 클래스 파일

- Apache Tomcat은 이러한 서블릿들이 웹애플리케이션으로 실행할 수 있도록 해주는 서블릿 컨테이너 중 하나임.

- spring MVC 내부에서는 서블릿을 기반으로 웹애플리케이션을 동작하며, 스프링 부트는 기본적으로 아파치 톰캣이 내장되어 있.

 

MVC (Model, View, Controller)

- 애플리케이션을 개발할 때 사용하는 디자인 패턴

- 개발 영역을 MVC로 구분하여 각 역할에 맞게 코드를 작성

 

Model

- 클라이언트의 요청을 전달받으면 요청사항을 처리하기 위한 작업을 하는데, 처리한 작업의 결과 데이터를 클라이언트에게 응답 해야됨. 이때 클라이언트에게 응답으로 돌려주는 작업의 처리결과 데이터를 Model 이라 함.

- Service layer : 클라이언트의 요청 사항을 구체적으로 처리하는 영역

- Business Logic : 요청사항을 처리하기 위해 Java 코드로 구현한 것

 

View

- Model을 이용하여 웹브라우저와 같은 애플리케이션의 화면에 보이는 리소스를 제공하는 역할

- 다양한 View 기술 : HTML 페이지 출력 / PDF, Excel 등의 문서 형태로 출력 / XML, JSON 등 특정 형식의 포맷으로 변환

 

Controller

- 클라이언트 측의 요청을 직접적으로 전달받는 앤드포인트로 Model과 View 중간에서 상호작용을 해주는 역할

- 클라이언트 측 요청을 전달받아 -> 비즈니스 로직을 거친 후 -> Model 데이터가 만들어지면 -> 이 Model 데이터를 View로 전달

 

MVC 패턴 구조

 

 

이 그림의 구조를 그대로 사용하는 것이 Spring MVC -> 구조가 복잡해지는 한계

 

!!! 이러한 한계를 극복하게 해주는 것이 Spring MVC !!!

 

 

 

 

Spring MVC 동작 방식과 구성요소

DispatcherServlet 은 HttpServlet을 상속받아 사용하고, 서블릿으로 동작함.

DispatcherServlet -> FrameworkServlet -> HttpServletBean -> HttpServlet

DispatcherServlet을 사용하면, 서블릿으로 등록하면서 모든 경로에 대해 매핑함.

 

서블릿이 호출되면 -> HttpServlet이 제공하는 service() 가 호출됨.

스프링 MVC는 FrameworkServlet.service() 를 시작으로 여러 메서드가 호출되면서 DispatcherServlet.doDispatch() 가 최종적으로 호출됨.