Skip to content

Latest commit

 

History

History
95 lines (64 loc) · 5.48 KB

readme.md

File metadata and controls

95 lines (64 loc) · 5.48 KB

Web Application

[ 2022-08-19 ]

목차


  • MVC

    MVC란 전에 한번 살펴 보았듯 Model, View, Controller의 약자 이다. MVC패턴은 디자인패턴 중 하나인데, 여기서 말하는 디자인 패턴이란, 소프트웨어 설계와 관련된 디자인 패턴으로, 소프트웨어 공학에서의 ‘흔히 사용되는’ 설계 패턴을 의미한다. 쉽게이야기 하자면 협업과 유지보수가 더 나은 코드 구성법으로 프로그래밍 설계하는 설계 패턴을 이야기한다는 것이다. 그 설계 패턴중에 하나로 MVC패턴이 있는 것인데, 이름에서 알 수 있듯이 MVC는 크게 Model과 View그리고 Controller로 구성해 client와 server의 로직을 분리하여 server에서의 수정이 client의 화면에서 영향이 없도록 설계하는 것을 목적으로 한다.

    다시 한번 Model과 View, Controller를 정리하고 가자면

    • View

      레이아웃과 화면을 처리한다. 애플리케이션의 데이터를 보여주는 방식을 정의하고 결과 출력을 담당하는 별도의 클래스 및 패키지이다.
      
    • Model

      애플리케이션의 정보, 데이타를 나타내고 이러한 DATA, 정보들의 가공을 책임지는 컴포넌트를 말한다.  
      
    • Controller

      등록, 조회 등 어떤 액션을 수행할지 분기, 결정을 담당하여 처리하는 별도의 클래스 및 패키지를 말한다.  
      

    이러한 MVC 패턴에는 두가지 방식이 있는데,
    사람들은 이를 MVC1 패턴과 MVC2 패턴으로 나눠서 구별하고 있다.

  • MVC1

    MVC1 패턴은 JSP를 이용한 단순한 모델이다.

    - 웹 브라우저에서 요청을 한다.
    - 요청을 JSP가 받아서 자바빈이나 서비스 클래스를 사용해서 웹 브라우저가 요청한 작업을 처리한다.
    - 결과를 클라이언트에게 응답한다.
    

    라는 로직을 가지고 있다.

    image url

    JSP에서는 비즈니스 로직을 처리하기 위한 코드와 결과를 출력하는 코드가 섞이게 된다. 
    따라서 클라이언트의 요청을 받은 JSP에서 요청을 처리하고 출력까지 하게 된다.
    그리고 글을 게시하고 삭제하는 등의 CRUD작업들은 자바빈으로 생성하여 수행하게 된다.
    그런 역할을 하는 객체를 DAO라고 한다.

    • DAO

      DAO(Data Access Object)는 데이터 접근 객체로, DB의 CRUD를 목적으로 하는 객체이다. 
      하나의 커넥션을 통해서 객체를 생성하고 외부에서는 인터페이스를 통해서 접근하는 역할만하여, DB의 세부 내용을 노출시키지 않는다.
      
  • MVC2

    MVC2 패턴에서는 MVC1 패턴과 달리 뷰(View)와 컨트롤러(Controller)그리고 서비스(service)가 나뉘어 있다.

    -웹 브라우저에서 요청한다.
    -요청을 서블릿이 받아서 비즈니스 로직에 알맞는 모델을 선택하여 로직 클래스를 통해 요청을 처리한다.
    -포워딩을 통해 요청 흐름을 받은 JSP페이지는 결과 화면을 생성한다.
    -결과를 클라이언트에게 응답한다.
    

    라는 로직을 가지고 있다.

    image url

    여기서 뷰는 JSP로 작성되며, 컨트롤러는 서블릿(Servlet)으로 작성되어 요청을 받아들이고 알맞게 처리한 후 그 결과를 보여줄 JSP 페이지로 포워딩한다.
    MVC2 패턴의 가장 큰 특징은 웹 브라우저의 모든 요청을 단일 진입점(서블릿)에서 처리한다는 것이다.
    서블릿은 웹 브라우저의 요청을 구분하여 알맞는 모델을 찾아 요청을 처리한다.

    MVC2 패턴은 최근 거의 표준처럼 사용되는 패턴이다. 
    규모가 큰 프로젝트를 하기에 적합하고, 각 기능이 확실하게 분리되어 있어서 유지보수에 상당한 이점을 보인다.
    하지만 소규모 프로젝트를 진행함에 있어서 과도하게 구조가 복잡해질 수 있다는 단점이 있다.
    최근에는 프레임워크를 통해 이러한 단점은 보완되었다고 할 수 있다.

  • MVC 패턴을 사용하는 이유

    한 마디로 말하자면, 유지보수에서 상당히 유리해진다는 것이다.
    MVC패턴으로 잘 짜여진 웹 어플리케이션은 사용자에게 보여지는 부분(VIew)과 흐름 제어를 담당하는 부분(Controller),
    비즈니스 로직을 수행하는 부분(Model)이 독립적으로 나눠지 있기 때문에 특정 부분을 수정하고자 하면, 그 부분만 열어서 수정하기에 상당히 용이하다.
    만약에 하나의 JSP페이지에 비즈니스 모델과 컨트롤러, 뷰가 혼재한다면, 어떤 부분이 어떤 역할을 하는지도 정확하게 구분하기가 어려울 것이다.
    이는 덩치가 큰 어플리케이션일수록 더 심각해질 것이다.