Programming/Spring

Spring (5) - Spring MVC 패턴

코딩하는 포메라니안 2022. 4. 27. 15:55

1. Spring MVC란?

Spring이 제공하는 기능 중, Servlet 기반의 MVC Framework가 있다.

Spring MVC = 기존의 MVC + Front Controller이다.

 

기존의 MVC패턴에 대한 설명은 아래 글에 있다.

2022.03.27 - [웹프로그래밍/Servlet & JSP] - Servlet & JSP (3) - MVC 패턴

 

Servlet & JSP (3) - MVC 패턴

1. MVC 패턴이란? Model-View-Controller로 구조를 만들어 개발하는 개발 패턴이다. 이 패턴에 따라 개발하면 분업이 되어 유지보수가 쉽다고 알려진 형식들 중 하나이다. Controller가 Model과 View의 다리 역

yerinpy73.tistory.com

 

 

 

2. Spring MVC 구성요소

 

 

1. DispatcherServlet

- Controller 앞에 있는 FrontController

- Client의 요청을 받음 => URI를 기반으로, 적절한 Controller를 찾아 요청 전달 => Contoller에게 받은 결과값에 해당하는 View를 찾아 Client에게 응답

 

"FrontController"란?

예전의 Controller 는 act(요청에 따라 method 호출, forward/redirect) + data(데이터 처리)였다.

여기서 act부분을 FrontController로 따로 분리한 것이다.

 

2. HandlerMapping

- 요청을 보고 이를 처리할 Controller를 찾는다.

 

3. Controller

- 직접 구현해야 하는 곳 (= Spring이 자동으로 해주지 않는 곳)

- Service & DAO 등을 사용해 요청에 대한 logic을 처리한다.

- Model(결과 데이터)과 View(결과 화면의 정보)를 반환한다.

 

4. ViewResolver

- Controller가 반환한 View이름을 기반으로 결과 화면의 위치를 반환

ex) login => /WEB-INF/views/login.jsp

 

5. View

- 결과를 보여줄 응답 화면을 생성 & 반환

- 항상 보이지 않음 ex) 파일 다운로드, JSON으로 응답

 

*Spring을 RestAPI로 사용할 경우, View가 아닌 Data를 반환하므로 ViewResolver와 View를 거치지 않는다.