반응형

@notepad_jj2

츄르사려고 코딩하는집사입니다.


스프링(Spring) 프레임워크(Framework)로 웹개발을 진행할 때, MVC 패턴을 기본적으로 적용한다. MVC 패턴으로 분리하여 처리하면, 각 역할들이 따로 처리하기 때문에 결합도가 낮아져 유지보수에 용이하다.

 

1. MVC(Model, View, Controller) 패턴

MVC(Model, View, Controller) 패턴은 Model, View, Controller의 앞글자를 따서 만든 디자인 패턴이다.

 

아래는 MVC(Model, View, Controller) 패턴 Model 2이다. MVC(Model, View, Controller) 패턴 Model 2는 Model, View, Controller로 분리했기 때문에, 결합도가 낮아져 유지보수에 좋고 확장성이 좋다. 하지만, 개발해야 하는 시간이 늘어난다는 단점이 있다.

 

 

MVC(Model, View, Controller) 패턴의 흐름은 아래와 같다.

 

1) Client의 Request를 Controller가 받는다.

2) Request를 받은 Controller는 비즈니스 로직(Business Logic)과 서비스(Service)를 처리 한 후에, Model에 담는다.

3) 처리 결과를 담은 Model을 가지고 Client에게 보여주는 View를 제어하여 Client에게 보여준다.

 

2. MVC(Model, View, Controller) 패턴의 구성

MVC(Model, View, Controller) 패턴은 Model, View, Controller 총 3가지로 구성되어 있다.

 

1) Model

Model은 Controller에서 처리한 비즈니스 로직(Business Logic)과 서비스(Service) 처리 결과 데이터를 저장하는 역할을 한다. 즉, DB와 연동하여 Client가 Request한 데이터를 DB에 저장하거나 출력하는 데이터를 저장하는 역할을 한다. 그래서, Service 클래스에 해당한다.

 

2) View

Veiw는 처리 결과 데이터를 저장하고 있는 Model 데이터를 기반으로 Client에게 시각적으로 보여준다. View 단은 우리가 흔히 보여주고 있는 .html이나 .jsp, .css, .js 등의 파일들을 말한다.

 

3) Controller

Controller는 Client의 Request를 받는 곳으로, Client가 접근한 URL에 따라 Request를 파악하여 URL에 맞는 Method를 호출하고, 비즈니스 로직(Business Logic)과 서비스(Service)를 처리한다. 이 처리된 데이터는 Model에 저장하여 View에 Model을 준다.

 

4. 스프링 프레임워크(Spring Framework) MVC(Model, View, Controller) 패턴 흐름도

 

1) MVC(Model, View, Controller) 패턴 구성

 

i) Client

  • 웹페이지 사용자

 

ii) DispatcherServlet

  • DispatcherServlet은 Front Controller라고도 부른다.
  • Client의 모든 Request를 받아 제어한다.
  • Controller에 Request를 전달하고 Controller가 반환한 결과값을 View에 전달하여 응답
  • web.xml에 정의되어 있으며, servlet-context.xml 설정 파일을 읽어 구동

 

iii) HandlerMapping

  • Client의 Request URL에 매핑되는 Controller를 찾아 DispatcherServelt에 반환
  • 그래서, @Controller 어노테이션이 적용된 객체에서 @RequestMapping 어노테이션을 사용해 Request를 처리할 Controller를 탐색

 

iv) HandlerAdapter

  • HandlerAdapter를 호출하여 HandlerMapping을 통해 받은 Controller에 맞는 Method를 탐색

 

v) Controller

  • Client의 Request를 처리한 후, 비즈니스 로직(Business Logic)과 서비스(Service)를 처리하여 View에 전달할 객체를 Model에 저장
  • GET, POST 등의 전송 방식에 대한 처리를 어노테이션으로 처리

 

vi) View Name

  • Controller의 Request 처리 후, View에 해당하는 View Name을 저장하여 HandlerAdapter에 리턴.(이 HandlerAdapter는 다시 Dispatcher Servlet에 리턴)

 

vii) Model

  • Controller에서 비즈니스 로직(Business Logic)과 서비스(Service)를 처리 후 View에 전달할 객체를 저장하는 곳

 

viii) View Resolver

  • Controller가 반환한 View Name을 기반으로 View Name에 맞는 VIew를 찾아 Dispatcher Servlet에 리턴

 

ix) View

  • Dispatcher Servlet이 전달한 View를 호출하고, Model 객체에서 View에 필요한 객체를 가져와 Client에게 Response

 

5. MVC(Model, View, Controller) 패턴 흐름 설명

① Client에서 Request가 들어오면 Dispatcher Servlet(Front Controller)가 호출된다.

 

② ①번에서 받은 Request를 Handler Mapping에 전달한다. Handler Mapping은 Client의 Request URL에 맞는 Controller를 찾아 다시 DispatcherServlet(Front Controller)에 반환한다.

 

③ Handler Adapter를 호출하고, ②번에서 반환받은 Controller에 적합한 Method를 찾는다.

 

④ Method를 실행하여 비즈니스 로직(Business Logic)과 서비스(Service)를 처리하고, 그 결과를 Model에 저장한다.

 

⑤ 그 결과에 맞는 View Name을 DispatcherServlet(Front Controller)에 반환한다.

 

⑥ ViewResolver를 호출하여 리턴 받은 View Name을 기반으로 적합한 View를 찾아 리턴한다.

 

⑦ View 객체에 리턴받은 결과를 보여주도록 요청한다.

 

⑧ 해당하는 View를 호출하고, Model 객체에 저장된 결과를 화면에 뿌리며 Client에게 Response한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기