- MVC 패턴이란~
Model, View, Controller 의 합성어로 소프트웨어 공학에서 사용되는 소프트웨어 디지인 패턴입니다.
Model - 어플리케이션 로직을 담당하는 부분으로 데이터베이스와의 로직을 담당하는 부분을 말합니다.(dao, service)
View - client에게 보여주는 부분이며, Model에서 생산된 Data를 client에게 제공하는 역할을 담당합니다.(JSP)
Controller - 사용자의 요청을 받아서 요청을 해당하는 비즈니스 로직을 수행하도록 하고, 작업 결과에 따라 응답을 결정하는 역할을 합니다. Model과
View사이의 데이터 전달 역할을 합니다.
MVC 패턴에는 모델1방식과 모델2방식이 있는데 특히 모델2구조 기반의 MVC패턴 구현은 JSP개발자라면 무조건으로 알고 넘어가야하는 개발 방식입니다.
JSP 웹페이지는 크게 모델1 방식과 모델2 방식으로 나뉩니다. 간단하게 생각하면 JSP에서 출력과 로직을 전부 처리하느냐 JSP에서 출력만 처리하느냐로
분류할 수 있습니다.
- 모델 1 방식
모델 1 구조는 앞의 설명과 같이 JSP가 전부 다 처리합니다. 그렇기 때문에 로직이 길며 웹페이지 로딩시간도 코드가 많아질수록 길어지게 됩니다. 웹브라우저의
사용자의 요청을 받은 JSP는 자바빈이나 서비스 클래스를 사용하여 웹브라우저가 요청한 작업을 처리하고 그 결과를 출력해줍니다~
모델 1 방식의 장점
- 개발 속도가 빠릅니다.
- 구조가 간단하며 익히기가 쉽습니다.
- 개발자의 스킬이 낮아도 배우기 쉽고 빠르게 적용이 가능합니다.
- 중소형 프로젝트에 적합합니다.
모델 2 방식의 단점
- 표현 코드(디자인)과 비즈니스 로직이 하나의 JSP페이지에 표현되므로 코드가 복잡해집니다.
- 하나의 코드에 디자인코드와 로직코드가 혼재하게 되어 개발자와 디자이너의 분리 작업이 힘들어집니다.
- JSP파일이 복잡해짐으로 유지보수가 어려워집니다.
- 비즈니스 로직의 재사용성이 떨어집니다.
- 모델 2 방식
모델 2 구조는 모델 1구조와 달리 웹브라우저의 사용자의 요청을 서블릿이 받게 됩니다. 서블릿은 웹브라우저의 요청을 받아 View로 보여줄것인지 Model로
보내줄것인지 정하여 전송해줍니다. 여기서 View페이지는 사용자에게 보여주는 역할만 담당하고 실질적인 기능의 부분을 Model에서 담당합니다. 모델 2 방식의
경우 실제로 보여지는 HTML과 JAVA소스를 분리해놓았기 때문에 모델1 방식에 비해 로직과 개발을 확장시키거나 유지보수하기 쉽습니다.(코딩을 더 깔쌈하게
할 수 있습니다.)
모델 2 방식의 장점
- 출력을 위한 뷰 코드와 로직 처리를 위한 자바 코드를 분리하기 때문에 코드가 덜 복잡해집니다.
- 뷰, 로직에 대한 명확한 역할 분담이 가능해집니다.
- UI 레이어(화면 구현)을 단순화 시킴으로서 디지이너의 작업을 수월하게 합니다.
- 기능에 따라 분리되어 있어 유지보수가 쉬워집니다.
- 비즈니스 로직의 재사용성이 높아지고 확장성이 용이합니다.
모델 2 방식의 단점
- 구조가 복잡해져 기술 습득이 어렵고 잡업량이 많아집니다.
- 자바 코드에 비해 비교적 높은 이해도가 요구됩니다.
- 구조 설계를 위한 시간이 많이 소요됩니다.(프로젝트 초반 개발속도의 저하 초래..)
MVC패턴은 웹 개발자라고 하면 반드시 알아야 하는 패턴입니다. 또 MVC패턴은 스윙과 같은 컴포넌트 뿐만 아니라 웹 어플리케이션 개발 영역에서도 보편적으로
사용하고 있습니다. 특히 많이 봐봐서 알겠지만 프레임워크들을 빼고서는 JSP MVC패턴만큼 중요하면서도 복잡한 개념은 없다고 보면 됩니다.
jsp MVC패턴은 회원가입, 게시판(답변형 게시판), 업로드 등등에서 많이 볼 수 있습니다.
'IT 관련,, > 중요문자 적어두기' 카테고리의 다른 글
[웹(앱)/Android]MVP 패턴이란~~ (0) | 2018.09.25 |
---|---|
[웹/SPRING]스프링 MVC 패턴이란 무엇인가~ (0) | 2018.09.22 |
[웹]HTML 중요한 태그들,, (0) | 2018.08.21 |
[웹/SPRING]JSON 형식이란~ (0) | 2018.08.13 |
[웹/SPRING]Ajax란~ (0) | 2018.08.12 |