ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [웹개발 기술면접] 모델1, 모델2와 MVC 패턴 알아보기
    취업준비/기술면접 2022. 9. 13. 12:21

     

    스프링을 시작하면서 MVC 패턴에 대해 이해하는데 시간을 많이 투자했다. 개념을 보고 또보고 손으로 적어보니 조금씩 정리가되는 느낌이었다. 취준을 본격적으로 시작하면서 다시 한 번 개념들을 적어보며 정리해보려고 한다. 

     

    모델 1 구조

     

     

    모델 1은 뷰와 로직을 모두 jsp 하나에서 처리하는 구조를 말한다.즉) JSP 페이지 내에 로직 처리를 위한 자바 코드가 출력을 위한 코드와 함께 섞여 삽입된다. 브라우저에서 요청이 들어오면 JSP 페이지는 자신이 직접 자바빈이나 따로 작성한 서비스 클래스를 이용해 작업을 처리하고, 그 처리한 정보를 클라이언트에 출력한다. 

     

     

    장점 단점
    - 구조가 단순하여 익히기 쉽다. - 출력을 위한 뷰 코드와 로직을 처리하기 위한 자바 코드가 함께 섞이기 때문에 JSP 코드 자체가 복잡해진다.
    - 코드가 복잡해져 유지보수가 어렵다. 

     

     

    모델 2 구조

     

     

    모델2는 모든 처리를 JSP 페이지 하나가 담당하는 것과 달리 JSP 페이지와 서블릿, 그리고 로직을 위한 클래스가 나뉘어 브라우저 요청을 처리한다. 즉) 요청이 들어오면 요청에 대한 로직 처리는 이를 처리한 모델(Model)인 서비스 클래스 혹은 자바빈이 담당하고, 요청 결과는 유저에게 결과를 보여줄 뷰(view)단인 JSP에 출력되며, 이를 위한 모든 흐름 제어는 컨트롤러인 서블릿에서 담당한다. 

     

     

     

    모델 1 vs 모델 2

     

     

    모델 1과 모델 2 방식을 비교해보자면 아래 표와 같다. 모델 2는 규모가 큰 프로젝트나 업데이트가 빈번한 프로젝트에는 용이할 수 있다. 하지만 규모가 크지 않고 업데이트가 적은 프로젝트일 경우 복잡한 형태로 작업량이 늘어나는 것보다 모델 1을 사용해서 개발하는 것이 나을 수 있다. 

     

      모델1 모델2
    컨트롤러와 뷰의 분리 여부 통합 ( JSP 파일 ) 분리 (JSP, Servlet)
    장점  쉽고 빠른 개발 디자이너/ 개발자 분업 유리
    유지보수 유리
    단점 유지보수가 어려움 설계가 어려움, 개발 난이도가 높음

     

     

     

    MVC 패턴

     

     

    MVC 패턴은 모델(Model), 뷰(View), 컨트롤러(Controller) 세게의 컴포넌트로 이루어져 있으며, 각 컴포넌트는 고유한 역할을 수행한다. 화면의 변경 = 뷰 , 데이터나 비즈니스 요건 변경 = 모델, 뷰와 모델 변경에 따른 일부 컨트롤러 변경으로 나눌 수 있다. 즉) MVC 패턴은 로직과 화면을 분리하는 '모델 2' 라는 방식으로 처리되는 구조라는 걸 알 수 있다. 

     

     

     

     

     

     

    MVC 패턴과 모델 2

     

    MVC 패턴

     

    MVC 패턴 모델 2  설명
    Model 서비스 클래스 or 자바빈 비즈니스 로직을 처리하는 모든 것들이 모델에 속한다. 컨트롤러로부터 특정 로직에 대한 처리 요청(ex. 로그인, 글쓰기 ,, )이 들어오면 이를 수행하고 수행 결과를 컨트롤러에 반환한다. 필요한 정보는 request 객체나 session 객체에 저장하기도 한다.
    View JSP 페이지 클라이언트에 출력되는 화면을 말한다. 모델 1과 달리 로직 처리를 위한 코드가 내포되어 있지 않다. 요청 결과의 출력 뿐만 아니라 컨트롤러에 요청을 보내는 용도로도 사용된다. request나 session 객체에 저장된 정보를 토대로 화면을 출력한다
    Controller  서블릿 MVC 패턴과 Model2의 모든 흐름 제어를 맡는다. 브라우져로부터 요청이 들어오면, 어떤 요청인지 분석하여  이 요청을 처리하기 위한 모델을 사용하여 처리한다. 사용한 모델로부터 처리 결과를 받으며 추가적으로 처리하거나 가공해야 할 정보가 있으면 처리 후 request 객체나 session 객체에 저장하고, 뷰(JSP 페이지)를 선택하여 forward나 redirect하여 클라이언트에 출력한다. 

     

     

     

     

    스프링 MVC 패턴

     

    스프링 MVC 패턴 구조

     

     

    위의 MVC 패턴에서 설명했던 각각의 역할을 스프링 MVC 패턴에 적용해 기능과 동작 과정에 대해 정리해보자면 아래와  같다.

     

    1.Client로부터 요청이 들어오면 DispatcherServlet이 호출된다.
    2.DispatcherServlet은 받은 요청을 HandlerMapping에 던져준다. 요청받은 URL을 분석하여 HandlerMapping 적합한 Controller를 선택하여 반환한다.
    3.DispatcherServlet은 다음으로 HandlerAdapter를 호출한다. HandlerApdater는 해당하는 Controller 중 요청한 URL에 맞는 적합한 Method를 찾아준다.
    4.ControllerBusiness Logic을 처리하고, 해당하는 결과를 View에 전달할 객체 Model에 저장한다.
    5.ControllerView nameDispatcherServlet에게 리턴한다.
    6.DispatcherServletViewResolver를 호출하여 Controller가 리턴한 view name을 기반으로 적합한 view를 찾아준다.
    7.DispatcherServletview 객체에 처리 결과를 넘겨 최종 결과를 보여주도록 요청한다.
    8.View 객체는 해당하는 View를 호출하여, ViewModel 객체에서 화면 표시에 필요한 객체를 가져와 화면 표시를 처리하고 client에게 넘겨준다.
     
     

     

     

     

     

     

    참고 : https://hsp1116.tistory.com/9

    반응형

    댓글

Designed by Tistory.