안녕하세요.
https://blog.naver.com/sysysy0302 여니입니다 :)
이번 포스팅은 MVC패턴 방식 Model1과 Model2 차이점에 대해 알아보겠습니다.
해당 포스팅을 보시기 전, MVC패턴의 개념 및 동작 방식에 대해 헷갈리거나 자세한 내용이 궁금하신 분들은 아래 링크의 포스팅을 먼저 보시고 오시는 것을 추천합니다.
https://yeoneeluv.tistory.com/305
MVC패턴 방식
MVC패턴에는 Model1 방식과 Model2 방식이 있습니다.
- Model 1 방식 : JSP에서 출력과 로직을 전부 처리
- Model 2 방식 : JSP에서 출력만 처리
로 분류할 수 있습니다.
Model 1 방식
Model 1 방식은 Controller영역에 View영역을 같이 구현하는 방식이며, 사용자의 요청을 JSP가 전부 처리합니다.
요청을 받은 JSP는 JavaBean Service Class를 사용하여 웹브라우저 사용자가 요청한 작업을 처리하고 그 결과를 출력합니다.
Model 2 방식
Model2 방식은 웹브라우저 사용자의 요청을 서블릿이 받고 서블릿은 해당 요청으로 View로 보여줄 것인지 Model로 보낼 것인지를 판단하여 전송합니다. 또한 Model2 방식의 경우 HTML소스와 JAVA소스를 분리해놓았기 때문에 Model1 방식에 비해 확장시키기도 쉽고 유지보수 또한 쉽습니다.
Model1과 Model2 차이점
Model 1 | Model 2 | |
장점 | 빠르고 쉽게 개발 가능 | 디자이너와 개발자의 분업이 가능하며 유지보수 및 확장이 쉬움 |
단점 | JSP파일이 너무 비대해지며 Controller와 View가 혼재하므로 향후 유지보수에 어려움 |
설계가 어려우며 개발 난이도가 높음 |
>> Model 1 방식으로 웹서비스를 개발하는 사례는 백엔드와 프론트엔드의 역할 분담이 모호해져 협업이 쉽지 않으며,
실제 서비스들 중에서 거의 없다고 봐도 무방합니다.
모델 (Model)
데이터를 가진 객체를 모델이라고 지칭합니다. 데이터는 내부의 상태에 대한 정보를 가질 수도 있고, 모델을 표현하는 이름 속성으로 가질 수 있습니다. 모델의 상태에 변화가 있을 때 컨트롤러와 뷰에 이를 통보합니다. 이와 같은 통보를 통해 뷰는 최신의 결과를 보여줄 수 있고, 컨트롤러는 모델의 변화에 따른 적용 가능한 명령을 추가, 제거, 수정할 수 있습니다.
모델의 규칙
- 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야만 함
- 뷰나 컨트롤러에 대해서 어떠한 정보도 알지 말아야 함
- 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야 함
뷰 (View)
View는 클라이언트 측 기술은 HTML/CSS/JavaScript들을 모아둔 컨테이너입니다. 사용자가 볼 결과물을 생성하기 위해 모델로부터 정보를 얻어옵니다.
뷰의 규칙
- 모델이 가지고 있는 정보를 따로 저장해서는 안됨
- 모델이나 컨트롤러와 같이 다른 구성 요소를 몰라야 함
- 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야 함
컨트롤러 (Controller)
사용자가 접근한 URL에 따라 사용자의 요청사항을 파악한 후에 그 요청에 맞는 데이터를 Model을 의뢰하고, 데이터를 View에 반영해서 사용자에게 알려줍니다.
모델에 명령을 보냄으로써 뷰의 상태를 변경할 수 있음 => (워드에서 문서 편집)|
컨트롤러가 관련된 모델에 명령을 보냄으로써 뷰의 표시 방법을 바꿀 수 있음 => (문서를 스크롤하는 것)
컨트롤러의 규칙
- 모델이냐 뷰에 대해서 알고 있어야 함
- 모델이나 뷰의 변경을 모니터링해야 함
MVC 패턴을 사용해야 하는 이유
- 비즈니스 로직과 UI로직을 분리하여 유지보수를 독립적으로 수행가능합니다.
- Model과 View가 다른 컴포넌트들에 종속되지 않아 애플리케이션의 확장성, 유연성에 유리합니다.
- 중복 코딩의 문제점을 제거할 수 있습니다.
+ 포스팅 참고 자료
'。*:・゚☆・゚schedule・゚*:・゚★・:*:・☆ *:・゚★ > 나의 면접 준비 자료 ✿˘◡˘✿' 카테고리의 다른 글
[취업/면접] Java - 1부터 10까지 합계 구하기 (for 반복문으로 1부터 10까지 합계 계산하기) + static활용예시 (0) | 2023.10.03 |
---|---|
[취업/면접] JSP란? (1) | 2023.10.02 |
[취업/면접] MVC패턴 개념 및 동작 방식, MVC패턴을 사용하는 이유 (0) | 2023.10.01 |
[취업/면접] static이란? (1) | 2023.09.30 |
[취업/면접] JSTL 개념 및 사용이유 (0) | 2023.09.29 |