개발/기타

[TIL] MVC Pattern Model1, Model2 - (MVC 패턴 모델1, 모델2)

zz132456zz 2022. 3. 28. 22:23
728x90

JSP를 이용하여 구성할 수 있는 Web Application Architecture는 크게 Model1과 Model2로 나뉜다.

 

JSP가 Logic 처리와 view에 대한 처리를 모두 하느냐(Model1), view에 대한 처리만 하느냐(Model2)가 가장 큰 차이점이다.

 


Model1 구조

Model1은 view와 lofic을 JSP 페이지 하나에서 처리하는 구조를 말한다.

client로부터 요청이 들어오면 JSP페이지에서 java beans나 별도의 서비스 클래스를 이용하여 작업을 처리하고 결과를 client에 출력한다.

 

Model1 구조는 간단한 page를 구성하기 위해 과거에 가장 많이 사용되었던 architecture이다.

Model1의 장점

  • 구조가 단순하며 직관적이기 때문에 배우기 쉽다.
  • 개발 시간이 비교적 짧기 때문에 개발 비용이 감소한다.

Model1의 단점

  • 출력을 위한 view 코드와 logic 처리를 위한 java 코드가 섞여 있기 때문에 JSP 코드 자체가 복잡해진다.
  • JSP 코드에 Back-end와 Front-end가 섞여 있기 때문에 분업이 힘들어진다.
  • 프로젝트의 규모가 커지면 코드가 복잡해져서 유지보수하기가 어렵다.
  • 확장성이 나쁘다. (신기술의 도입이나 framework 등)

 


Model2 구조

Model2는 모든 처리를 JSP 페이지에서 하지 않고 client 요청에 대한 처리는 servlet이, logic 처리는 java class(Service, Dao 등)이, client에게 출력하는 response page는 JSP가 담당한다.

 

Model2 구조는 MVC(Model - View - Controller) 패턴을 웹 개발에 도입한 구조이다.

 

Model2 MVC Pattern 설명
Service, Dao Model Logic을 처리하는 모든 것
Controller로 부터 넘어온 data를 이용하여 작업을 수행하고 그 결과를 다시 Controller에게 return해준다.
JSP View 모든 화면 처리를 담당한다.
Logic처리를 위한 java 코드는 없고 결과 출력을 위한 코드만 존재한다.
Servlet Controller client의 요청을 분석하여 적절한 Model단을 호출한다.
Controller에게 return 받은 값들을 request, session 등에 저장하고 jsp 페이지를 이용하여 출력한다.

 

Model2의 장점

  • 출력을 위한 코드와 logic 처리를 위한 코드를 분리했기 때문에 JSP의 코드가 복잡하지 않다.
  • 출력을 위한 코드와 logic 처리를 위한 코드를 분리했기 때문에 분업하기에 더 나아졌다.
  • 기능에 따라 코드가 분리되었기 때문에 유지보수가 쉬워졌다.
  • 확정성이 좋다.

Model2의 단점

  • 구조가 복잡하여 초기 진입이 어렵다.
  • 개발 시간의 증가로 개발 비용이 증가한다.

 

 

그렇다면 Model1의 단점을 보완하기 위해 Model2가 만들어졌다고 해서 현재는 모든 웹사이트를 Model2로 만들고 있을까??

 

- Model2 구조는 Model1 구조의 단점을 보완하긴 했지만 Model1 구조의 장점을 안고 가지는 못했다. 그렇기 때문에 Model1의 장점이 더 중요한 상황이라면 굳이 Model2 구조를 선택하는 것은 개발 시간의 증가로 개발 비용의 증가를 불러올 수 있다. 예를 들어 이벤트성으로 단기간만 사용될 웹사이트 페이지 같은 경우는 굳이 구조를 복잡하고 오랜 시간 공들여 Model2 구조로 만들 필요가 없을 것이다.

 

 

 

 

728x90