본문 바로가기

스프링 부트

Spring에서 request 처리 과정

2021-04-20글

Spring에서 request 처리 과정

  • DispatcherServlet : 클라이언트의 요청을 전달 받아 요청에 맞는 컨트롤러가 반환한 결과값을 View에 전달하여 알맞은 응답 생성
  • HandlerMapping : 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지 결정
  • Controller : 클라이언트의 요청을 처리한 뒤, 결과를 DispatcherServlet에 반환
  • ModelAndView : 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담음
  • ViewResolver : 컨트롤러의 처리 결과를 생성할 뷰를 결정
  • View : 컨트롤러의 처리 결과 화면을 생성, JSP 또는 템플릿 엔진을 뷰로 사용
  1. 클라이언트가 서버에 요청을 하면 DispatcherServlet이 요청을 가로챈다.
  2. 요청을 가로챈 DispatcherServlet은 HandlerMapping에게 어떤 컨트롤러에게 요청을 위임하면 좋을지 물어본다.
    (HandlerMapping은 @Controller로 등록한 것들을 스캔해서 찾아 놓았다.)
  3. 요청에 매핑된 Controller가 있다면 @RequestMapping을 통하여 요청을 처리할 메서드에 도달한다.
    (이는 HandlerAdapter가 책임진다.)
  4. Controller에서는 해당 요청을 처리할 Service에게 비즈니스 로직을 위임한다.
  5. Service에서는 DB 접근이 필요할 경우 DB 처리를 DAO에게 위임한다.
  6. DAO는 데이터 정보를 받아 Service에게 돌려준다.
    (결과로 받은 Entity 객체를 가지고 Response에 필요한 DTO 객체로 변환한다.)
  7. 모든 비즈니스 로직을 끝낸 Service가 결과물을 Controller에 넘긴다.
  8. 결과물을 받은 Controller는 필요에 따라 Model 객체에 결과물을 넣거나, View 정보를 담아 DispatcherServlet에게 보낸다.
  9. DispatcherServletViewResolver에게 받은 뷰에 대한 정보를 넘긴다.
  10. ViewResolver는 해당 View를 찾아 DispatcherServlet에게 알려준다.
    (serffix, prefix를 붙여주는 것도 ViewResolver에서 수행한다.)
  11. DispatcherServlet은 응답할 View에게 Render를 지시하고 View는 응답 로직을 처리한다.
  12. DispatcherServlet이 클라이언트에게 렌더링된 View를 응답한다.

참고

[Spring MVC 구조의 처리 과정을 설명해보시오. (MVC process)](