MVC 패턴
- 소프트웨어 공학에서 사용하는 디자인 패턴 중 하나로 Model, View, Controller의 앞 글자를 따서 만든 디자인 패턴
- MVC 패턴은 크게 모델 1방식과 모델 2방식이 있다.
- 두 모델의 큰 차이점은 JSP가 결과의 출력뿐만 아니라 요청에 대한 모든 로직들을 처리하냐, JSP는 결과만 담당하냐의 차이이다.
Model : 백그라운드에서 동작하며, 사용자가 원하는 데이터나 정보를 제공한다.
View : 사용자의 요청을 화면으로 출력한다.
Controller : 사용자의 요청을 처리하고, 그 요청에 따른 전체적인 흐름을 제어한다.
예시 1
- 사용자는 얻고자 하는 정보나 기능을 컨트롤러에게 요청한다.
- 컨트롤러는 사용자의 요청을 수신하고 그에 맞는 비즈니스 로직을 수행한다.
- 비즈니스 로직을 수행하면서 컨트롤러는 필요에 따라 모델을 호출하여 데이터를 요청한다.
- 요청을 모두 처리하면 뷰를 통해 사용자가 원하는 정보를 시각적으로 보여준다. (화면으로 출력)
예시 2
- 사용자가 게시물 작성 페이지에 접속합니다. (View)
- 사용자가 게시물의 제목과 내용을 입력하고 작성 버튼을 클릭합니다. (View)
- 컨트롤러는 사용자의 요청을 수신하고, 입력된 데이터를 받아옵니다. (Controller)
- 모델은 데이터베이스에 새로운 게시물을 생성하고, 제목과 내용을 저장합니다. (Model)
- 모델은 게시물 생성이 완료되었음을 컨트롤러에 알립니다. (Model)
- 컨트롤러는 생성된 게시물의 상세 정보를 검색하여 뷰에 전달합니다. (Controller)
- 뷰는 전달받은 데이터를 사용하여 생성된 게시물을 표시합니다. (View)
- 사용자는 게시물이 작성되어 뷰에 표시된 것을 확인할 수 있습니다. (View)
Model 1
- 흔히 웹 개발을 하면 Jsp가 뷰 역할을 하는데, Model 1에서 Jsp는 뷰와 컨트롤러의 역할을 모두 감당한다.
- 비즈니스 로직 영역(Controller)에 프레젠테이션 영역(View)을 같이 구현하는 방식이다.
장점
- 상대적으로 설계가 간단하여 개발 속도가 빠르고 작은 프로젝트에 알맞다.
단점
- Jsp에 Java 코드와 Html, css 등의 코드가 섞여 있어, 소스가 복잡해지고 읽기가 어려워져 유지보수가 힘듦
- Jsp 코드와 백, 프론트엔드가 혼재되어 분업이 용이하지 않음 (역할 분담이 모호해짐)
Model 2
- 소스가 복잡하다는 Model 1의 단점을 보완하기 위해 탄생했으며, 비교적 큰 프로젝트에 어울린다.
- 비즈니스 로직 영역(Controller)과 프레젠테이션 영역(View)이 분리되어 있는 구현 방식이다.
장점
- Html과 Java 코드가 분리되어 확장에 용이하다.
- 기능에 따라 분리되어있어 유지보수가 수월하다.
- 출력을 위하 뷰 코드와 로직 처리를 위한 자바 코드를 분리하기 때문에 모델 1에 비해 코드가 복잡하지 않다.
단점
- 설계 단계에서 비용이 많이 들어 개발 속도가 느리다.
- JAVA에 대한 깊은 이해가 필요
- 구조가 복잡하여 습득이 어렵고 작업량이 많다.
- Model 1에서는 Jsp가 사용자의 호출을 받아줬는데 Model 2에서는 컨트롤러 역할을 수행하는 Servlet이 요청을 받아준다.
- Servlet(서블릿)이 비즈니스 로직을 수행하며 모델을 호출하여 데이터를 요청하며, 최종적으로 뷰 역할인 Jsp를 제어하여 화면을 출력한다.
- Jsp는 Java 코드를 안 쓰는 대신 JSTL을 사용하여 결과 화면을 보여준다.
'etc' 카테고리의 다른 글
TOAST UI Editor 사용해보기 / 툴바 커스터마이징 (0) | 2023.05.09 |
---|---|
Linux, Ubuntu, wsl (0) | 2023.05.08 |
if문 이쁘게 만들기 (0) | 2023.04.12 |
기초공부 (0) | 2023.04.06 |
[평가] 페르소나 (0) | 2023.03.09 |