Servlet
Servlet: 클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 기술
servlet을 관리해주는 역할을 하는 것이 servlet container 이다.
Servlet의 Life Cycle
- 클라이언트 요청
- proxy server를 거쳐 was로 해당 요청 도착
- 요청에 대한 thread 생성
- 매 요청마다 다른 thread가 생성됨
- 매 요청마다 Servlet 인스턴스를 만드는 것이 아님
- 해당 thread가 Servlet의 인스턴스에 있는 메소드를 요청
- service 메소드 호출
- 요청의 종류에 따라 doGet 혹은 doPost 호출
- 응답한 뒤 destroy 함수 호출 → request, response 객체 제거
DispatchServlet
Front Controller Pattern
요청을 받아서 요청에 맞는 Controller를 호출하는 방식
Spring MVC 처리 흐름
- DispatcherServlet의 HTTP 요청 접수
- DispatcherServlet에서 요청에 맞는 controller로 요청 위임
- controller == handler
- 사용자 요청(url, @RequestMapping)을 기준으로 어떤 handler에게 작업을 위임할지를 결정해주는 것 —> Handler Mapping 전략
- DispatcherServlet은 제각각 다른 파라미터를 가진 컨트롤러의 메소드들을 어떻게 호출할까 —> Handler Adapting 전략
- Controller에서 모델 생성과 정보 등록
- Controller의 결과 리턴: 모델 & 뷰
- DispatcherServlet이 뷰 호출 및 모델 참조
- Controller는 요청을 받고, view Name(파일 이름)과 model을 반환한다.
- Dispatcher Servlet이 view name에 따라 적절한 view Resolver를 찾아감
- HTTP 응답 돌려주기
전반적인 과정
- 요청이 오면 Dispatcher Servlet이 먼저 받음
- Handler Mapping을 통해 요청에 맞는 컨트롤러를 선택
- Hadler Adapter를 통해 요청을 controller의 특정한 메소드에 맞는 파라미터로 변환
- Controller에서 메소드가 호출되고, view name과 Model을 반환함
- Dispatcher Servlet에서 view name에 맞는 특정 view Resolver를 찾아줌
- view 렌더링 후 응답 전달
Reference
Spring boot와 내장 Tomcat 그리고 서블릿 전체적인 구조
'Backend > Spring Boot' 카테고리의 다른 글
VO, Entity, DTO, DAO (0) | 2024.03.10 |
---|---|
IoC 컨테이너 & DI (0) | 2024.03.10 |
Spring Boot (0) | 2024.03.10 |
Filter vs Interceptor (0) | 2024.03.10 |