MVC

Updated:

MVC (Model - View - Controller)

소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며, 뷰는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타내고, 컨트롤러는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다.

스크린샷 2019-10-05 오후 7 23 23

Model

모델(model)이란 어떠한 동작을 수행하는 코드를 말한다. 표시 형식에 의존하지 않는다. 다시 말해, 사용자에게 어떻게 보일지에 대해 신경쓰지 않아도 된다. 모델은 순수하게 public 함수로만 이루어진다. 몇몇 함수들은 사용자의 질의(query)에 대해 상태 정보를 제공하고 나머지 함수들은 상태를 수정한다.

View

MVC에서 모델은 여러 개의 뷰(view)를 가질 수 있다. 뷰는 모델에게 질의를 하여 모델로 부터 값을 가져와 사용자에게 보여줍니다. input 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타냅니다. 다시 말해 데이터 및 객체의 입력, 그리고 보여주는 출력을 담당합니다. 데이타를 기반으로 사용자들이 볼 수 있는 화면입니다.

Controler

클라이언트의 요청을 받았을 때, 그 요청에 대해 실제 업무를 수행하는 모델 컴포넌트를 호출한다. 또한 클라이언트가 보낸 데이터가 있다면, 모델에 전달하기 쉽게 데이터를 가공한다.

MVC 작동원리

스크린샷 2019-10-05 오후 7 23 17

  1. 클라이언트가 Controller(Servlet)으로 Request를 보낸다.
  2. (2-1) Controller는 DB와 연결된 Model(Java Bean) 객체를 호출한다..
  3. (2-2) Model은 DB에서 적절한 정보를 가져와 저장한다.
  4. (2-3) 데이터를 가져와 Controller에게 결과값을 반환한다.
  5. (2-4) Controller는 모델로부터 받은 결과값을 View에게 전달한다.
  6. View(JSP)는 전달받은 결과값을 참조하여 출력할 결과 화면을 만들고 컨트롤러(클라이언트)에게 전달한다.

마지막 6번에서는 Controller가 클라이언트에게 전달하는 경우와 View가 전달하는 경우 조금 차이가 있습니다.

MVC1 vs MVC2

MVC 1

스크린샷 2019-10-05 오후 7 38 07

모든 클라이언트 요청과 응답을 JSP (View)가 담당을 한다. 이는 단순한 웹 페이지 구성에 강점을 가지만, 웹 페이지가 많아질 수록 유지보수의 문제가 발생하게된다.

MVC 2

스크린샷 2019-10-05 오후 7 38 12

MVC1과 달리 클라이언트의 요청을 Servlet(Controller)가 받게됩니다. Servlet이 클라이언트의 요청을 처리한 후 그 결과를 JSP(View)에게 포워딩 하게됩니다. 이는 클라이언트의 요청처리와 응답처리, 로직 처리를 전부 분담하게 됩니다. 그로 인해 유지보수와 확장이 용이하지만, 구조 설계를 위한 시간이 소요되므로 개발 기간의 증대로 이루어집니다.

Leave a comment