프로그래밍

MVC 패턴의 개념

Jay22 2017. 1. 3. 11:50
반응형

MVC(Model - View - Controller)


소프트웨어 공학에서 사용되는 아키텍쳐 패턴으로 MVC 패턴의 주 목적은 Bussiness logic과 Presentation logic을 분리하기 위함이다.


MVC 패턴을 사용하면, 사용자 인터페이스로부터 비지니스 로직을 분리하여 어플의 시각적 요소나 그 이면에서 실행되는 비지니스 로직을 서로 영향없이 쉽게 고칠 수 있는 어플을 만들 수 있다.


Model : 어플리케이션의 정보(데이터, Business Logic포함)

View : 사용자에게 제공할 화면 (Presentation logic)

Controller : Model과 View 사이의 상호 작용을 관리



클라이언트가 요청을 보내면 컨트롤러가 모델에 전달하여 다시 결과를 되 받아 뷰에 뿌리는 과정이다.


Model 컴포넌트


데이터베이스와 연동하여 사용자가 입력한 데이터나 사용자에게 출력할 데이터를 다루는 일

여러개의 데이터 변경 작업을 하나의 작업으로 묶는 트랜잭션을 다루는 일

DAO클래스, Service클래스(비지니스로직)


View 컴포넌트


모델이 처리한 데이터나 그 작업결과를 가지고 사용자에게 출력할 화면을 만드는 일

생성된 화면은 웹 브라우저가 출력하고 뷰 컴포넌트는 html css  js를 이요여하여 웹 브라우저가 출력할 ui를 만든다.


Controller 컴포넌트


클라이언트의 요청을 받았을 때 그 요청에 대해 실제 업무를 수행하는 모델 컴포넌트를 호출하는 일을 함

클라이언트가 보낸 데이터가 있다면, 모델을 호출할 때 전달하기 쉽게 데이터를 적절히 가공하는 일을 함

모델이 업무 수행을 완료하면, 그 결과를 가지고 뷰에 전달한다.



2가지 아키텍쳐


모델1 Controller 를 JSP가 담당 => 결과적으로 java코드가 많이 들어가기 때문에 복잡해짐 

모델2 Controller 를 Servlet 이 담당함 => 최근에 더 많이 쓰임


**** 모델 2 아키텍쳐





클라이언트가 서블릿에게 요청을 보낸다

서블릿이 모델객체에게 호출을 한다.

모델이 db에서 결과를 가져온다

모델이 vo객체에 담는다

저장된 vo객체를 서블릿에게 돌려준다



*** 호출 순서 (상세보기)




1.  브라우저가 앱 실행을 요구하면 웹 서버가 요청을 받아서 서블릿 컨테이너(톰캣같은)에 넘겨준다

서블릿 컨테이너는 url을 확인하여 그 요청을 처리할 서블릿을 찾아서 실행한다.


2. 서블릿은 실제 업무를 처리하는 모델 자바 객체의 메서드를 호출한다.

가공이 필요핟면 가공하여 VO(Value Object)을 만들고 모델 객체의 메서드를 호출할 때 인자 값으로 넘긴다.

모델 객체는 자바 빈(EJB Enterprise JavaBeans)일 수도 있고 일반 자바 객체일 수도 있다.


3. 모델객체는 JDBC를 사용하여 VO 객체를 db에 저장하거나 반환받아 vo를 만든다.


4. 서블릿은 모델 객체로 부터 받은 값을 JSP에 전달한다.


5. JSP는 서브릿으로 부터 받은 VO를 바탕으로 뷰를 만든다.


6. 브라우저는 서버로부터 받은 응답내용을 화면에 뿌린다.











반응형