[Boostcourse] 풀스택/웹 프로그래밍(풀스택)

Spring MVC 1: 개요 { MVC, MVC Model 1 아키텍처, MVC Model 2 아키텍처, MVC Model 2 발전형, Spring Web Module(Spring MVC) }

Ben의 프로그램 2023. 7. 27. 19:56
728x90
수업목표
이번 시간에는 Spring 프레임워크에서 웹 어플리케이션 작성을 위해서 제공되는 Web MVC 모듈에 대해 알아보도록 하겠습니다.

 

MVC란?
MVC는 Model-View-Controller 의 약자입니다.원래는 제록스 연구소에서 일을 하던 트뤼그베 린즈커그가 처음으로 소개한 개념으로, 데스크톱 어플리케이션용으로 고안되었습니다. 이런 개념들을 웹 어플리케이션에서도 사용하게 되었습니다. 

Model : 모델은 뷰가 렌더링하는데 필요한 데이터를 의미합니다. 예를 들어 사용자가 요청한 상품 목록이나, 주문 내역이 이에 해당합니다. 
View : 웹 어플리케이션에서 뷰는 실제로 보이는 부분이며, 모델을 사용해 렌더링을 한다. 뷰는 JSP, JSF, PDF, XML 등으로 결과를 표현한다. 
Controller : 컨트롤러는 사용자의 액션에 응답하는 컴포넌트입니다. 컨트롤러는 모델을 업데이트하고, 다른 액션을 수행하는 역할을 합니다. 

 

MVC Model 1 아키텍처
MVC 모델은 자바 웹 프로그래밍에서 2가지 형태로 변형이 됩니다.
그 중 첫 번째가 위에 보이는 MVC Model 1 아키텍처입니다. MVC Model 1 아키텍처는 Browser 가 요청을 하면 해당 요청을 JSP 가 받게 됩니다. 이말은 즉, Browser 의 요청의 종류만큼 JSP 가 존재해야 합니다. JSP 는 Java 로 만들어진 클래스인 Java bean 을 이용해서 Database 를 사용하게 됩니다. 여기서 말하는 Java bean 은 앞에서 말했던 Java JDBC를 의미합니다. 그리고 서버에서 받아온 결과를 화면에 출력하게 됩니다. 런 방식으로 처리했을 때의 문제는 JSP 페이지에 Java 코드와 HTML 코드가 막 섞여 있다는 것입니다. 우리가 이미 봤었죠. 그렇다 보니까 유지보수가 굉장히 어려워지는 문제가 있었습니다. 이런 문제를 해결하기 위해서 나온 것이 바로 MVC Model 2 아키텍처였습니다. 

 

MVC Model 2 아키텍처
Model 2 아키텍처는 브라우저의 요청을 JSP 가 아니라 Servlet 이 받게 합니다. Servlet 이 Java bean 을 이용해서 데이터베이스를 사용하게 됩니다. 이렇게 받은 결과를 JSP 를 통해서 화면에 출력하게 됩니다. 이 모델에서 Servlet 은 브라우저의 요청과 데이터를 처리하는 Controller 의 역할을 수행하고 있습니다. JSP는 Model 의 결과를 화면에 보여주는 View 의 역할을 수행하고 있는 것을 확인할 수 있습니다. 이렇게 함으로써 Logic 과 View 를 분리할 수 있게 되었습니다. 

 

MVC Model 2 발전형
이런 MVC Model 2 아키텍처의 발전형이 위에 보이는 것인데요. 클라이언트가 보내는 모든 요청을 '프런트 컨트롤러'라고 하는 Servlet 클래스가 다 받습니다. 이 서블릿은 딱 하나만 존재하게 됩니다. 이 프론트 컨트롤러는 요청만 받고 실제로 처리를 수행하지는 않습니다. 서블릿은 클라이언트의 요청을 처리하는데 불편한 것들이 있는데요. 이런 단점을 해결하기 위해서 사용자의 모든 요청만 서블릿(프런트 컨트롤러)이 받고 실제 처리는 '핸들러' 혹은 '컨트롤러'라고 불리우는 클래스에게 위임합니다. 이 결과로 '관련된 URL을 하나의 클래스에서 다 처리'할 수 있게 됩니다. 이런 컨트롤러는 Java bean 등을 이용해서 결과를 만들어 내고 만들어진 결과를 '모델'에게 응답에 대한 렌더링을 위임합니다. 모델은 프런트 컨트롤러에게 응답에 대한 렌더링을 보냅니다. 프론트 컨트롤러는 컨트롤러부터 받은 응답에 대한 렌더링(Model)을 알맞은 View 에게 전달해서 그 결과를 출력하게 됩니다. 

 

Spring Web Module(Spring MVC)
앞에서 설명한 'MVC Model 2 발전형'이 Spring Framework 에서 'Spring Web Module' 이라는 이름으로 구현이 되어 있습니다. 이러한 'Spring Web Module' 을 보통 'Spring MVC' 라고 부릅니다. 다음 시간에는 Spring MVC의 구성과 동작 순서 등에 대해서 배워보도록 하겠습니다. 

 

출처 : boostcourse 웹 프로그래밍(풀스택) 
https://www.boostcourse.org/web316/lecture/20655?isDesc=false