[Spring] model1, model2, MVC 패턴

2023. 9. 7. 22:04학부 강의/웹프로그래밍 (Spring)

1. model1과 model2

 

model1과 model2는 웹 애플리케이션을 구현하기 위한 프로그램 설계 방법이다.

 

둘 다 MVC패턴을 웹프로그래밍에 적용한 것이다.

 


가. model1 아키텍처

 

 

JSP와 JavaBeans를 이용해서 웹 애플리케이션을 개발하는 방법이다.

 

많은 파일을 만들지 않고 HTML 기반의 JSP와 자바빈스만을 이용한다.

 

  • 개발 속도가 빠르다.
  • 유지 보수가 어렵다. 컨트롤러와 뷰 코드가 JSP에 섞여있음.
  • 잘 사용하지 않는다.

 


나. model2 아키텍처

 

 

model1보다 발전한 방식.

 

각각의 기능을 모듈화하여 기능에 따른 코드를 분리한다.

 

서블릿, JSP, JavaBeans를 이용한다.

 

  • 유지 보수에 유리
  • 클라이언트의 요청을 처리, 제어 → 컨트롤러
  • 클라이언트에 응답하기 → 뷰
  • 비즈니스 로직 처리, 데이터베이스 사용 → 모델
  • MVC패턴

 


2. MVC 패턴

 

 

가. 모델, 뷰, 컨트롤러에 대한 설명.

 

  • 모델
    : 데이터베이스와 밀접한 관계를 갖고 비즈니스 로직을 담당함.
    : 데이터(data) 가공을 책임지는 컴포넌트(component).

  • : 사용자에게 보여지는 부분, 즉 유저 인터페이스(User interface)를 의미.
    : 모델에게 전달받은 데이터를 별도로 저장하지 않아야 한다.
  • 컨트롤러
    : 모델과 뷰 사이를 이어주는 브리지(bridge) 역할.
    : 모델에 명령을 보냄으로써 모델의 상태를 변경할 수 있다.
    : 모델과 뷰에 대해 알고 있으며 모델이나 뷰로부터 변경 내용을 통지받으면 이를 각 구성 요소에게 통지.
    : 사용자가 어플리케이션을 조작하여 발생하는 변경 이벤트들을 처리하는 역할을 수행.

 

모델과 뷰는 직접 연결되지 않는다.

 

최대한 분리시켜야 한다. (모듈화, 유지 보수)

 

출처 : https://ko.wikipedia.org/wiki/모델-뷰-컨트롤러


나. MVC 패턴의 장점

 

  • 모듈화를 통한 체계적인 개발이 가능하다.
  • 유지 보수가 쉽다.
  • 개발자는 비즈니스 로직에 보다 집중할 수 있다.

 


3. 스프링 MVC의 흐름

 

 

스프링 MVC는 스프링을 기반으로 하는 하위 프레임워크다.

 

MVC 패턴을 적용해서 쉽게 웹 애플리케이션을 개발할 수 있도록 고안된 프레임워크다.

 


1단계

 

클라이언트의 요청이 들어오면 DispatcherServlet, HandlerMapping, HandlerAdapter를 이용해 클라이언트 요청에 적합한 컨트롤러를 찾고 해당 컨트롤러의 메서드를 실행한다.

 

 

  • (1) 클리라이언트의 요청 → DispatcherServlet가 요청을 받음.
  • (2) DispatcherServlet은 클라이언트의 요청을 분석해서 가장 적합한 컨트롤러를 찾음. 이때 DispatcherServlet이 직접 찾지는 않고 HandlerMapping에 위임한다.
  • (3) HandlerMapping 객체는 요청에 적합한 컨트롤러 객체를 반환한다.
  • (4) 이때 DispatcherServletHandlerAdpater에게 컨트롤러 메서드 호출을 위임한다.
  • (5) HandlerAdpater은 반환된 컨트롤러 객체를 호출한다.
  • (6)(7) 컨트롤러에서 요청을 처리 후 HandlerAdpater에 결과를 반환한다. 이때 ModelAndView 객체를 사용한다. ModelAndView는 처리 결과의 데이터와 view 정보를 가지고 있다.

 


2단계

 

DispatcherServletHandlerAdapter로부터 처리 결과를 받으면 클라이언트에 응답하기 위해서 를 찾는 단계.

 

 

  • (8) DispatcherServletViewResolver를 이용해서 처리 결과에 적합한 뷰를 찾는다.
  • (9) ViewResolverModelAndView에 저장된 뷰 정보를 이용해서 적합한 뷰를 찾아서 DispatcherServlet로 반환한다.

 


3단계

 

 

  • (10) DispatcherServletViewResolver가 반환한 뷰 정보를 이용해서 뷰 객체를 준비한다.
  • (11) 뷰 객체는 JSP 파일이며, WAS는 클라이언트의 브라우저에 응답 결과를 전달한다.

 

DispatcherServlet, HandlerMapping, HandlerAdpater는 이미 구현되어있다.

 

개발자는 스프링 MVC 프레임워크라는 틀 안에서 컨트롤러와 뷰만을 제작하는 작업에만 집중하면 된다.

 


4. 스프링 프레임 워크

 

  • 스프링 프레임워크
    : 자바 기반의 애플리케이션 개발을 위한 오픈소스 프레임워크.
    : 다양한 분야, 다양한 애플리케이션에 사용됨.
  • 스프링 MVC
    : 스프링 기반의 하위 프레임워크.
    : 웹 애플리케이션 개발에 최적화됨.

 

 

Spring | Home

Cloud Your code, any cloud—we’ve got you covered. Connect and scale your services, whatever your platform.

spring.io

 


가. 스프링 모듈

 

스프링의 대표적인 모듈.

 

 


'학부 강의 > 웹프로그래밍 (Spring)' 카테고리의 다른 글

[Spring] 학사 정보 시스템  (0) 2023.10.07
[Spring] 스프링으로 계산기 만들기  (0) 2023.09.22
[Spring] Maven  (0) 2023.09.14
[Spring] DI, DIP, IoC  (0) 2023.09.09
[Spring] 개발 환경 구축  (0) 2023.09.07