MVC (Model View Controler) 패턴
📍 MVC 패턴
– Model, View, Controller의 약자이며, Model2 개발 방식과 거의 유사한 의미.
– 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴.
– 화면 출력 부분 (디자인 부분)을 View로 칭하고, 데이터베이스와 연동하는 부분 등의 로직 부분을 Model이라 칭하고,
Controller는 이 두 부분을 적절하게 연결시켜주는 역할을 함.
– 소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 둠.
→ 내꺼만 알아서 잘하자, "관심사의 분리"
– 최소한의 연결로 최소한의 코드 (= 좋은 프로그램)만 써서 프로그램을 만들기 위해 필요한 패턴.
→ 리펙터링 (재정비)이 잘 되야 좋은 코드.
– 이 패턴을 잘 익히면 다른 언어로 넘어가도 적응 잘함.
▸ MVC 패턴의 흐름

– Controller는 중앙에 위치하여 View와 Model 사이에 연동을 담당.
– MVC로 구성된 사이트에 요청을 하면 초기 진입점은 Controller.
– 반드시 처리할 비즈니스 로직이 존재한다면 Controller를 호출하여 Model에서 비즈니스 로직을 수행하고,
그 결과를 가지고 View에서 보여지게 해야만 함.
– 출력된 View 페이지에서 또 다른 요청을 할 경우도 Controller에게 요청을 하게 되며,
Controller는 요청 내용을 받은 후 Model을 호출하여 요청에 해당하는 비즈니스 로직을 수행함.
그리고 Controller는 Model의 결과값을 얻어 View 페이지로 보내게 됨.
– 모든 요청과 전달은 Controller를 통해 이루어짐.
▸ MVC 패턴의 구성
1. controller (서블릿)
– MVC 패턴에서 View와 Model을 연결시켜주는 핵심 요소.
– 초기 진입점이자 View와 Model을 연동하는 역할을 하기 때문에 서블릿으로 구성되어 있음.
→ 웹에서 요청을 받을 수 있는 Java코드 형태는 서블릿.
– Controller는 요청을 받아서 요청에 해당하는 Model과 View를 호출하는 역할만 담당.
보여지는 페이지가 아닌 연결시켜주는 통로 역할.
– MVC 패턴에서 중심역할을 하며, 반드시 서블릿으로 이루어져야 함.
2. View (JSP)
– MVC 패턴 중 화면 출력 부분에 해당하므로 JSP페이지로 구성, 코드는 거의 디자인에 관한 것으로 이루어져 있음.
→ 단순히 결과를 화면에 보여주는 정도로만 사용됨.
– View에서는 절대 데이터베이스 연동과 같은 비즈니스 로직을 구성하지 않음.
– Controller를 통하여 Model에서 처리한 결과를 화면에 출력할 때 사용.
3. Model (POJO)
– MVC 패턴에서 실제로 비즈니스 로직을 실행하는 부분.
– Mode 클래스 파일 (Plain Old Java Object = POJO)로 이루어져 있으며, 개발할 시스템의 비즈니스 로직이 작성됨.
– 비즈니스 로직을 처리하여 얻은 결과를 Controller를 통해 View 페이지로 전달하여 처리된 내용이 화면에 표시됨.
– 데이터베이스 작업을 할 경우 Model부분에서 이루어짐.
🐾 참조 도서 및 사이트 🐾
— JSP 2.3 & Servlet 3.1