[Spring] Spring MVC의 요청 처리과정

Jay Lee·2022년 12월 23일
0

Spring

목록 보기
1/3

구성 요소

  • Dispatcher Servlet: 클라이언트의 요청을 전달받아 요청에 맞는 응답을 생성
  • Handler Mapping: 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지 결정
  • Handler Adapter: 위에서 결정한 Handler(Controller)를 호출
  • Handler(Controller): 클라이언트의 요청을 처리한 뒤 결과를 Dispatcher Servlet에 반환
  • ModelAndView : 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담음
  • ViewResolver : 컨트롤러의 처리 결과를 생성할 뷰를 결정
  • View : 컨트롤러의 처리 결과 화면을 생성, (JSP, Thymeleaf 등 사용)

처리 순서

  1. 클라이언트가 서버에 요청을 보내면 Dispatcher Servlet이 요청을 가로챈다.
  2. 들어온 요청을 Handler Mapping에 위임하여 해당 요청을 처리할 Handler(Controller)를 탐색한다.
  3. 해당 핸들러를 실행할 수 있는 핸들러 어댑터를 핸들러 어댑터 목록에서 찾는다.
  4. HandlerAdapter는 요청에 매핑된 Hadler가 있다면 @RequestMapping을 통해 특정 메서드를 호출한다.
  5. Controller -> Service -> Repository -> DB -> Repository -> Service -> Controller 순으로 로직이 진행된다.
  6. 결과물을 받은 Controller는 필요에 따라 Model 객체에 결과물을 넣거나, View 정보를 담아 DispatcherServlet에게 보낸다.
  7. DispatcherServlet은 ViewResolver에게 받은 뷰에 대한 정보를 넘긴다.
  8. ViewResolver는 해당 View를 찾아 DispatcherServlet에게 알려준다.
  9. DispatcherServlet은 응답할 View에게 Render를 지시하고 View는 응답 로직을 처리한다.
  10. DispatcherServlet이 클라이언트에게 렌더링된 View를 응답한다.

Spring MVC 패턴의 장점

  • Spring MVC 패턴 이전의 경우 URL마다 별도의 Servlet을 필요로 했다. 또한, 각 서블릿마다 공통 기능을 하는 코드들이 중복해서 발생하여 유지 보수 하기 어려웠다.
profile
Data Engineer

0개의 댓글