본문 바로가기
Spring

[Spring] MVC1과 MVC2의 차이!

by GoodDayDeveloper 2020. 4. 15.
반응형

 

오늘은 MVC1과 MVC2에 대한 차이점을 알아보려합니다.

JAVA를 배우고 프로젝트를 들어가는 분들이라면 반드시 알아야 할 부분이기에 정리를 해볼까합니다.

특히, 자바 개발자로 취업할 경우, 반드시 면접질문에 나오는 사항이니 꼭 숙지하고 면접에 임하세요~

 


 

 

 

 

 

MVC1

 

웹브라우저 요청을 JSP가 처리, JSP가 Controller와 view 기능 모두 담당합니다.

쉽게 말씀드리면, 하나의 jsp페이지 내에서 controller는 자바, view는 html, css 이벤트는 자바스크립트를 사용합니다.

Model은 jdbc 인터페이스로 DB 조작하면서 class를 정의합니다.

 

장점

페이지 흐름이 단순하고 구조가 간단하여 중소형 프로젝트에 적합합니다.

 

단점

유지보수가 어려워서 웹 규모가 커질수록 복잡해집니다.

개발자와 디자이너 역할 분담이 어려워서 원할한 의사소통이 필수입니다.

규모가 작고 유지보수 적은 경우 채택이 필요합니다.

 

 

 

예를들어

TV에서 요리프로그램을 진행한다 생각해봅시다.

요즘은 요리를 부각시킬때 한 화면에 맛있어보이게 원샷으로 크게 잡는 화면이 보일겁니다.

하지만 MVC1 같은 경우는 한 화면에 레시피, 음식을 만드는 화면, 음식 화면이 모두 보이게 된다고 이해하시면 됩니다.

생각만해도 아주...숨막힐 것 같네요. 그럼 MVC2는 어떨까요?

 

 

 

 

 

 

 

 

 

 

MVC2

 

웹 브라우저 요청을 controller에서 처리합니다.

controller는 요청에 대한 로직처리를 model로 보내고, model은 결과를 view로 보내여 사용자에게 응답하게 됩니다.

model은 mvc1, mvc2 모두 동일합니다.

view는 jsp로 구성되어 있으며, 자바는 포함되지 않고 jstl을 사용해 결과를 표현합니다.

 

장점

유지보수 확정에 용이하며 controller와 view의 분리로 명료한 구조를 가집니다.

개발자와 디자이너 역할 분담이 확실합니다.

 

 

단점

구조 설계를 위한 시간이 많이 소요되어 개발이 어렵습니다.

높은 수준의 이해도가 필요하여 개발팀 팀원의 수준이 높아야 합니다.

규모가 크고 유지보수 많은 경우 채택 필요합니다.

 

 

 

반응형

 

 

다시 한번 예를 들어보겠습니다.

 

 

MVC1일 경우, 한 화면에 레시피, 요리하는 장면, 음식 화면 이렇게 3가지가 들어가야한다고 했습니다.

이럴 경우 너무 복잡하고 효율이 떨어질겁니다!

그래서 MVC2처럼 각각의 역할을 분산시킨 개발 방식이 등장한거죠.

model은 레시피, View는 음식화면, Controller는 요리를 만드는 과정으로 나뉩니다.

 

 

그래서 만약 사용자가 떡볶이 화면을 찍는다고 한다면

 

  1. 사용자는 Controller에게 떡볶이를 만들어 달라고 요청을 합니다.
  2. Controller는 model에게 레시피 요청을 하고,
  3. model은 Controller에게 레시피를 전달합니다.
  4. 그리고 Controller에서 떡볶이를 만든다음,
  5. Controller에서 View로 떡볶이 화면이 비춰질 수 있도록 음식을 셋팅하는거죠!

 

이렇게 각자의 분산된 역할을 함으로써 효율적인 개발을 할 수 있으며, 통상적으로 사용하는 개발방식입니다 :)

 

 

 

 

 

 

사진 출처

(http://blog.naver.com/PostView.nhn?blogId=kksssii&logNo=220805270268&parentCategoryNo=&categoryNo=34&viewDate=&isShowPopularPosts=true&from=search)

반응형

댓글