본문 바로가기

JAVA/JSP & Servlet

[펌]JSP 모델1과 모델 2의 비교

1.모델 1과 모델 2의 비교

 

모델1은 JSP 페이지에서 화면을 보여주고, 요청을 하게 되면 JSP페이지에서 직접 Model에 접근하여 처리를 하게 된다. 데이터베이스 연동하는 JSP 페이지를 만들 때 디자인 부분과 데이터베이스와 연동 하는 로직 부분이 모두 같은 페이지에 코딩 했던 것을 기억 할 것이다.

 

이 같이 개발할 경우 개발 시간은 짧아질 수 도 있지만, 나중에 유지보수를 하게 될 경우 소스 코드 분석이 어려워지고 또 디자이너가 디자인을 변경할 경우에는 테그 외에 자바 코드를 썩여있기 때문에 해석하는데 문제가 발생하게 될 것이다. 이 문제를 해결하기 위해서 사용되는 방식이 모델2 방식이다.

 

모델2는 디자인 부분과 로직 부분을 나누어서 개발하기 떄문에, 디자이너는 디자인 부분만 프로그래머는 로직 부분만 개발에 열중할 수 있다. 코딩도 모두 JSP페이지에 하는 것이 아닌 각 담당하는 부분의 페이지가 독립적(디자이너는 JSP 페이지, 프로그래머는 Java클래스)으로 존재하므로 각자 개발을 다 끝낸 후에 합치기만 하면된는 장점. 이렇게 개발하면 나중에 유지 보수를 할 경우 디자인을 변경하거나 로직을 변경할 떄 자신이 개발한 부분에만 접근하여 변경할 수 있게 된다. 단, 모델 2의 경우 설계 단계가 까다로우므로 모델 1보다 개발 기간이 더 길다. 규모가 그다지 크지 않은 프로젝트는 모델 1으로 규모가 큰 프로젝트일 경우 모델2로 개발하는 것을 권장 한다. 규모가 작을 경우는 규모가 작은 만큼 유지보수에 걸리는 비용이 덜 들기 때문이다. 모델 1과 모델 2는 각자 장담점이 있으므로 개발하는 프로젝트에 맞추어 개발 방식을 설정 하면 될것이다.

 

2. MVC 패턴의 개요

 

MVC란 Model, View, Controller의 약자이며 이것은 모델 2를 의미하는데, 모델 2는 화면 출력 부분 (디자인부분)을 View로 칭하고, 데이터베이스와 연동하는 부분 등의 로직 부분을 Model이라 칭한다.

Controllr는 이 두 부분을 적절하게 연결시켜주는 역활을 한다. 모델 1은 한 페이지에 Model과 Veiw가 모두 존재하는 형태이다. 즉, 모델 1은 Controller가 존재하는 않는다. Model과 View가 한 곳에 붙어 있으므로 Controller가 존재해 봤자 아무 의미가 없기 때문이다.

 

3. MVC 패턴의 구성 및 흐름

 

MVC는 앞에서 설명했듯이 모델1과 달리 Model,View,Controller 세 부분으로 나누어 개발하는 페턴을 말한다. MVC는 다음과 같은 흐름 가진다.

 

Controller는 중앙에 위치하여 View와 Model사이에 연동을 담당 한다.  MVC로 사이트를 개발하게 되면 초기 진입 점은 당연히 Controller이다. 모델 1의 경우 JSP 페이지를 호출하면 되지만 MVC 페턴은 그렇지 않다. MVC 패턴을 사용할 경우에는 JSP 페이지를 바로 호출하면된다면 오류가 발생하거나, 원하는 페이지가 보이지 않을 것이다.

 

JSP 페이지를 호출한다는 것은 View 페이지를 호출 한다는 것과 같은데 , 이것은 Model(비지니스 로직) 부분의 처리를 하지 않았기 때문에 View 에서 보여줄 내용도 없는 것이다. 반드시 Controller를 호출하여 Model 에서 비지니스 로직을 수행하고 그 결과를 가지고 View에서 보여지게 해야만 한다.

 

보여진 View 페이지에서 또 다른 요청을 할 경우 Controller에게 요청을 하게 되며 Controller는 요청 내용을 받은 후 Model을 호출하여 요청에 해당하는 비즈니스 로직을 수행한다.

 

4. Controller 서블릿

 

Controller는 MVC 패턴에서 View와 Model 을 연결 시켜주는 핵심 요소이다. 이것은 서블릿으로 구성되어 있는데, 그 이유는 초기 진입 점이자 뷰의 모델을 연동하는 역할을 하기 때문이다. Model 의 경우는 일반적인 클래스 파일로 이루어져있으므로 외부에서 직접적인 접근할수가 없다. 그리고 Model은 목적이 비즈니스 로직을 수행하는 것이므로 외부에 접근할 필요가 없기 때문에 서블릿으로 만드는 것은 적합하지 않다.

 

Controller는 요청을 받아서 요청에 해당하는 Model과 View 를 호출하는 역활만 때문에 View처럼 JSP 페이지로 구현할 수도 없다. Controller 는 보여지는 페이지가 아닌 연결시켜주는 통로 역할을 할뿐이다. 여기서 말하고자 하는것은 Controller는 MVC 패턴에서 중심 역할을 한다는 것과 반드시 서블릿으로 이루어여져야 한다는 것이다.  Model과 View 는 각각 비지니스 로직 처리와 화면 출력을 담당하므로 Controller를 통해서 비지니스 로직 처리를 위해 Model을 호출하고 처리가 완료되면 화면 출력을 하기 위해 Model에서 처리한 결과를 View로 전달하는 역할을 하게 된다.

 

5. View(JSP)

 

View는 MVC 패턴 중에 화면에 출력부분 해당. Controller를 통하여 Model에서 처리한 결과를 화면에 출력할 때 사용한다. View는 단순히 결과를 화면에 보여주는 정도만 알면된다.

 

6. Model (JavaBean)

 

Model 은 MVC 패턴에서 실제로 비지니스 로직을 처리 하는 부분이다.  Model은 비지니스 로직을 처리하여 결과를 Controller 를 통해 View 페이지로 전달하게 된다. 데이터베이스 작업을 할 경우 이 작업을 할 경우 이 작업이 Model 부분에서 이루어지게 된다.