서블릿 컨테이너란?
톰캣
처럼 서블릿을 지원하는 WAS
를 서블릿 컨테이너
라고 합니다.
WAS 란?
웹 애플리케이션 서버(Web Application Server)
는 동적인 웹 애플리케이션을 실행하고 기능을 제공하는 소프트웨어 프레임워크입니다.
서블릿 컨테이너의 역할
- 생명주기 관리: 서블릿의 생성, 초기화, 요청 처리, 소멸 등의 과정을 관리합니다.
- 통신 지원: 웹 서버와의 통신을 처리하여 클라이언트의 요청과 서블릿의 응답이 원활하게 이루어지도록 합니다.
- 멀티스레드 처리: 동시에 들어오는 여러 요청을 각각의 스레드로 처리하여 효율성을 높입니다.
- 보안 관리: 인증 및 권한 부여 등의 보안 기능을 지원합니다.
서블릿의 동작 과정
- 클라이언트 요청 수신: 사용자가 웹 브라우저를 통해 특정 URL에 접근하면 HTTP 요청이 웹 서버로 전달됩니다.
- 서블릿 컨테이너 처리: 웹 서버는 이 요청을 서블릿 컨테이너로 전달하며, 컨테이너는 해당 요청에 맞는 서블릿을 찾습니다.
- 서블릿 인스턴스 생성 및 초기화: 해당 서블릿이 메모리에 없다면 인스턴스를 생성하고 init() 메서드를 호출하여 초기화합니다.
- 요청 처리: service() 메서드가 호출되어 요청의 HTTP 메서드(GET, POST 등)에 따라 doGet() 또는 doPost() 등의 메서드가 실행됩니다.
- 응답 생성: 처리 결과를 기반으로 동적 웹 페이지나 데이터를 생성하여 클라이언트에게 응답합니다.
- 자원 해제: 서블릿이 더 이상 필요 없을 경우 destroy() 메서드를 호출하여 자원을 해제합니다.
간단한 사용법(애노테이션)
@WebServlet(name = "requestParamServlet", urlPatterns = "/request-param")
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}