<< 학습 목표 >>

1. MVC 디자인 패턴에 대해서 설명할 수 있다.


웹 프로그램은 주로 MVC 디자인 패턴을 적용해 개발함

요즘은 Servlet/JSP 를 배우는 단계에서 MVC 디자인 패턴에 대해서 배우므로 알고 있겠지만 혹시 모를 분들을 위해 설명하자면

 

MVC 디자인 패턴

 -> M : Model

 -> V : View

 -> C : Controller

의 약자임


프로젝트를 개발할 때 소스 파일을 굉장히 많이 만들게 됨

또한 소스 파일 내 소스 코드가 굉장히 길고 다양한 코드들이 한 곳에 섞이는데 많은 소스파일을 또 소스 파일 내 많고 다양한 코드를 구분하지 않는 다면 프로젝트 내 코드를 수정해야할 때 굉장히 어려워짐

 

예를 들어 옷가게에서 옷을 진열 할 때 옷의 종류나 용도, 계절에 상관 없이 마구 잡이로 진열해 둔다면 손님, 점원이 어떤 옷을 찾기가 굉장히 힘들 것

그래서 옷의 종류나 용도, 계절에 맞게 진열해둬 손님도 점원도 옷을 찾기 수월하게 함

 

마찬가지로 소스 코드도 역할별로 분리를 하지 않고 한 곳에 모아두면 개발자가 소스 코드를 보기에, 수정하기에 굉장히 힘듬

이를 위해서 "소스 파일 내 소스 코드를 역할별로 분리를 해두자" 가 MVC 디자인 패턴임

자바는 소스 파일이 곧 클래스이므로 "클래스 내 소스 코드를 역할별로 분리를 해두자" 가 됨

 

M은 DB와 관련된 코드를 갖고 있는 클래스를 지칭하는 용어

  M의 또 다른 말로는 DTO와 DAO가 있음

  DTO와 DAO는 M을 더 세세하게 분류한 것임

  DTO는 보통 테이블이 갖고 있는 칼럼을 멤버 변수로 갖고 있는 클래스를 뜻함

  DAO는 테이블에 INSERT, UPDATE, SELECT, DELETE 등의 쿼리를 보내는 클래스를 뜻함

 

V는 사용자가 보는 웹 페이지를 지칭하는 용어

  HTML, JSP 등이 V임

 

C는 클라이언트의 요청을 받을 수 있는 클래스를 지칭하는 용어

 

여기에 S도 있는데 S는 상황에 따라서 없을 수도 있기 때문에 용어에서 빼고 얘기함

S는 Service 로 클라이언트의 요청을 처리할 코드를 갖고 있는 클래스를 지칭하는 용어


예를 들어 우리가 다음과 같은 로그인 페이지를 만들었다고 하자

 

이 로그인 페이지가 사용자에게 보이는 웹 페이지이므로 V 라고 부름

 

M과 C는 눈에 보이지 않으므로 흐름도로 나타내보자

 

로그인 페이지에서 아이디, 비밀번호를 입력하고 [ 로그인 ] 버튼을 누르면 서버로 로그인 요청을 보내는데 이 요청을 C가 받음

요청을 받은 C는 파라미터가 있다면 파라미터를 꺼내고 /필요한 파라미터를 보냈는지, 보냈다면 올바른 형태로 보냈는지 등을 확인/ 함

그 다음 C는 로그인 요청을 처리하기 위해 DAO를 생성하고 DAO를 통해 DB로 쿼리를 보냄

DB는 쿼리 실행 결과를 DAO로 전달하고 쿼리 실행 결과를 받은 DAO는 결과를 가공해야한다면 결과를 가공한 후 결과를 반환함

로그인 처리 결과를 반환 받은 C는 처리 결과에 따라 적절한 후처리를 함

로그인의 후처리라고 한다면 로그인에 성공했을 경우 세션에 로그인 정보를 저장하는게 됨

이렇게 적절한 후처리 후에 요청했던 클라이언트에게 로그인 요청 결과를 전달함

 

이 과정에서 C가 DAO를 직접 호출하지 않고 S(Service)를 호출한 후 S에서 DAO를 호출하는 경우도 있음

또 C, S, DAO에서 DTO를 사용해 필요한 데이터를 주고 받을 수도 있음

 

말로만 들으면 어렵지만 Servlet, JSP 를 배우고 난 후 프로젝트를 했을 때 이미 MVC를 적용한 프로젝트를 진행했을 것임

또한 우리가 앞으로 이러한 구조로 실습을 할 것이기 때문에 혹시 처음 듣는다고해도 걱정할 필요는 없음

 

728x90
LIST