DispatcherServlet

taeheon95·2022년 9월 3일
0

spring

목록 보기
2/2

디스패처 서블릿 상속구조

Dispatcher Servlet은 스프링에서 핵심적인 역할을 하는 클래스이다. 스프링 프레임워크는 dispatcher 서블릿을 통해 요청을 처리하고 모든 컨트롤러에게 url을 맵핑 시키고 일련의 과정을 거쳐서 view 또는 ajax 데이터를 반환하게 된다

디스패처 서블릿은 web.xml에 모든 url을 등록시켜줘야 했던 과거와는 달리 디스패처 서블릿이 모든 요청을 핸들링 해주고 공통 작업을 해주면서 스프링 프레임워크를 굉장히 편리하게 쓸 수 있게 해주었다.

이러한 디스패처 서블릿은 Controller일 경우와 RestController일 경우에 다른 동작을 취하게 된다.

Controller

controller

RestController

restcontroller

그렇지만 디스패처 서블릿은 공통적으로

  1. 클라이언트의 요청을 받고
  2. 요청 정보를 위임할 컨트롤러를 찾고
  3. 요청을 컨트롤러에 위임할 핸들러 어댑터를 찾아서 요청을 전달하고
  4. 핸들러 어댑터는 요청을 컨트롤러로 전달하고
  5. 전달한 요청을 컨트롤러에서 처리하고
  6. 요청의 결과를 핸들러 어댑터가 처리하고
  7. 그 결과를 클라이언트로 반환

하는 과정을 거치게 한다.

디스패처 서블릿은 어떻게 요청을 처리할 수 있는가?

디스패처 서블릿 상속 구조

디스패처 서블릿은 서블릿을 상속 받아서 서블릿으로 요청을 받아들일 수 있다. 이를 통해 디스패처 서블릿은 모든 요청을 처리할 수 있도록 한다음, 컨트롤러들을 핸들러 어댑터로 받아들여서 데이터를 처리하게 된다. 이 핸들러 어댑터는 템플릿 메소드 패턴으로 구현이 되어 있어서 하위 동작들이 다르게 동작하게 하는 것이 가능하여 디스패처 서블릿이 공통으로 요청을 처리할 수 있게 된다.

템플릿 메소드 패턴

알고리즘의 구조를 메소드에 정의하고, 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재정의 하는 패턴이다. 알고리즘이 단계별로 나누어 지거나, 같은 역할을 하는 메소드이지만 여러 곳에서 다른 형태로 사용이 필요한 경우 유용한 패턴이다.

0개의 댓글

관련 채용 정보