MVC 패턴이란?
Model-View-Controller의 약자로 애플리케이션을 세 가지 역할로 구분한 개발 방법론
모델(Model) : 비즈니스 영역의 로직을 처리
뷰(View) : 비즈니스 영역에 대한 프레젠테이션 (즉, 사용자가 보게 될 결과 화면)을 담당
컨트롤러(Controller) : 사용자의 입력 처리와 흐름 제어를 담당
MVC1 패턴 (MVC1 Pattern)
즉, Controller 영역에 View 영역을 같이 구현하는 방식이며, 사용자의 요청을 JSP가 전부 처리한다.
요청 받은 JSP는 JavaBean Service Class를 사용하여 웹브라우저 사용자가 요청한 작업을 처리하고 그 결과를 출력
Model1 구조의 장단점
장점 | 단점 |
구조가 단순하며 직관적이기 때문에 배우기 쉽다 | 출력을 위한 view(html) 코드와 로직 처리를 위한 java 코드가 섞여 있기 때문에 JSP 코드 자체가 복잡해진다. |
개발 시간이 비교적 짧기 때문에 개발 비용 감소 | JSP 코드에 Back-End(Developer)와 Front-End(Designer)가 혼재되기 때문에 분업이 힘들어진다. |
프로젝트의 규모가 커지게 되면 코드가 복잡해 지므로 유지보수 하기가 어려워진다. | |
확장성(신기술 도입, 프레임워크 등)이 나쁘다. |
MVC2 패턴 (MVC2 Pattern)
MVC2 패턴에서는 MVC1 패턴과 달리 뷰(View)와 컨트롤러(Controller)가 나뉘어 있다.
웹브라우저 사용자의 요청을 서블릿이 받고 서블릿은 해당 요청으로 View로 보여줄 것인지 Model로 보낼 것인지를 판단하여 전송한다. 또한 이 방식의 경우 HTML 소스와 JAVA소스를 분리해놓았기 때문에 모델 1 방식에 비해 확장시키기도 쉽고 유지보수 또한 쉽다.
Model2 | MVC Pattern | 설명 | ||
Service, Dao or Java Beans |
Model | Logic을 처리하는 모든 것 Controller로 부터 넘어온 data를 이용해 이를 수행하고, 그에 대한 결과를 다시 Controller에 return |
||
JSP | View | 모든 화면 처리를 담당. Client의 요청에 대한 결과와 Controller에 요청 보내는 화면도 JSP에서 처리. Logic 처리를 위한 java code는 사라지고 결과 출력을 위한 code만 존재. |
||
Servlet | Controller | Cline의 요청을 분석하여 Logic 처리를 위한 Model단 호출. return 받은 결과 data를 필요에 따라 request, session 등에 저장하고, redirect 또는 forward 방식으로 jsp(view) page를 이용하여 출력한다 |
||
모델(Model)
- 비즈니스 로직을 처리할 수 있는 것이라면 어떤 것이든 상관없음
뷰(View) - JSP
- 사용자에게 최종적으로 보여지는 결과물을 JSP 페이지로 작성. 서블릿으로부터 완벽하게 처리가 완료된 결과물을 받아 JSP페이지로 포워딩하여 결과물 생성
컨트롤러(Controller) - 서블릿
- 사용자의 요청을 받아들이는 컨트롤러는 서블릿으로 작성. 서블릿을 통해 요청받아 그 요청을 처리하기에 알맞은 모델을 선택하여 처리하도록 흐름제어를 한다.
Model2구조의 장단점
장점 | 단점 |
출력을 위한 view코드와 로직 처리를 위한 java 코드가 분리 되었기 때문에 JSP는 Model1에 비해 코드가 복잡하지 않다. | 구조가 복잡하여 초기 진입이 어렵다. |
화면단과 Logic단이 분리 되었기에 분업이 용이해졌다. | 개발 시간의 증가로 개발 비용이 증가. |
기능에 따라 code가 분리 되었기 때문에 유지 보수가 쉬워짐. | |
확장성이 뛰어나다. |
MVC1 패턴과 MVC2 패턴의 차이
뷰(View)와 컨트롤러(Controller)의 분할 여부이다.
MVC1 패턴은 뷰와 컨트롤러가 하나의 JSP 페이지로 작성되는 형태이고,
즉, JSP에서 출력과 로직을 전부 처리
MVC2 패턴은 서블릿으로 요청을 받아 알맞게 처리한 후 JSP 페이지로 포워딩하는 형태로 작동.
즉, JSP에서 출력만 처리
MVC1 | MVC2 | |
장점 | 빠르고 쉽게 개발 가능 | 디자이너와 개발자 분업 가능하며 유지보수 및 확장 쉬움 |
단점 | JSP파일이 너무 방대해지며 Controller와 View가 함께있어 유지보수 어려움 | 설계 어려우며 개발 난이도 높음 |
'✨ Back-end > Servlet' 카테고리의 다른 글
[Servlet] 서블릿 전송방식 (Redirect와 Dispatcher) (0) | 2023.08.11 |
---|---|
[Servlet] HttpServlet, GenericServlet, Servlet 각각의 정의 (0) | 2023.08.08 |
[Servlet] 서블릿 컨테이너 정의 및 역할, HTTP 요청 처리 순서 (0) | 2023.08.08 |
서블릿(Servlet)과 CGI ( Common Gateway Interface ) 차이 (0) | 2023.08.08 |
[Servlet] 세션(Session)과 쿠키(Cookie) (1) | 2023.08.08 |
댓글