[테크 톡 - 2주차] MVC 패턴

728x90

📌 MVC 패턴이란

  • 모델 - 뷰 컨트롤러 (model–view–controller, MVC)
    모델 : 정보(데이터)
    뷰 : 사용자 인터페이스 (텍스트, 체크박스항목)
    컨트롤러 : 데이터와 비즈니스 로직사이의 상호동작
  • 사용자 인터페이스로부터 비즈니스 로직을 분리하여 어플리케이션의 시각적인 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 고칠 수 있는 어플리케이션을 만들 수 있다.
    → 과거에는 뷰에 모든 비즈니스 로직을 넣어 코드의 길이가 길어지고
    유지보수가 힘들었음
  • 위 개념을 web에 적용 하는 경우,
  1. 사용자가 웹 사이트에 접속
  2. 컨트롤러가 사용자가 요청한 웹 페이지를 서비스 하기 위해 모델 호출
  3. 모델은 데이터 베이스나 파일과 같은 데이터 소스를 제어한 후 그 결과를 리턴
  4. 컨트롤러는 모델이 리턴한 결과를 뷰에 반영
  5. 데이터가 반영된 뷰는 사용자에게 보여짐

📌 MVC 패턴의 종류

◾ 모델 1 방식

 

◾ 모델 2 방식

  • jsp에서 출력만 처리

etc-image-1


출처 : https://cocoon1787.tistory.com/733

 

📌 Model, View, Controller

◾ Model

  • 컨트롤러가 호출을 하면 DB와 연동하여 사용자의 입출력 데이터를 다루는 일과 같은 데이터와 연관된 비스니스 로직을 처리
  • 데이터 추출, 저장, 삭제, 업데이트 등
  • 모델의 규칙
    1 사용자가 편집하기를 원하는 모든 데이터를 가지고 있어야 함
    2 뷰나 컨트롤러에 대해 어떤 정보도 알지 말아야 함
    3 변경이 일어나면 변경 통지에 대한 처리 방법을 구현해야 함

◾ View

  • 사용자에게 보여주는 화면(UI) 대표적으로 jsp를 들 수 있다.
  • 사용자와 상호작용을 하며 컨트롤러로부터 받은 모델의 결과값을 사용자에게 화면으로 출력
  • 여러개의 뷰가 존재 할 수 있음
  • 모델에서 받은 데이터는 별도로 저장하지 않음
  • 뷰의 규칙
    1 모델이 가지고 있는 정보를 따로 저장해서는 안됨
    2 모델이나 컨트롤러와 같이 다른 구성 요소들을 몰라야 함
    3 변경이 일어나면 변경 통지에 대한 처리 방법을 구현해야 함

→ 모델과 뷰는 서로의 존재를 몰라야 함.

◾ Controller

  • 모델과 뷰 사이를 이어주는 인터페이스 역할.
    즉 모델이 데이터를 어떻게 처리할지 알려주는 역할
  • 사용자로부터 뷰에 요청이 있으면 컨트롤러는 해당 업무를 수행하는 모델을 호출하고 모델이 업무를 수행하면 다시 결과를 뷰에 전달
  • 컨트롤러의 규칙
    1 모델이나 뷰에 대해서 알고 있어야 한다.
    2 모델이나 뷰의 변경을 모니터링 해야함

 

📌 MVC 패턴 구동 원리

 

출처 : https://osy0907.tistory.com/63

  1. 웹 브라우저가 웹 서버에 웹 어플리케이션 실행을 요청
  2. 웹 서버는 들어온 요청을 처리 할 수 있는 서블릿을 찾아서 요청을 전달
  3. 서블릿은 모델 자바 객체의 메서드를 호출
  4. 데이터를 가공하여 값 객체를 생성하거나 JDBC를 사용하여 DB와의 인터랙션을 통해 객체 생성
  5. 업무 수행을 마친 결과값을 컨트롤러에게 반환
  6. 컨트롤러는 모델로 받은 결과값을 뷰에 전달
  7. JSP는 전달받은 값을 참조하여 출력할 결과 화면을 만들고 컨트롤러에게 전달
  8. 뷰로부터 받은 화면을 웹 서버에게 전달
  9. 웹 브라우저는 웹 서버로부터 요청한 결과값을 응답받으면 그 값을 출력

요약
1. View 에서 이벤트 수행
2. Controller 에서 수행할 메소드를 Model에 전송
3. Model에서 메소드를 수행하고 결과물을 Controller에 반환
4. Controller에서 반환받은 내용을 View로 반환
5. View 에서 이벤트 결과 확인

📌 MVC 패턴 장단점

◾ 장점

  • 비스니스 로직과 UI로직을 분리하여 유지보수를 독립적으로 수행 가능
  • 모델과 뷰가 다른 컴포넌트들에 종속되지 않아 어플리케이션의 확장성, 유연성에 유리
  • 중복 코딩의 문제점 제거

◾ 단점

  • 다수의 뷰를 가질 수 있고 컨트롤러에의해 하나의 뷰에 연결 될 수 있는 모델도 여러개가 될 수 있어 뷰와 모델이 서로 의존성을 띄게 된다.
    즉, 모델과 뷰가 복잡하게 연결되어있는 상황이 발생 할 수 있음.
728x90