서블릿
서블릿(Servlet)이란 동적 웹 페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술이다.
위의 그림에서 개발자가 실제로 만드는 의미있는 비즈니스 로직은 초록색 부분에 불과하다.
하지만 웹 애플리케이션 동작에는 초록색 이외의 모든 과정 또한 필요한데
이 과정들을 대신해서 처리하여 개발자가 비즈니스 로직에 집중할 수 있게 해주는 것이 서블릿이다.
즉, 서블릿은 웹 요청과 응답의 흐름을 간단한 메서드 호출만으로 체계적으로 다룰 수 있게 해주는 기술이다.
서블릿 컨테이너
클라이언트로부터 요청을 받을 때 서블릿을 실행시켜주는 톰캣과 같은 WAS 를 서블릿 컨테이너라고 한다.
서블릿 컨테이너는 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리한다.
JSP도 서블릿으로 변환 되어서 사용되며 동시 요청을 위한 멀티 쓰레드 처리를 지원한다.
HTTP 요청, 응답 흐름
- HTTP 요청 시 WAS는 Request, Response 객체를 새로 만들어서 서블릿 객체 호출
- 개발자는 Request 객체에서 HTTP 요청 정보를 편리하게 꺼내서 사용
- 개발자는 Response 객체에 HTTP 응답 정보를 편리하게 입력
- WAS는 Response 객체에 담겨있는 내용으로 HTTP 응답 정보를 생성
서블릿 객체는 싱글톤으로 관리한다.
고객의 요청이 올 때 마다 계속 객체를 생성하는 것은 비효율적이다.
따라서 서블릿 객체는 최초 로딩 시점에 싱글톤으로 미리 만들어두고 재활용한다.
이후 서블릿 컨테이너 종료시 함께 종료된다.
- 모든 고객 요청은 동일한 서블릿 객체 인스턴스에 접근
- 싱글톤이므로 공유 변수 사용에 주의 !
DispatcherServlet
스프링을 사용해봤다면 DispatcherServlet 을 들어봤을것이다. 그렇다면 DispatcherServlet 은 뭘까?
이 앞에서 클라이언트가 요청 시 서블릿 컨테이너가 요청을 받는다고 했다.
스프링은 이 요청들을 가장 앞단에서 받아 처리하는 FrontController 라는 개념을 두었다.
이 FrontController 가 바로 DispatcherServlet 이다.
따라서 DispatcherServlet 을 통해 처리되는 요청은 일련의 스프링 MVC 의 처리 과정을 거친다는의미이다.
DispatcherServlet 의 동작 방식은 여기를 참고하자.
'백엔드 > Spring' 카테고리의 다른 글
BeanValidation 써보기 (0) | 2023.09.22 |
---|---|
@ModelAttribute 와 @RequestBody 써보기 (0) | 2023.09.21 |
DispatcherServlet (0) | 2023.08.01 |
Thread Pool (0) | 2023.07.25 |
의존성 주입: Spring을 사용할 때 의존성 주입 방법 (0) | 2023.07.18 |