본문 바로가기
개발공부/개념정리

Dispatcher Servlet

by parkman

1. Servlet

1) Servlet ?

  • Java를 사용하여 웹을 만들기 위해 필요한 프로그래밍 기술
  • 웹 기반의 요청에 대해 동적으로 처리해주는 역할로서 Server Side에서 작동(WAS)합니다.
  • 클라이언트가 요청을 하면 그 결과를 다시 전송해주는 프로그램입니다.
  • HttpServlet이라는 Java의 클래스를 상속받습니다.

2) Servlet Container ?

  • Servlet은 요청을 받거나 내보낼 때, 자신이 알아서 하는 것이 아니라 서블릿을 실행시키는 주체인 서블릿 컨테이너라는 것을 이용한다.
  • Servlet을 관리한다는 Servlet Container는 어떤 요청에 대해 어떤 Servlet을 실행할 것인지 제어하는 것이다.
    (서블릿이 웹서버와 통신을 할 수 있도록 해주는 것)
  • 대표적인 서블릿 컨테이너는 바로 Tomcat이다.

3) 동작과정

 

2. Front Controller 패턴 적용

1) 기존의 Servlet

기존의 방식은 요청 URL당 Servlet을 생성하고 해당 Controller에게 요청을 보내는 코드를 따로 작성해야 했다.

 

2) Front Controller 패턴 적용

위 구조와 같이 Front Controller 패턴을 적용하게 되면 하나의 Servlet에서 요청을 받아들여 적절한 Controller로 요청을 위임한다.

 

한곳에서 모든 사용자의 요청을 컨으롤할 수 있기 때문에 기본적으로 사용자의 모든 요청에 대한 인코딩처리, 에러페이지 처리, 공지 등에 대한 처리를 한 곳에서 처리가 가능하다.

 

3. Dispatcher Servlet

  • 클라이언트가 요청을 주면, Servlet Container가 요청을 받는다. 이때 제일 앞에서 서버로 들어오는 모든 요청을 처리하는 Front Controller라는 것을 Spring에서 정의 하였고, 이를 Dispatcher Servlet이라고 한다.
  • 기존에는 모든 Servlet에 대해 URL 매핑을 활용하기 위해 web.xml에 모두 등록을 해주어야 했지만, Dispatcher Servlet이 해당 어플리케이션으로 들어오는 모든 요청을 핸들링 해주면서 작업의 효율을 높였습니다.
    *(Spring Boot에서는 @springBootApplication 어노테이션으로 web.xml 파일을 대체할 수 있다.)
  • Controller로 향하는 모든 웹 요청의 진입점으로 웹 요청을 처리하고 결과 데이터를 Client에게 응답한다.
  • 즉, Dispatcher Servlet을 이용한다는 것은 스프링에서 제공하는 MVC모델을 이용하겠다는 것으로 생각하면 된다.

1) 동작과정

위에서 Servlet 대신 Distpatcher Servlet이 사용자의 모든 요청을 받아 여러 작업을 거친 뒤 Controller에게 역할을 위임한다.

Spring은 유연하고 다양한 설계를 위해 이러한 구조를 채택했고, 개발자는 Distpatcher Servlet에 붙어있는 Handler Mapping, Handler Adapter 등을 설정하여 요청 받았을 때 어떻게 동작할 것인지 정해줄 수 있습니다.(web.xml)

 

2) Web 동작 과정

Server Start 단계

1. Web server init

2. Root WebApplicationContext 로딩

3. Web server start

 

Client 호출 단계

1. Client -> Web server로 request 전송

2. 동적 Web server -> Servlet Container로 전달

3. Servlet Container 쓰레드 생성

4. Dispatcher Servlet init(서블릿 생성 안되어 있을 경우)

5. 생성된 쓰레드에서 Dispatcher Servlet Service() 메서드 호출

6. HandlerMapping을 통해 매핑 컨트롤러 조회

7. HandlerAdapter를 통해 매핑 컨트롤러에 request 전달

8. 개발자가 구현한 Controller -> Service -> Repository ... 동작


면접 질문!

Dispacher Servlet 란?

 

클라이언트가 요청을 주면, Servlet Container가 요청을 받는다. 이때 제일 앞에서 서버로 들어오는 모든 요청을 처리하는 Front Controller라는 것을 Spring에서 정의 하였고, 이를 Dispatcher Servlet이라고 한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

https://taes-k.github.io/2020/02/16/servlet-container-spring-container/

https://riimy.tistory.com/87

https://devmoony.tistory.com/102

 

728x90
반응형
LIST