반응형
스프링 MVC 아키텍처의 동작 순서 및 핵심 컴포넌트에 대해서 알아보자.
- 스프링 MVC 아키텍처의 주요 컴포넌트
-
- 설명
- 플로우
- 뷰가있고, ModelAndView를 사용하는 컨트롤러
- 플로우
- 단계
- 1단계
- 1-1.웹 브라우저는 특정 URL에 Request 를 보냄.
- 1-2.프론트컨트롤러(DispatcherServlet)가 해당 Request 를 수신함.
- 이전 블로깅에서 설명한 것처럼, DispatcherServlet 은 모든 요청을 처리함.
- 2단계
- 2-1.DispatcherServlet 은 URI를 보고, 이를 실제 처리하기 위한 올바른 컨트롤러를 식별함.
- 즉, 올바른 컨트롤러를 식별하는데, Handler Mapping 과 통신하게됨.
- 2-2.Handler Mapping은 요청을 처리하는 특정 핸들러 메소드를 반환함.
- 예시, 스프링 MVC 컨트롤러
- 2-1.DispatcherServlet 은 URI를 보고, 이를 실제 처리하기 위한 올바른 컨트롤러를 식별함.
- 1단계
- 설명
- 설명
- 코드1) @RequestMapping(value = "/hellothubview")
- 매핑된 URI 는 /hellothubview
- 코드2) return new ModelAndView("hellothubview", model)
- 올바른 View 이름과 Model를 가진 ModelAndView 객체를 생성함.
- 반환값은 ModelAndView
- 코드1) @RequestMapping(value = "/hellothubview")
- 3단계
- 3-1.DispatcherServlet은 특정 핸들러 메소드를 호출함.
- 3-2.핸들러 메소드는 Model 과 View 를 반환함.
- 즉, ModelAndView 객체가 반환됨.
- 4단계
- 4-1.DispatcherServlet에는 논리적 뷰 이름이 있음.
- 즉, 물리적 뷰 이름을 결정하는 방법을 알아내야 함.
- 4-2.사용할 수 있는 뷰 리졸버가 있는지 여부를 확인해야하므로 설정된 뷰 리졸버를 찾음.
- org.springframework.web.servlet.view.InternalResourceViewResolver
- 4-3.뷰 리졸버를 호출해 논리적 뷰이름을 입력으로 제공함.
- 4-4.뷰 리졸버는 논리적 뷰 이름을 물리적 뷰 이름에 매핑하는 로직을 실행함.
- 예) 만약 hellothubview 라고 하면,
- /WEB-INF/views/hellothubview.jsp 로 변환함.
- 예시) hellothubview.jsp
- /WEB-INF/views/hellothubview.jsp 로 변환함.
- 예) 만약 hellothubview 라고 하면,
- 4-1.DispatcherServlet에는 논리적 뷰 이름이 있음.
- 설명
- 위의 nickname 으로 매핑된 "magic" 이 들어가게 된다.
- 5단계
- 5-1.DispatcherServlet은 View를 실행하고, 또한 View 에서 Model을 사용할 수 있게 함.
- 5-2.View는 DispatcherServlet으로 보내질 내용을 반환함.
- 6단계
- 6-1.마지막으로, DispatcherServlet은 Response 를 다시 웹브라우저로 전송함.
결론
- 스프링 MVC 아키텍처의 동작 순서 및 핵심 컴포넌트에 대해서 알아보았음.
- 프론트컨트롤러(DispatcherServlet)가 모든 Request 를 수신함.
- 예시로 든것은, 뷰가있고, ModelAndView를 사용하는 컨트롤러의 플로우였음.
- 오늘도 스프링 MVC 아키텍처의 동작 순서및 핵심 컴포넌트에 대한 마술(?) 한가지 획득 완료! 감사합니다. ^^
300x250
'좋아하는 것_매직IT > 1.spring' 카테고리의 다른 글
12.Spring, 스프링MVC의 핵심개념 중 뷰(View) 리솔루션 에 대해서 알아볼께요. (0) | 2021.01.02 |
---|---|
11.Spring, 스프링MVC의 핵심개념 중 RequestMapping 에 대해서 알아볼께요. (0) | 2021.01.02 |
9.Spring, 자바(JAVA) 관련 웹 애플리케이션 아키텍처와 스프링 MVC에 대해서 알아보자. (0) | 2021.01.02 |
8.Spring, 스프링 빈(Bean) 스코프와 중요한 어노테이션에 대해서 알아봅시다. ^^ (0) | 2021.01.02 |
7.Spring, 의존성 주입(dependency injection) 타입에 대해서 알아봅시다. ^^ (0) | 2021.01.02 |