WAS를 하나부터 열까지 개발하기 위해서는 핵심 비즈니스 로직 처리를 포함하여 수많은 기능을 구현해야 한다.
서블릿은 핵심 비즈니스 로직 처리를 제외한 데이터 내용을 읽어내는 것부터, HTTP 응답 메시지를 생성하기까지 모든 것을 담당한다.
예시 코드이다. 클라이언트에서 웹 브라우저로 URL로 요청(urlPatterns)이 오면 서블릿의 서비스 메서드가 실행된다.
# HttpServletRequest
HTTP 요청 정보를 편리하게 사용
# HttpServletResponse
HTTP 응답 정보를 편리하게 제공
우선 HTTP 요청 메시지를 기반으로 HttpServletRequest, HttpServletResponse를 새로 생성한 후, 서블릿 컨테이너(helloServlet)를 호출한다.
개발자는 HttpServletRequest, HttpServletResponse에서 요청 정보, 응답 정보를 편리하게 꺼내서 사용한다.
종료 후 HTTP 응답 메시지를 생성하여 웹 브라우저로 전달한다.
그럼 서블릿 컨테이너란?
개발자는 서블릿 객체를 직접 생성하는 것이 아니라, 코드만 만들면 된다. WAS 안에는 서블릿 컨테이너라는 것이 있는데, 서블릿 객체를 생성하고 호출하고 관리하는 모든 생명주기를 담당한다.
서블릿은 싱글톤으로 관리된다. 왜그럴까?
HTTP Request와 Response는 고객마다 데이터가 다르고 다양하다. 물론 요청이 올 때마다 HttpServletRequest, HttpServletResponse 객체는 매번 생성한다.
서블릿의 경우 매번 생성할 필요는 없다. 최초 로딩 시점에 하나의 서블릿 객체를 생성해놓고, 재사용하게 된다. WAS의 중요한 기능 중 하나는 동시 요청을 위한 멀티 쓰레드 처리를 지원하는 것이다.
출처
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard
'🌱 Spring > MVC ①' 카테고리의 다른 글
[Spring] HTTP 요청 데이터(HttpServletRequest) (0) | 2023.07.12 |
---|---|
[Spring] HttpServletRequest 기능과 정보 (0) | 2023.07.11 |
[Spring] Servlet 구현 (0) | 2023.07.11 |
[Spring] 동시 요청을 위한 멀티 스레드 (0) | 2023.07.10 |
[Spring] Web Server & Web Application Server(WAS) (0) | 2023.07.10 |