-
[ model2 ] 모델2 개발방식, MVC 패턴PROGRAMMING/model2 2022. 6. 30. 23:50
하루입니다.
오늘 적을 것
모델1 개발방식
모델2 개발방식
MVC가 뭔가요
!! 아직 배우는 중이라 설명이 미흡한 부분 혹은 오개념이 있을 수 있습니다. 해당 부분에 대한 피드백은 언제든 환영입니다. !!
1. MVC가 뭔가요
Model, View, Controller입니다.
Model : 로직 수행. DB와 관련있다.우리로 따지면 자바로 만들어진 Dao 이런 것들 아닐까?
View: 사용자가 보는 화면. 데이터를 받아서 보여주는 JSP 페이지.
Controller: Model과 View를 연결시켜주는 역할.
구글링 유튜블링(?) 했을 때 공통적으로 말하는 부분은 1. model과 view는 서로 직접 데이터를 주고받는 게 아니다. 2. controller가 그 역할을 한다. 라고 말했다. 이 부분이 M과 V는 서로의 존재를 모르지만 C는 M과 V의 존재를 안다는 말과 상통하는 듯.
2. Model1

모델1 개발방식이다. 우리가 세미프로젝트를 끝내기 전까지 한 모든 코딩의 형태가 이러했다. 세미프로젝트도 이 형태오 진행했고.
사용자가 요청을 보내면, jsp에서는 사용자의 요청처리 - 업무로직, 데이터 획득, 표현까지 세 가지 일을 맡아서 한다. controller와 view의 역할을 하는 것이다. DB만 안 다룰 뿐 for문이나 dao 소환도 한다.
java에서는 업무로직을 수행하고 DB에 엑세스한다. model의 역할이다.
한마디로 JSP가 C와 V의 역할을 동시에 하고, Java는 Model의 역할을 하는 것이다.
장점
- 구조가 단순하다.
- 개발 속도가 빠르다.
- 개발 초기에 복잡한 설정을 할 필요가 없다.
- 그래서 소규모 프로젝트에 적당하다.
단점
- 디자인코드와 자바코드가 섞여있다. (디자이너와 개발자가 분업 비용이)
- 유지보수가 어렵다.
- 코드가 복잡하다.
Model2

세미프로젝트 이후로 배우게 될 개발방식이다. 모델1을 보완해서 만든 개발방식이라고 한다.
- 클라이언트가 요청한다.
- 프론트컨트롤러(C)가 요청을 받는다.
- 적절한 컨트롤러를 실행하고, 해당 컨트롤러(C)는 업무로직을 처리한다.
- 업무로직을 처리하면 데이터를 요청객체에 담아 프론트 컨트롤러로 보낸다.
- 프론트컨트롤러는 적절한 JSP로 요청객체를 이동시킨다. 왜 가능하냐면 내부이동에서는 요청객체를 공유하기 때문이다.
- 이제 JSP에서는 요청객체에서 데이터 꺼내기, 디자인만 하면 된다.
앞서 말했지만 모델에서 뷰로 바로 데이터가 가는 게 아니다. 모델은 DB를 다루고, 뷰는 DB에서 데이터를 꺼내 쓰는 거임. 서로의 존재를 몰라야 한다.
장점
- 디자인과 로직 요소가 분리된다. (협업에 용이하다.)
- 유지보수에 용이하다.
- JSP페이지에서 <% %> <%= %> 이런 거 안 써도 된다.
단점
- 초기 개발할 때 시간과 복잡도가 올라간다.
- 구조가 복잡해진다.
직접 해보니까 구조는 복잡해지지만 페이지 각각은 복잡도가 확연히 줄었다는 걸 느꼈다. 구조도 하다 보면 별로 복잡하다고 안 느낄 듯.
~ 비교 ~

모댈2 / 모델1 캡처하니까 잘 안 보이네요 ... 왼쪽은 MODEL2, 오른쪽은 MODEL1 방식임.
일단 모델1에 있던 수많은 황금빛 <% %> <%= %>들이 사라짐. for문 dao 이런 것도 사라짐.
${ } 이걸 EL표현식이라고 하던데, 잘 연결된 C와 M만 있다면 V에서는 ${ }와 원하는 것의 name을 통해 뭐든(?) 얻을 수 있다. 이걸 보면 확실히 페이지 자체는 간결해졌죠?
하지만 새로운 방식 적응 / 아직 스프링 사용 전이라 FrontController 만들어 사용 / Controller, Model, View 분업체계에 익숙해져야 함 / 스프링 혹은 다른 툴 배우기 등의 또다른 '복잡함'도 분명 있다고 생각함.
그래도 많이 기대가 됩니다 ... 이 방식으로는 또 어떤 걸 어떤 방식으로 만들 수 있을지! 분명 파이널프젝 시작하면 세미프젝과 비슷한 경험을 한 번을 할텐데, 그 땐 어떤 다른 방식으로 개발하고 구현하고 해결하게 될 지가 궁금합니당 ㅎㅎ.
감사합니다죤하루되세요피드백환영
'PROGRAMMING > model2' 카테고리의 다른 글
[ EL, JSTL ] (0) 2022.07.04