Java 언어로 작성된 웹 애플리케이션에서 HTTP 요청을 처리하고 HTTP 응답을 생성하는 서버 측 컴포넌트
init() : 서블릿 초기화service() : 클라이언트 요청 처리destroy() : 서블릿 종료
클라이언트가 Web 서버에 요청하면 웹 서버는 그 요청을 톰캣과 같은 WAS에 위임한다.
그러면 WAS는 각 요청에 해당하는 서블릿을 실행한다. 그리고 서블릿은 요청에 대한 기능을 수행한 후 결과를 반환하여 클라이언트에 전송한다.
1. 클라이언트가 URL 요청 (ex.localhost:8080/hello 입력)
2. 서블릿 컨테이너는 HttpServletRequest, HttpServletResponse 객체 생성
3. Web.xml이 어느 서블릿에 대해 요청한 것인지 탐색 (ex.helloServlet을 찾는다)
4. 해당하는 서블릿에서 service() 메소드 호출
5. doGet() 또는 doPost() 호출
6. 동적 페이지 생성 후 HttpServletResponse 객체에 응답 전송
7. HttpServletRequest, HttpServletResponse 객체 소멸
서블릿의 실행 환경을 제공하는 소프트웨어 컴포넌트
일반적으로 애플리케이션 서버(Web Application Server)라고 한다.
서블릿 관리
∘ 서블릿의 생명주기(init, service, destroy)를 관리합니다.
HTTP 요청 및 응답 처리
∘ 클라이언트로부터 HTTP 요청을 수신하고 적절한 서블릿으로 전달한 뒤, 서블릿의 응답을 클라이언트로 반환합니다.
멀티스레드 처리
∘ 요청마다 새로운 스레드를 생성하거나 풀링된 스레드를 재사용해 병렬 처리 성능을 제공합니다.
자원 관리
∘ 서블릿에서 사용하는 리소스(데이터베이스 연결, 설정 파일 등)를 관리합니다.
보안
∘ 요청 인증 및 권한 부여와 같은 보안 기능을 제공합니다.
데이터 변환
∘ 요청 데이터를 서블릿이 이해할 수 있는 객체(HttpServletRequest, HttpServletResponse)로 변환합니다.
애플리케이션 코드를 하나하나 순차적으로 실행하는 것
자바 메인 메서드를 처음 실행하면 main 이라는 이름의 쓰레드가 실행
쓰레드가 없다면 자바 애플리케이션 실행이 불가능
쓰레드는 한 번에 하나의 코드 라인만 수행
동시 처리가 필요하면 쓰레드를 추가로 생성