What is a Servlet?
: A servlet is a Java programming language class that is used to extend the capabilities of servers that host applications accessed by means of a request-response programming model. Although servlets can respond to any type of request, they are commonly used to extend the applications hosted by web servers. For such applications, Java Servlet technology defines HTTP-specific servlet classes.
- The Java EE 5 tutorial, Oracle

서블릿이란 자바 클래스 중 하나로 서버가 요청-응답(request-response) 방식의 프로그래밍 모델을 이용하는 호스트 어플리케이션을 개발할 때 사용됩니다. 서블릿은 어떠한 요청이라도 처리할 수 있지만, 보통은 웹서버에 호스팅되는 어플리케이션을 처리하기 위해 개발됩니다.

 

패키지

  • javax.servlet
  • javax.servlet.http

위 패키지에 서블릿을 작성하기 위한 인터페이스와 클래스가 포함되어 있습니다.

 

서블릿 생명주기(Lifecycle, 라이프사이클)

서블릿은 크게 init / service / destruction의 세가지 상태가 있습니다

  • 초기화 (Initialization)
    • 서블릿이 생성될 때 한번만 실행됩니다
    • request가 여러번 오더라도 초기화는 처음 1회만 수행됩니다
  • 서비스 (Service)
    • 클라이언트의 request를 처리해 response를 반환합니다
    • 매 request마다 서비스 메소드가 실행됩니다
    • ex. GET, POST 방식을 처리하려면 doGet, doPost를 오버라이드 합니다. 이후 request가 오면 service 메소드에서 http method를 확인해 doGet 또는 doPost를 호출합니다.
  • 소멸 (Destruction)
    • 서블릿 컨테이너(ex. Tomcat)를 종료하거나, 서블릿 내용이 갱신됐거나, 서블릿이 오랜 시간 idle 상태로 있었거나, 명시적으로 destroy 메소드가 호출된 경우 등에 서블릿이 소멸됩니다
    • 예를 들어 서블릿이 생성된 후 서블릿을 수정하고, 이후 클라이언트에서 해당 서블릿에 request를 보내면 이미 있던 서블릿은 destroy, 다음으로 서블릿을 만든 뒤 init -> service 순으로 진행됩니다. 

 

반응형