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

출처 : 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
- 웹 브라우저가 웹 서버에 웹 어플리케이션 실행을 요청
- 웹 서버는 들어온 요청을 처리 할 수 있는 서블릿을 찾아서 요청을 전달
- 서블릿은 모델 자바 객체의 메서드를 호출
- 데이터를 가공하여 값 객체를 생성하거나 JDBC를 사용하여 DB와의 인터랙션을 통해 객체 생성
- 업무 수행을 마친 결과값을 컨트롤러에게 반환
- 컨트롤러는 모델로 받은 결과값을 뷰에 전달
- JSP는 전달받은 값을 참조하여 출력할 결과 화면을 만들고 컨트롤러에게 전달
- 뷰로부터 받은 화면을 웹 서버에게 전달
- 웹 브라우저는 웹 서버로부터 요청한 결과값을 응답받으면 그 값을 출력
요약
1. View 에서 이벤트 수행
2. Controller 에서 수행할 메소드를 Model에 전송
3. Model에서 메소드를 수행하고 결과물을 Controller에 반환
4. Controller에서 반환받은 내용을 View로 반환
5. View 에서 이벤트 결과 확인
📌 MVC 패턴 장단점
◾ 장점
- 비스니스 로직과 UI로직을 분리하여 유지보수를 독립적으로 수행 가능
- 모델과 뷰가 다른 컴포넌트들에 종속되지 않아 어플리케이션의 확장성, 유연성에 유리
- 중복 코딩의 문제점 제거
◾ 단점
- 다수의 뷰를 가질 수 있고 컨트롤러에의해 하나의 뷰에 연결 될 수 있는 모델도 여러개가 될 수 있어 뷰와 모델이 서로 의존성을 띄게 된다.
즉, 모델과 뷰가 복잡하게 연결되어있는 상황이 발생 할 수 있음.
728x90
'스터디 > 테크톡' 카테고리의 다른 글
[테크 톡 - 7~8주차] 싱글톤 패턴과 정적 클래스 (0) | 2023.08.10 |
---|---|
[테크 톡 - 6주차] Restful API (0) | 2023.08.10 |
[테크 톡 - 5주차] Spring Security (0) | 2023.08.10 |
[테크 톡 - 3~4주차] 비동기 처리 + AJAX (0) | 2023.08.10 |
[테크 톡 - 1주차] GC (garbage collection) (0) | 2023.08.10 |