클라이언트의 요청을 처리하고 웹 페이지를 동적으로 생성하는 자바 웹 프로그래밍 기술
• HttpServlet 클래스를 상속받아 생성
• Java Thread를 이용하여 동작
• HTML 변경 시 Servlet 재컴파일 필요
웹 서버와 통신하기 위한 소켓 생성, 포트 리스닝, 스트림 생성 등의 업무를 담당
생성자 → init() → service() → doGet(), doPost() → destroy()
• init() : 최초 요청시에 초기화 후에는 해당 과정을 생략 (싱글톤 패턴)
• service() : 클라이언트의 요청시 호출되며, 각 요청은 별도의 쓰레드로 처리
요청 메서드를 판별 후 doGet(), doPost()를 호출 → 해당 메서드를 선언하지 않은 경우 405 에러 발생
• destroy() : 서블릿이 메모리에서 해제될 때 호출, 서버 종료시 호출

| Client | Servlet Container |
|---|---|
| 1. 요청 URL 서버에 요청할 정보를 URL 형태로 생성하여 호출 |
2. 객체 생성 HttpServletRequest, HttpServletResponse |
| 3. web.xml 요청 URL 분석 후 해당 서블릿(Servlet)에 요청 전달 |
|
| 4. 서블릿(Servlet) service() 호출 |
|
| 5. service() 요청 메서드에 따라 doGet() 또는 doPost()를 호출 |
|
| 6. doGet(), doPost() 동적 페이지 생성 후 HttpServletResponse로 결과 전달 |
|
| 7. 객체 소멸 결과를 클라이언트로 전송 후 HttpServletRequest, HttpServletResponse 객체 소멸 |
하나의 웹 애플리케이션(Web Application)에서 모든 서블릿들을 관리하고 서블릿 간의 정보를 공유할 수 있게 도와주는 클래스
객체를 사용하고 활동할 수 있는 범위
Page
한 번의 클라이언트 요청에 대해 하나의 JSP 페이지(Page)를 범위로 가짐
⇨ pageContext 객체를 이용하여 페이지 내의 입/출력, 별도 내장객체는 존재하지 않음
⇨ 페이지 이동(forwarding)이 일어나는 경우 소멸
Request
GET, POST 등 요청(Request)을 처리하는데 사용하는 모든 JSP 페이지를 포함하는 범위
⇨ 웹 브라우저가 요청을 보낼 때 마다 새로운 Request 영역이 생성
Session
같은 세션(Session)을 공유하는 하나의 웹 브라우저에서 이루어지는 모든 요청 범위
⇨ 세션의 구분을 위해 고유 ID를 할당, 유효시간 설정 가능
Application
웹 애플리케이션(Application)의 전체 영역을 포함하는 범위
⇨ 웹 컨테이너(Web Container)의 재시동 시 기존 영역 삭제 후 재생성
출처 및 참고🔗
https://velog.io/@gillog/Servlet서블릿
https://jordy-torvalds.tistory.com/14