본문 바로가기
IT 정보

디자인패턴 MVC에 대해서

by 완기 2020. 6. 30.
728x90
반응형

MVC(Model View Controller)는 제록스 연구소에서 일을 하던 트뤼그베 린즈커그가 처음으로 소개한 개념으로 데스크톱 애플리케이션용으로 고안되었다.

 

각 역할에 대해 알아보겠습니다.

Model: 뷰가 렌더링할 때, 필요한 데이터 -> 상품 목록이나 주문 내역이 이에 해당된다.

View:웹 어플리케이션에서 실제로 보이는 부분이며, 모델을 사용하여 렌더링을 한다. 

Controller:사용자의 요구의 응답하는 컴포넌트이고, 사용자에 요청에 따라 모델을 업데이트하거나 특정 액션을 수행한다.

 

출처 : 부스트 코스

기본적인 MVC모델의 설계는 위 그림과 같은데, 위와 같은 방식으로 진행하게 되면 JSP페이지에서 html 코드와 자바 코드가 섞이면서 유지보수에 어려움을 겪을 수 있어서 고안된 모델이 있다.

 

MVC Model2

요청을 서블릿이 받고 서블릿이 자바 빈을 이용해 DB에서 데이터베이스를 이용하여 데이터를 얻어오고 JSP를 통해 화면에 보여준다.

 

이렇게 되면 서블릿이 컨트롤러의 역할을 수행하고 jsp가 뷰를 담당하면서 모델과 로직을 분리할 수 있게 된 것이다.

 

 

 

MVC Model2의 발전형태

위 그림은 스프링을 사용하여 웹 개발을 할 때, 자주 사용되는 model2의 패턴이다.

프론트 컨트롤러가 모든 요청을 다 받고(요청만 받음),

 

요청을 해당 컨트롤러에 위임을 하고,

 

모델을 생성해서 프런트 컨트롤러로 주게 되면

프런트 컨트롤러가 받은 모델을 뷰에 해당하도록 렌더링 한 결과가 사용자에게 반환되는 형식이다.

 

이런 패턴을 쓰게 되면 비슷한 url의 요청끼리 하나의 클래스에서 모두 처리할 수 있고, 유지보수에 더 용이하다.


Spring MVC의 기본 동작흐름

 

Spring 기본 동작 흐름

1.사용자의 요청

2.사용자의 요청이 어떤 요청인지 핸들러 매핑 객체를 통해 알아냄

3.,4 알아낸 정보를 토대로 핸들러에게 전달하고 핸들러는 그에 맞게 컨트롤러로 연결.

5, 컨트롤러는 로직을 수행한 후, 모델이 어떤 뷰에 들어갈지 뷰 이름을 반환.

6.뷰네임을 받은 디스패쳐 서블릿은 뷰네임과 일치하는 뷰를 뷰 리졸버에게 전달. 

7,알맞은 뷰를 사용자에게 반환.

 

 

Detail


DIspatcher Servlet

프론트 컨트롤러이 개념으로 클라이언트의 모든 요청을 받은 후,

이를 처리할 핸들러에게 넘기고 핸들러가 처리한 결과를 받아 사용자에게 응답 결과를 보여준다.

여러 컴토넌트를 이용해서 작업을 처리한다.

 

 

728x90
728x90

댓글