일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- RequestMethod.POST
- Spring
- jsx
- AndroidStudio
- JSTL
- Callback
- iBATIS
- android
- c:forEach
- vscode
- NPM
- jQuery
- fullcalendar
- egov
- MVC
- HTTP
- 국제화
- C#크롤링
- 쿼리
- Java
- MySQL
- 서드파티모듈
- node.js
- SQL
- mybatis
- c:choose
- 동적쿼리
- JavaScript
- 콜백
- react
- Today
- Total
Today Yewon Learned
[Spring] MVC (Model-View-Controller) Pattern 본문
M(model, domain)
Model이란 프로그램을 작업하는 요소들을 개념적으로 정의한 것 (일반적으로 DB TALBE에 해당)
예를들어, 음식점 무인포스기를 개발한다고 가정하면, 작업을 수행하기 위해서 메뉴가 있어야하고 메뉴를 담을 수 있는 장바구니, 해당 메뉴의 수량, 결제수단, 할인정책 등의 기능이 필요하다.
이처럼 프로그램이 목표하는 작업을 원할하게 수행하기 위해 물리적 개체, 규칙, 작업등의 요소들을 구분되는 역할로써 정의해놓은 것이다.
순수한 데이터로서 DB의 역할을 하거나 DB에 데이터를 요청해서 원하는 데이터를 받는 역할을 한다.
* 사용자가 편집하길 위하는 모든 데이터를 가지고 있어야하고 View나 Controller에 대한 정보는 알 수 없음
* Model은 DTO와 DAO로 구분가능
V(view)
View는 사용자가 보는 화면에 입출력 과정 및 결과를 보여주기 위한 역할을 수행
입출력의 순서나, 데이터양식은 컨트롤러에 종속되어 결정되고,
도메인 모델의 상태를 변환하거나 받아서 렌더링하는 역할 수행
* view를 구현할 때 주의할 점은 도메인 로직의 어떤 것도 알고 있으면 안된다.
절대적으로 객체를 전달받아 상태를 바로 출력하는 역할만을 담당해야하기 때문에 view에서는 도멩니 객체의 상태를 따로 저장하고 관리하는 클래스 변수 혹은 인스턴스 변수가 필요없다.
C(Controller)
Controller는 model과 view를 연결시켜주는 다리 역할과 동시에 도메인 객체들의 좋바을 통해 프로그램의 작동 순서나 방식을 제어한다.
사용자가 접근한 URL에 따라서 사용자의 요청을 파악한 후 그 요청에 맞는 데이터를 Model에 의뢰하고, Model에서 받은 데이터를 View에 반영해서 사용자에게 알려주는 역할을 한다.
controller는 view와 model이 각각 어떤 역할과 책임이 있는지 알고 있어야한다.
* 웹 프로그래밍에서는 Contorller에서 service layer를 분리하여 domain 로직이 수행되는 곳과 view의 요청을 매핑하는 곳을 독립적으로 관리 할 수 있어야한다.
'Spring' 카테고리의 다른 글
[Spring] Request method 'POST' not supported 오류 해결 (0) | 2022.07.04 |
---|---|
[Spring] @RequestMapping의 GET/POST 요청 (0) | 2021.11.19 |
[Spring] Spring Annotation (0) | 2021.11.09 |