Spring MVC에서의 DispatcherServlet 역할
DispatcherServlet은 스프링 MVC의 핵심 컴포넌트로, 프론트 컨트롤러(Front Controller) 패턴을 기반으로 작동합니다.
이 서블릿은 모든 클라이언트 요청을 가로채고, 적절한 컨트롤러로 요청을 전달한 뒤, 해당 요청에 맞는 응답을 생성해주는 중요한 역할을 합니다.
DispatcherServlet의 동작 과정
스프링 애플리케이션에서 DispatcherServlet은 모든 요청을 처리하는 중앙 관리자입니다. 요청이 들어오면, 이를 가로채서 적절한 비즈니스 로직과 응답 처리 흐름으로 연결시킵니다.
클라이언트 요청
사용자가 웹 브라우저를 통해 특정 URL로 요청을 보내면, 해당 요청은 DispatcherServlet이 먼저 가로챕니다.
이때 모든 요청은 DispatcherServlet이 받아들이도록 web.xml에서 설정되어 있습니다.
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Handler Mapping을 통한 컨트롤러 탐색
DispatcherServlet은 들어온 요청을 처리하기 위해 HandlerMapping을 사용하여 적절한 컨트롤러를 찾아냅니다. 이때 URL 패턴을 기준으로 요청을 처리할 컨트롤러 메서드를 찾습니다.
예를 들어, @RequestMapping이나 @GetMapping, @PostMapping 등으로 매핑된 메서드를 탐색합니다.
컨트롤러 메서드 실행
HandlerMapping이 적절한 컨트롤러 메서드를 찾으면, 해당 메서드가 실행됩니다. 이 과정에서 컨트롤러는 요청에 맞는 비즈니스 로직을 처리하고, 그 결과를 반환합니다.
뷰 처리 또는 데이터 변환
컨트롤러 메서드가 처리 결과로 뷰(View) 이름을 반환하면, ViewResolver가 뷰 파일(JSP, Thymeleaf 등)을 찾아 렌더링합니다.
컨트롤러가 JSON이나 XML과 같은 데이터 형식을 반환할 때는, HttpMessageConverter가 이 데이터를 클라이언트가 이해할 수 있는 형식으로 변환해 응답합니다.
응답 전송
최종적으로 DispatcherServlet은 렌더링된 뷰나 변환된 데이터를 클라이언트에게 HTTP 응답으로 전송합니다.
'개발' 카테고리의 다른 글
[배포] github actions, EC2, nginx를 통한 무중단 배포 (3) | 2024.10.09 |
---|---|
[spring] spring security 완전 정복 (4) | 2024.10.09 |
[JAVA] 자바의 가비지컬렉션 개념과 동작원리 (0) | 2024.10.08 |
[spring mvc] 서블릿 컨테이너 너는 누구냐 (3) | 2024.10.06 |
[spring boot + JPA] 동시성 문제 (2) | 2024.10.06 |