클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술
간단히 말해, 자바를 사용하여 웹을 만들기 위해 필요한 기술
클라이언트의 요청에 대한 결과를 응답해주는 역할을 수행함
자바로 구현된 CGI(Common Gateway Interface, 웹 서버 상에서 사용자 프로그램을 동작시키기 위한 조합)
동적인 페이지 = 사용자가 요청한 시점에 페이지를 생성해 전달해주는 것
servlet은 웹 서버가 동적인 페이지를 제공할 수 있도록 도와줌
동적엔 페이지를 생성하는 어플리케이션 = CGI
Servlet Request, Servlet Response 객체를 생성
설정 파일을 참고하여 매핑할 Servlet을 확인
해당 서블릿 인스턴스 존재의 유무를 확인하여 없으면 init() 메소드를 호출하여 생성
Servlet Container에 스레드를 생성하고 service를 실행
응답을 처리하였으면 distory() 메소드를 실행하여 Servlet Request, Servlet Response 객체를 소멸
[생명주기 관리]
서블릿 컨테이너가 동작하는 순간 서블릿 클래스를 로딩해 인스턴스화 + 초기화 메서드 호출 / 요청이 들어오면 적절한 서블릿 메서드를 찾아 동작함
서블릿 생명이 다하는 순간 GC(가비지 컬랙션)을 통해 메모리에서 제거
[통신 지원]
클라이언트의 Request를 받아주고 Response를 보낼 수 있게 웹 서버와 소켓을 만들어 통신함
소켓 생성 + 특정 포트 리스닝 + 연결 요청 들어오면 스트림을 생성해 요청 받음 => 이 과정 전체를 서블릿 컨테이너가 대신함
[멀티 쓰레드 관리]
해당 서블릿의 요청이 들어오면 쓰레드를 생성해 작업 수행
따라서, 동시에 여러 요청이 들어와도 멀티 쓰레드 환경으로 동시 다발적인 작업 가능
이렇게 한번 메모리에 올라간 쓰레드는 재생성할 필요 없음 => 메모리 관리에 유리
[선언적인 보안 관리]
보안관련 기능 지원함
따라서, 서블릿 or 자바 클래스 안에 보안 관련 메서드를 구현하지 안하도 괜찮음
한 줄 정리
서블릿은 동적인 웹 페이지를 만들 때 사용되는 자바 기반의 웹 어플리케이션 프로그래밍 기술
웹 요청과 응답의 흐름을 간단한 메서드 호출만드로 체계적으로 다룰 수 있게 해주는 기술