1. 정의
소프트웨어 디자인 패턴 중 Architectural Patten의 하나.
애플리케이션을 크게 세가지 영역으로 구분하고 영역 간의 결합도를 최소화하하기 위해 사용
주로 Web Application에서 사용되는 대표적인 객체 지향 설계
2. 구성
ㄱ. 모델 (Modal) => DAO, DTO
데이터를 담거나 데이터베이스로 데이터를 보내는 작업을 하는 객체
어플 상태를 저장하고 있다가 View에서 요청하면 전송한다.
DTO를 통해 상태의 값을 주고받고, 영속 저장(DB)와의 데이터 통신을 위해 DAO를 사용한다.
모델 상태의 변화가 있을 때에는 Controller와 View에 이를 통보한다.
ㄴ. 뷰 (View) => html, Jsp
모델 중 DTO 데이터를 뿌려준다.
렌더링을 하여 실제 사용자에게 보여지는 부분
View에서 사용자 행위를 Controller에 저장하고, 사용자가 볼 결과물 생성을 위해 모델로부터 정보를 얻어온다.
ㄷ. 컨트롤 (Controll) => Servlet
View에 대한 진입점.
특정 결과에 대해 모델에 명령을 보냄으로서 모델의 상태를 변경한다.
3. 순서
사용자 정보 등록 html 페이지
=> html에서 넘어오는 데이터를 저장하는 DTO 클래스 (.java)
=> 사용자 정보를 관리하는 DBMS의 테이블 생성
=> DTO에서 넘어오는 DB를 실제 DBMS에 저장하는 작업을 처리하는 DAO 클래스 생성
=> 사용자가 html 페이지에 입력한 정보를 DTO에 담아 그것을 DAO 클래스의 관련 메소드에 전송하는 작업을 담당, 그 결과에 따라 서블릿이 이동
=> 성공 / 실패 뷰 페이지 작성
4. 장점
ㄱ. 유연하고 확장하기 쉽다
뷰와 모델간 간섭을 피하고 컨트롤러가 중간 관리를 하는 역할을 하여 간접소통을 통해 좀 더 유연한 구조를 설계 가능
5. 단점
ㄱ. 복잡한 구조로 보일 수 있다
ㄴ. Model과 View의 완벽한 분리가 어렵다
'BackEnd > Java' 카테고리의 다른 글
Jsp :: request.getParameter vs request.getAttribute (0) | 2016.02.16 |
---|---|
Maven :: maven project에서 라이브러리 추가하는 방법 2가지 (0) | 2016.02.10 |
Maven :: Eclipse Luna + SpringFramework 3.2.15 + Maven Project 설치 (0) | 2016.01.22 |
Java :: Servelet (서블릿) (0) | 2016.01.21 |
Java :: JDK와 JRE (0) | 2016.01.20 |