8월 30, 2023

Spring Web MVC 아키텍쳐 알아보기

[Spring] - 모델-뷰-컨트롤러(MVC) 패턴이란?

 

이전 포스팅에서 모델-뷰-컨트롤러라는 전체적인 MVC 패턴에 대하여 알아보았다. 오늘은 더 범위를 좁혀서 Spring Web MVC 아키텍쳐에 대하여 알아보도록 하겠다.

 

Spring Web MVC 아키텍쳐는 아래의 그림 하나로 요약이 가능하다. 



  

위 다이어그램에서 볼 수 있듯이 Srping Web MVC에서 핵심이 되는 것은 "DispatcherServlet"이다. 이는 등록된 요청 핸들러라고 할 수 있으며 요청을 전달하는 프론트 컨트롤러이다. 프론트 컨트롤러는 다른 컨트롤러들을 관리하는 최상위 컨트롤러라고 할 수 있다. 

 

각 핸들러는 서비스의 역할을 수행하며 DispatcherServlet이 요청을 전달할 뷰를 지정하게 된다. 


위 다이어그램을 통해서 Spring Web MVC에서 어떠한 과정으로 플로우가 흘러가는지 간단히 설명하도록 하겠다.

 

1. HTTP 요청 : 요청이 DispatcherServlet에 연결된다. 

 

2. 요청에 따른 컨트롤러 확인: DIspatcherServlet은 요청 경로에 따라 등록된 핸들러 중 어떤 핸들러가 호출되어야 할 지 결정하여 요청을 다시 전달하게 된다.

 

3. HTTP 요청: HTTP 요청을 핸들러가 처리하게 된다. 1번은 HTTP 요청이 DIspatcherServlet 즉 최상위 컨트롤러에 전달되어 어떤 컨트롤러에게 전달되어야 되는지 확인했던 과정이라면, 3번에서는 직접 연결되는 컨트롤러에 HTTP 요청이 전달된 것이라고 보면 된다. 

 

4. 모델 쿼리 업데이트: 핸들러는 모델에 대한 쿼리나 업데이트를 수행한다.

 

5. 모델 데이터 반환: 모델에서 필요한 작업을 수행한 뒤 모델 데이터가 반한된다. 

 

6. 모델 및 뷰 반환: 핸들러는 데이터와 논리 뷰 이름을 최상위 컨트롤러인 DIspatcherServlet으로 반환한다.

 

7. 뷰 이름으로 뷰 찾기: 논리 뷰 이름을 전달받은 DispatcherServlet은 뷰 이름을 확인하여 뷰 이름으로 뷰를 찾는다.

 

8. 모델 데이터 전달: 실제 뷰에 모델 데이터를 전달한다. 

 

9. 페이지 렌더링: 뷰에서는 모델 데이터를 전달받아 응답을 생성하고 DispatcherServlet은 응답을 클라이언트로 내보낸다. 

 


전반적인 개념 설정은 위와 같고, 실제 구체적인 예시를 통해 Spring Web MVC 응용프로그램을 만드는 것은 다음 포스팅에서 다루어보도록 하겠다. 


8월 30, 2023

모델-뷰-컨트롤러(MVC) 패턴이란?

오늘은 모델-뷰-컨트롤러 (Model-View-Controller) 패턴에 대해 알아보도록 하겠다. 이 패턴을 이해하고 나면 Spring Web MVC 패턴도 수월하게 이해할 수 있을 것이다. 

 

모델-뷰-컨트롤러(MVC)는 비즈니스 서비스와 도메인 객체(즉, 모델)를 UI(뷰)로부터 분리하고 하나 이상의 컨트롤러들 사이를 중재하는 아키텐쳐 패턴을 뜻한다. 비즈니스 로직과 도메인 객체를 변경하지 않으면서 UI를 변경하는 것이 용이해지며, 모델과 뷰 사이의 분리를 가능하게 해주는 패턴으로 유명하다. 

 

정보처리기사나 기술적 개념을 서술하는 시험에 단골로 등장하는 개념이기도 하기에 확실히 개념을 알아두는 것이 좋다.

 


MVC 패턴의 개념적 흐름도는 위와 같다.

JAVA 프로그램이 MVC를 실체화 하는 방식을 알면 위 아키텍쳐 패턴이 조금 더 이해가 잘 될 것이다.

 

자바 프로그램은 모델의 경우 비즈니스 계층의 코드 (ex) 서비스 Bean) 등을 사용, 뷰의 경우  JSP 등을 사용, 컨트롤러의 경우 서블릿 기반으로 구현을 하여 MVC 패턴을 실체화 한다. 


위 MVC 패턴의 스텝을 구체적으로 말해보면

1. HTTP 요청: HTTP 요청이 컨트롤러로 도착한다.

2. 모델에 대한 쿼리 또는 수정: 컨트롤러는 그 다음 모델에 접근한다.

3. 데이터 반환: 모델에 접근 후 모델로부터 데이터를 가져오거나 모델을 변경한다.

4. 뷰로 데이터 전달: 뷰를 사용하여 뷰로 데이터를 전달한다.

5. 페이지 렌더링: 뷰로부터 응답을 생성하고 적절한 데이터를 꺼낼 수 있도록 모델 전달 후 페이지 렌더링을 한다.

6. HTTP 응답: 클라이언트는 최종 생성된 응답을 수신하고, 서비스가 완료된다. 

 

즉 MVC 패턴은 단순히 말해서 관심사를 분리하는 것이라고 할 수 있다. 

 

다음 포스팅에서는 MVC 패턴 설명 기반으로 Spring Web MVC에 대해 다뤄보도록 하겠다.