반응형

@notepad_jj2

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


1. 스프링(Spring) MVC(Model-View-Controller) 패턴

- MVC 패턴은 Model, View, Controller로 총 3가지 영역으로 분리를 한다.

- MVC 패턴을 사용하는 이유는 유지보수가 용이하다는 장점을 가지고 있고, 컴포넌트 간의 결합성이 낮아 프로그램 수정이 용이하여 확장성이 뛰어나다.

- 즉, 유지보수가 좋고, 확장성이 뛰어나며 로직을 분리하여 작업이 가능하다.

- 하지만, 개발과정이 복잡해 초기 개발속도가 느리고 다소 이해하기 어렵다.

- 스프링(Spring)은 DI나 AOP 기능을 제공하고, Servlet 기반의 MVC Framework를 제공

 

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

1) Model

- 어플리케이션 상태의 캡슐화

- 상태 쿼리에 대한 응답

- 어플리케이션의 기능 표현

- 변경을 View에 통지

- 일반 java 기반

- Service와 Dao를 포함하는 곳인데, 대체적으로 JDBC를 사용했지만, 스프링에서는 스프링 JDBC를 사용하거나 Mybatis를 사용할 수 있음

 

2) View

- 모델을 화면에 시각적으로 표현

- 모델에게 업데이트 요청

- 사용자의 입력을 컨트롤러에 전달

- 컨트롤러가 View를 선택하도록 허용

- 이제 이 부분은 vue.js로 대체할 수 있음

 

3) Controller

- 어플리케이션의 행위 정의

- 사용자 액션을 모델 업데이트와 매핑

- 응답에 대한 view 선택

- 이 Controller에서 하던 일들을 Spring MVC에서 작업할 수 있음

 

3. 스프링(Spring) MVC(Model-View-Controller) 패턴의 구성요소

1) DispatcherServlet(Front Controller)

- 모든 클라이언트의 요청을 전달받아 Controller에게 클라이언트의 요청을 전달하고, Controller가 리턴한 결과값을 View에게 전달하여 응답 생성

- 클라이언트의 요청을 맨 처음에 받아 HandlerMapping을 통해 어떤 Controller 가야하는지 받은 다음에 Controller에게 보내준 리턴 값을 받아 ViewResolver를 통해 어떤 View를 보여줄건지 결정하고, 그 View를 클라이언트에게 전달

- HandlerMapping, Controller, ModelAndVIew 등의 빈을 관리하는 컨테이너 역할

- 클라이언트의 요청을 전달받아 요청에 맞는 컨트롤러가 리턴한 결과값을 View에 전달하여 알맞은 응답을 생성한다.

 

2) HandlerMapping

- 클라이언트의 요청 URL을 어떤 Controller가 처리할지를 결정하고, URL과 요청 정보를 기준으로 어떤 핸들러 객체를 사용할지 결정하는 객체- DispatcherServlet은 1개 이상의 HandlerMapping을 가질 수 있다.

 

3) Controller

- 클라이언트의 요청을 처리한 뒤, Model을 호출하여 그 결과를 DispatcherServlet에 알려준다.

 

4) ModelAndView

- Controller가 처리한 데이터 및 화면에 대한 정보를 보유한 객체

 

5) ViewResolver

- Controller가 리턴한 View 이름을 기반으로 Controller의 처리 결과를 보여줄 View 결정

 

6) View

- Controller의 처리결과를 보여줄 응답화면 생성

 

https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:ptl:spring_mvc_architecture
https://csw7432.tistory.com/entry/Spring-MVC-%EC%A3%BC%EC%9A%94-%EA%B5%AC%EC%84%B1-%EC%9A%94%EC%86%8C-%EB%B0%8F-%EC%B2%98%EB%A6%AC-%ED%9D%90%EB%A6%84?category=691456

 

4. 스프링(Spring) MVC(Model-View-Controller) 패턴의 클라이언트 요청 처리과정

 

1) 클라이언트의 요청을 DispatcherServlet이 제일먼저 받는다.

 

2) DispatcherServlet은 HandlerMapping을 사용하여 클라이언트의 요청을 처리할 컨트롤러 객체를 찾는다.

 

3) 컨트롤러 객체를 찾은 DispatcherServlet은 컨트롤러 객체의 handleRequest() 메소드를 호출하여 클라이언트의 요청을 처리한다.

 

4) Controller.handleRequest() 메소드는 처리 결과 정보를 담은 ModelAndView 객체를 리턴한다.

 

5) Controller가 리턴한 View 이름을 기반으로 Controller의 처리 결과를 보여줄 View를 결정한다.

 

6) View는 Controller의 처리결과를 보여줄 응답화면 생성하여 클라이언트에게 response 한다.

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