https://www.openmaru.io/was-java-servlet서블릿-동작-방식-한눈에-알아보기/

Java Servlet은 Java언어를 사용하여 웹 애플리케이션을 개발하기 위한 기술입니다. Servlet은 동적으로 웹 페이지를 생성하고, 사용자 요청을 처리하며, 데이터베이스와 통신하고, 다양한 웹 애플리케이션 기능을 수행하는 데 사용된다.

작동방식

  1. 웹 애플리케이션 배포:
    1. Servlet을 웹 애플리케이션에 배포해야 한다.
    2. 보통 웹 애플리케이션은 WAR(웹 애플리케이션 아카이브)파일로 패키징되어 배포됩니다.
    3. 웹 애플리케이션 에는 여러 개의 Servlet, JSP, HTML, CSS 자바 클래스 파일등이 포함 될 수 있다.
  2. 사용자 요청 처리:
    1. 클라이언트(웹 브라우저)에서 HTTP 요청이 서버로 전송됩니다.
    2. 요청은 웹 서버(예: Apache, Nginx)를 통과한 후 Java 웹 애플리케이션 서버로 전달됩니다.
    3. 웹 애플리케이션 서버는 요청을 받아 해당하는 Servlet으로 라우팅합니다.
  3. Servlet 인스턴스화:
    1. Servlet 컨테이너(Java 웹 애플리케이션 서버)는 요청을 처리하기 위해 Servlet 인스턴스를 생성합니다.
    2. 일반적으로 컨테이너는 Servlet 클래스의 기본 생성자를 호출하여 인스턴스를 생성합니다.
    3. 인스턴스는 메모리에 상주하며, 여러 요청을 처리하기 위해 재사용될 수 있습니다.
  4. 요청 처리:
    1. Servlet 인스턴스는 init() 메서드로 초기화되고, service() 메서드가 호출됩니다.
    2. service() 메서드는 HTTP 요청 유형(GET, POST, PUT, DELETE 등)에 따라 적절한 메서드(doGet(), doPost(), doPut(), doDelete() 등)를 호출하여 요청을 처리합니다.
    3. 이 메서드들을 오버라이딩하여 개발자는 사용자 요청에 맞게 서블릿 로직을 구현할 수 있습니다.
  5. 응답 생성:
    1. Servlet은 동적으로 HTML, XML, JSON 등의 응답을 생성할 수 있습니다.
    2. 응답은 HttpServletResponse 객체를 사용하여 생성됩니다.
    3. Servlet은 응답을 생성한 후 HttpServletResponse 객체에 응답 데이터를 설정하고, 웹 애플리케이션 서버로 응답을 전송합니다.
  6. 응답 전송:
    1. 웹 애플리케이션 서버는 Servlet이 생성한 응답을 클라이언트로 전송합니다.
    2. 응답은 HTTP 응답 상태 코드, 헤더, 본문 데이터 등으로 구성됩니다.
    3. 클라이언트(웹 브라우저)는 응답을 받고, HTML, XML, JSON 등을 렌더링하여 사용자에게 보여줍니다.
  7. Servlet 소멸:
    1. Servlet 인스턴스는 일정 시간 동안 유지된 후, 더 이상 요청이 없을 경우 소멸됩니다.
    2. 이때 destroy() 메서드가 호출되어 Servlet 인스턴스를 정리하는 작업을 수행할 수 있습니다.

Servlet Req/Resp