📌 MVC( Model, View, Controller )
- 하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 세가지의 역할로 구분한 디자인 패턴
- 디자인 패턴 : 개발 중에 발생한 문제점들을 정리해서 상황에 따라 간편하게 적용할 수 있도록 정리한 형태
- 좀 더 쉽고 편리하게 유지보수하고 공유하며 개발할 수 있도록 함
- 서로 분리되어 각자의 역할에 집중할 수 있게끔 하여 개발을 하고 어플리케이션을 만든다면, 유지보수성, 어플리케이션의 확장성, 그리고 유연성이 증가하고, 중복 코당이라는 문제점 또한 사라지게 된다.
- 유연성 : 클라이언트의 새로운 요구사항에 대해 최소한의 비용으로 보다 유연하게 대처할 수 있는 것
🔻 모델, Model (데이터를 다루는 주방장)
- 어플리케이션의 정보, 데이터를 나타낸다.
- 사용자가 편집하기 원하는 모든 데이터를 가지고 있어야 한다.
- 화면에 출력할 정보의 크기, 내용, 포맷과 같은 정보를 다 갖고 있어야함.
- 뷰나 컨트롤러에 대해서 어떤 정보도 알지 말아야 한다.
- 모델에서 UI를 직접 조정하고 수정할 수 없어야 한다.
- 데이터의 변경이 일어나면 변경통지에 대한 처리방법을 구현해야한다.
- 모델에서 데이터가 변경이 되면 이를 사용자에게 알려야 하고, 누군가 모델의 데이터를 변경하는 요청을 보내면 이를 수신할 수 있는 방법을 구현해야한다.
- 모델은 재사용 가능해야하며, 인터페이스에서도 변하지 않아야 한다.
- 컨트롤러가 호출 할 때 요청에 맞는 역할을 수행한다.
- 비즈니스 로직을 구현하는 영역으로 응용프로그램에서 데이터를 처리하는 부분
- 비즈니스 로직 : 업무에 필요한 데이터 처리를 수행하는 프로그램 논리구조
- DB에 연결하고 데이터를 추출하거나 CRUD를 수행한다.
- 상태의 변화가 있을 때 컨트롤러와 뷰에 통보해 후속 조치 명령을 받을 수 있게 한다.
🔻 뷰, View (주방장이 내온 데이터를 세팅하는 직원)
- 시각적인 부분, 화면을 담당하는 역할을 한다.
- 모델의 데이터를 어떤 방식으로 사용자에게 보여줄지 연구하는 부분
- 컨트롤러로부터 받은 모델의 결과값을 가지고 사용자에게 출력할 화면을 만드는 일을 한다.
- 만들어진 화면을 웹브라우저에 전송하여 웹브라우저가 출력하게 하는것
- 추출한 데이터나 일반적인 텍스트 데이터를 표시하거나 입력폼 또는 사용자와의 상호작용을 위한 인터페이스를 표시하는 영역
🔻 컨트롤러, Controller (흐름을 관리하는 매니저)
- 모델이나 뷰에 대해서 알고 있어야 한다
- 모델이나 뷰는 서로의 존재를 모르고, 변경을 외부로 알리고 수신하는 방법만 가지고 있기 때문에 이를 컨트롤러가 중재해야 함
- 모델이나 뷰의 변경을 모니터링 해야 한다.
- 모델이나 뷰의 변경 통지를 받으면 이를 해석해서 각각의 구성요소에게 통지를 해야합니다.
- 어플리케이션의 메인로직은 컨트롤러가 담당하게 된다.
- 사용자가 접근하려는 URL에 따라서 요청사항을 파악
- 요청에 맞는 Model의 데이터를 의뢰
- 데이터를 View에 반영해서 사용자에게 알려줌
- 전반적인 제어를 담당하는 역할
- 클라이언트의 요청을 받았을 때, 그 요청에 대해 실제 업무를 수행하는 모델 컴포넌트를 호출한다.
- 클라이언트가 보낸 데이터가 있다면, 모델에 전달하기 쉽게 데이터를 가공함
- 모델이 업무를 마치면 그 결과를 뷰에게 전달한다.
🔻Website에서 MVC구조
- 웹 브라우저가 웹 서버에 웹 어플리케이션 실행을 요청한다.
- 웹서버는 들어온 요청을 처리할 수 있는 서블릿을 찾아서 요청을 전달한다.
- 서블릿은 모델 자바 객체의 메소드를 호출한다.
- 데이터를 가공하여 값 객체를 생성하거나, JDBC를 사용하여 데이터베이스와의 인터랙션을 통해 값 객체를 생성한다.
- 업무수행을 마친 결과 값을 View를 전달한다.
- 컨트롤러는 모델로부터 받은 결과값을 View에게 전달한다.
- JSP는 전달받은 값을 참조하여 출력할 결과 화면을 만들고 컨트롤러에게 전달한다.
- View로부터 받은 화면을 웹서버에게 전달한다.
- 웹 브라우저는 웹서버로부터 요청한 결과값을 응답받으면 그 값을 화면에 출력한다.
- 사용자가 웹사이트에 접속한다(Uses)
- Controller는 사용자가 요청한 웹페이지를 제공하기 위해서 Model에서 데이터를 호출한다. (Mainpulates)
- Model은 데이터베이스나 파일과 같은 데이터 소스를 제어한 후에 그 결과를 리턴한다.
- Controller는 Model이 리턴한 결과를 View에 반영한다. (Updates)
- 데이터가 반영된 View는 사용자에게 보여진다. (Sees)
정리 쩌네요.... 감삼당