[Spring] Dispatcher Servlet

Kyungmin·2024년 3월 3일
0

Spring

목록 보기
5/39

1. Servlet

자바 서블릿은 자바를 사용하여 웹 페이지를 동적으로 생성하는 서버 측 프로그램 또는 그 사양을 말하며, 흔히 서블릿이라고 불립니다. 즉 서블릿은 클라이언트 요청을 처리하고, 그 결과를 반환하는 웹 프로그래밍 기술입니다.

✅ 사용자가 (HTTP) API 를 요청했을 때 서블릿이 동작하는 순서


1. 사용자가 Client(브라우저)를 통해 서버에 HTTP Request 즉, API 요청을 합니다.
2. 요청을 받은 Servlet 컨테이너는 HttpServletRequest, HttpServletResponse 객체를 생성합니다.
- 약속된 HTTP의 규격을 맞추면서 쉽게 HTTP에 담긴 데이터를 사용하기 위한 객체입니다.
3. 설정된 정보를 통해 어떠한 Servlet에 대한 요청인지 찾습니다.
4. 해당 Servlet에서 service 메서드를 호출한 뒤 브라우저의 요청 Method에 따라 doGet 혹은 doPost 등의 메서드를 호출합니다.
5. 호출한 메서드들의 결과를 그대로 반환하거나 동적 페이지를 생성한 뒤 HttpServletResponse 객체에 응답을 담아 Client(브라우저)에 반환합니다.
6. 응답이 완료되면 생성한 HttpServletRequest, HttpServletResponse 객체를 소멸합니다.

2 Dispatcher Servlet

Dispatcher Servlet은 Spring MVC의 핵심 구성 요소로, 클라이언트의 모든 요청을 한 곳에서 받아 해당 요청을 처리할 컨트롤러로 전달하는 프론트 컨트롤러(Front Controller) 패턴의 구현체입니다.

Front-Controller

과거에는 모든 서블릿을 URL 매핑을 위해 web.xml에 등록해야 했지만, 이젠 디스패처 서블릿이 있습니다.

디스패처 서블릿은 스프링 MVC의 중앙 서블릿이며 어플리케이션으로 오는 모든 요청을 핸들링하고 공통작업을 처리해줍니다.

실제 작업(비즈니스 로직, 예외처리 등)은 위임 컴포넌트를 통해 수행됩니다.

디스패처 서블릿을 프론트 컨트롤러 라고도 부릅니다. 프론트 컨트롤러는 서블릿 컨테이너 맨 앞에서 모든 요청을 받아 처리해주는 컨트롤러를 의미합니다.

이러한 패턴을 프론트 컨트롤러(Front Controller) 패턴이라고 부릅니다.

1. Dispatcher Servlet의 역할과 중요성

서블릿의 일종으로, 모든 HTTP 요청을 받아서, 요청에 맞는 핸들러(컨트롤러)로 요청을 전달합니다.
핸들러 선택, 요청 처리 후 응답을 뷰로 반환하는 과정에서의 중간 처리를 담당합니다.
Spring MVC에서 애플리케이션의 진입점 역할을 수행하여, 요청 처리의 흐름을 관리합니다.

2. 작동 방식

클라이언트로부터 요청이 들어오면, Dispatcher Servlet은 Handler Mapping을 조회하여 해당 요청을 처리할 컨트롤러를 찾습니다.
컨트롤러가 요청을 처리한 후 반환한 모델 및 뷰 정보를 바탕으로, View Resolver가 적절한 뷰를 찾아 클라이언트에게 응답합니다.
이 과정에서 Interceptor, Exception Resolver 등 다양한 컴포넌트가 요청 처리 과정에 개입할 수 있습니다.

3. 구성 요소

Handler Mapping: 요청 URL을 어떤 컨트롤러가 처리할지 결정합니다.
Controller: 실제 비즈니스 로직을 처리합니다.
View Resolver: 컨트롤러의 처리 결과를 바탕으로 적절한 뷰를 선택합니다.
Interceptor: 요청 처리 전후에 추가적인 작업을 수행할 수 있습니다.
Exception Resolver: 요청 처리 중 발생한 예외를 처리합니다.

4. 설정 방법

XML 기반 또는 Java Config 기반으로 Dispatcher Servlet을 설정할 수 있습니다.
Spring Boot를 사용하는 경우, 자동으로 Dispatcher Servlet이 설정되고, 추가적인 설정은 application.properties나 application.yml 파일을 통해 수행할 수 있습니다.

5. Dispatcher Servlet과 Spring Boot

Spring Boot에서는 Dispatcher Servlet을 자동으로 구성하며, 개발자는 복잡한 설정 없이도 웹 애플리케이션을 빠르게 개발할 수 있습니다.
Spring Boot의 자동 구성 기능은 Dispatcher Servlet뿐만 아니라, 다양한 웹 애플리케이션 개발에 필요한 컴포넌트들을 쉽게 관리할 수 있게 해줍니다.

3. 참고자료

블로그
📚 Dispatcher Servlet 이해하기

profile
Backend Developer

0개의 댓글