1. Spring Servlet 이란?
Dispatcher Servlet 을 설명하기 이전에 Dispatcher Servlet은 Servlet의 일종이기에 우선 Servlet에 대해 먼저 설명하고자 한다.
Servlet 이란 자바 언어를 기반으로 웹 애플리케이션 개발을 위한 플랫폼-독립적인 서버 사이드 컴포넌트로써, 다음과 같은 특징을 가진다.
1. 플랫폼 독립성 : 서블릿은 Java언어로 작성되므로, 어떤 플랫폼에서도 동작할 수 있으며, 즉 '한 번 작성, 어디서나 실행'의 장점을 제공.
2. 웹 애플리케이션 개발 : 서블릿은 주로 동적인 웹 애필리케이션을 개발하는데 사용되며 이는 웹 요청을 처리하고 HTTP 응답을 생성하는데 특히 유용.
3. 스레드 기반 : 서블릿은 멀티스레드 환경에서 동작하며, 각 클라이언트 요청에 대해 새로운 스레드를 생성하거나 스레드 풀을 사용하여 요청을 동시에 처리할 수 있다.
4. 웹 컨테이너 : 서블릿은 웹 컨테이너 내에서 동작하며 웹 컨테이너는 서블릿의 생명주기 관리와 HTTP 요청 및 응답을 처리한다.
5. HTTP프로토콜 지원 : 서블릿은 HTTP 프로토콜을 기반으로 클라이언트와 상호작용한다. HTTP 요청 메서드 및 헤더를 처리하며, HTTP 응답을 생성한다.
6. 웹 애플리케이션 서비스 : 서블릿은 다양한 웹 애플리케이션 서비스를 제공할 수 있다. 예를 들어, 사용자 인증, 데이터베이스 연동, 등등이 있다.
7. 생명주기 관리 : 서블릿은 특정한 생명주기를 따르며 서블릿 컨테이너는 서블릿을 초기화하고, 요청을 처리하며 종료하는데 필요한 메서드를 호출한다.
결론적으로 서블릿은 JavaEE 스펙의 일부로, 웹 애플리케이션을 개발하고 웹서버에서 실행할 때 매우 유용한 기술이다.
2. Spring Dispatcher Sevlet이란?
Spring Dispatcher Servlet은 Spring Framework에서 중요한 역할을 하는 핵심 컴포넌트 중 하나로 Dispatcher Servlet은 웹 애플리케이션의 모든 HTTP 요청을 처리하고 요청을 적절한 핸들러로 라우팅하는 역할을 하며 다음과 같은 주요 특징을 지니고 있다.
1. Front Controller : Dispatcher Servlet은 웹 애플리케이션의 Front Controller로 동작한다. 모든 클라이언트의 HTTP 요청은 먼저 Dispatcher Sevlet에 의해 수신된다.
2. 요청 라우팅 : Dispatcher Sevlet은 URL 패턴을 기반으로 HTTP 요청을 적절한 컨트롤러로 라우팅한다. 이를 통해 요청을 처리할 컨트롤러를 선택하고 실행할 수 있다.
3. 뷰 렌더링 : Dispatcher Servlet은 컨트롤러에서 반환된 뷰를 선택하고 해당 뷰를 클라이언트에 렌더링한다. 이를 통해 웹 페이지를 동적으로 생성하고 반환할 수 있다.
4. Handler Mapping : Dispatcher Servelt은 라우팅을 위해 Handler Mapping이라고 불리는 구성 요소를 사용한다. Handler Mapping은 URL 패턴과 컨트롤러 사이의 매핑 정보를 제공한다.
5. View Resolver : DIspatcher Servlet은 뷰 렌더링을 위해 View Resolver를 사용하며 View Resolver는 컨트롤러에서 반환된 뷰 이름을 실제 뷰 객체로 해석하고 렌더링 한다.
6. 인터셉터 : Dispatcher Servlet은 인터셉터를 지원하여 요청 처리 전후에 특정 작업을 수행할 수 있게 한다. 예를 들어, 보안 체크, 로깅 트랜잭션 관리가 있다.
7. 에러처리 : Dispatcher Servlet은 요청 처리 중 발생하는 에러를 처리하고 오류 페이지로 리다이렉션 하거나 에러 메시지를 제공하는 역할을 한다.
3. DispatcherServlet 구조도(spring-webmvc:6.0.11)
DispatcherServlet은