-
MVC Model1 과 MVC Model2Web Programming/Spring4.0 2020. 9. 9. 12:29반응형
MVC Model : Model + View + Controller
웹 애플리케이션 개발에서 각 기능에 따라 분리하여 개발하는 웹 애플리케이션 모델
MVC Model 1
View와 Controller를 모두 동일한 JSP에서 수행하도록 개발하는 방식이다.
Model 즉, 데이터베이스와의 연동을 가능하게 해주는 DAO(Database Access Object) 클래스 기능을 제외한
모든 결과값 출력, 화면 구현까지 모두 JSP 내부에서 이루어진다.
Model 1은 구조가 단순하여 개발자가 쉽게 접근할 수 있으나 웹 애플리케이션의 복잡도가 증가할수록 문제가 발생한다.
- 유지보수 문제 : 유지보수 시에 View 기능과 Controller 기능이 섞여 오류 발생 가능성↑
- 재사용성 문제 : 결합도가 높아 다른 애플리케이션으로의 재사용 가능성↓
- 분업화 문제 : View를 구현하는 Front-End와 Controller를 구현하는 Back-End 분업 효율성↓
이러한 이유로 인해 MVC Model 2가 등장하였다.
MVC Model 2
MVC Model 2는 웹 애플리케이션의 기능을 세분화한다.
View 기능은 HTML 기반인 JSP에서, Controller 기능은 Java 기반인 Servlet에서 구현하고
Model 기능은 DAO 클래스를 통해 데이터베이스 연동을 구현한다.
게시판을 예시로 들었을 때 구조의 흐름은 다음과 같다.
- 브라우저에서 특정 URL을 호출한다.
- BoardController 서블릿이 요청을 받아 BoardDAO의 listPage()를 호출한다.
- BoardDAO의 listPage()에서 SQL문으로 회원 정보를 조회한다.
- 조회된 정보를 VO(Value Object) 혹은 HashMap 설정을 통해 반환한다.
- BoardController가 받은 정보를 listPage.jsp로 전송한다.
- listPage.jsp가 결과를 클라이언트의 화면에 출력한다.
이후 Spring 개발에서 다중 DB 접근 시 DAO의 재사용성을 위하여 Model 기능에 Service를 추가하기도 한다.
(이 부분에 대해서는 추후에 상세하게 공부해보자.)
이렇게 MVC Model 2는 기능적으로 세분화 된 구조를 이루고 있다.
Model 1에 비해서 복잡한 구조를 지니고 있어 접근하기가 쉽지 않으나 그만큼 Model 1의 단점을 보완한다.
- 편리한 유지보수 : 오류 발생 확률이 적고 오류가 발생하더라도 디버깅이 용이
- 높은 재사용성 : 각 기능이 모듈화 되어있어 재사용을 통해 빠른 개발 가능
- 분업화 : Front-End와 Back-End이 각자의 개발을 통해 애플리케이션 완성
참고 : medium.com/@hleee/%EB%AA%A8%EB%8D%B8-2-%EB%B0%A9%EC%8B%9D-%EA%B0%9C%EB%B0%9C-df8da43d1ff3
반응형'Web Programming > Spring4.0' 카테고리의 다른 글
Spring Framework Annotation 정리 #1 (0) 2020.09.21 어노테이션(Annotation) 이란? (0) 2020.09.18 web.xml 과 servlet-context.xml 과 root-context.xml (0) 2020.09.09 서블릿(Servlet) 이란? (0) 2020.09.09 프레임워크(FrameWork) 란? (0) 2020.09.08