만족은 하되 안주하지는 말자

기록해야 기억한다

프로그래밍/backend&devOps

[spring] dispatcher servlet 이 뭐죠? (spring MVC)

D36choi 2021. 3. 4. 10:38
728x90

dispatcher servlet 이란?

https://stackoverflow.com/questions/2769467/what-is-dispatcher-servlet-in-spring

 

What is Dispatcher Servlet in Spring?

In this image (which I got from here), HTTP request sends something to Dispatcher Servlet. My Question is what does Dispatcher Servlet do? Is it something like getting the information thrown fro...

stackoverflow.com


 

 

단계별로 서술한다.

 

  1. request 가 browser 를 떠나면 이것은 사용자가 요청하는 정보를 담아 스프링 DispatcherServlet 으로 전달된다. 이것의 역할은 사용자 요청을 MVC controller 로 전달하는 것이다. 이 때 컨트롤러는 여러개일 수 있고 Dispatcher 는 적절한 컨트롤러를 골라 매핑해주게 된다.
  2. 요청의 다음행선지를 알기 위해 handler mapping 은 그걸 결정할 때 요청에 함께온 URL을 확인하게 되고 이를 통해 적절한 Controller 를 찾아 전달한다.
  3. 컨트롤러에서 정보를 받아 로직을 수행하는데 이 결과로 사용자에게 다시 돌려야하는 응답정보가 있을 수도, 혹은 브라우져에서 사용자에게 표시되어야 할 수도 있다. 그러나 그대로 raw information 으로 전달하기 보다 사용자 친화적인 포맷(HTML 등) 으로 변형되어야 하므로 View 에게 정보가 전달될 필요가 있다.
  4. 컨트롤러는 특정 뷰를 복사하지않기 위해 DispatcherServlet 에 전달된 view 이름은 특정한 JSP 를 식별하지 않는다. 결과를 만들어내기 위해 필요한 논리적인 name들만 실어 나른다.
  5. view는 물론 JSP 일 수 있고 아닐 수도 있다. 논리적인 view 이름을 실제 view 구현체에 매핑하기 위해 이제 어떤 뷰를 렌더링할지 디스패처서블릿은 알고 있으므로 거의 끝났다.
  6. 모델 데이터가 뷰로 전달되어 렌더링을 거치고 이를 통해 client 에게 친숙한 응답 결과 (즉 우리가 평소 보는 웹페이지의 모습) 를 전송할 수 있다.