Language | Basic/Web

서블릿(Servlet)이란

주정용 2021. 5. 29. 20:57
728x90

개요

  • 클라이언트의 요청에 응답하는 자바 객체입니다.
  • 동적으로 컨텐츠를 생성합니다.
  • HTTP를 지원합니다. 관련 API를 사용할 수 있습니다.
  • 웹서버에서 서비스되는 페이지입니다.
  • MVC 패턴에서 Controller 역할을 담당합니다.
  • 서버가 실행할 수 있는 자바 프로그램은 오직 서블릿뿐입니다.

환경설정 파일 : web.xml

  • 웹 앱의 서비스 처리에 관한 내용이 정의되어 있는 파일입니다.
  • 웹 서버는 web.xml의 내용대로 웹 앱 실행을 위한 설정을 완료합니다.

서블릿 디렉터리

  • 서블릿이 공식적으로 존재하는 디렉터리입니다.
  • 모든 Web Application Server의 구조가 동일합니다.
  • 서블릿 디렉터리는 WEB-INF/classes입니다.

서블릿 클래스 간 관계

  • 서블릿을 구현하려면 HttpServlet을 상속받아야 합니다.
  • 클래스 계층 구조
    • Servlet(interface) <-- GenericServlet(abstract class) <-- HttpServlet(abstract class)
  • Servlet
    • 서블릿의 생명주기와 관련된 메서드가 선언되어 있는 인터페이스입니다.
    • init(), service(), destroy(), getServletConfig(), getSerlvetInfo()
  • GenericServlet
    • 서버 애플리케이션으로서 필요한 기능을 구현한 추상 클래스입니다.
    • service()를 제외한 모든 메서드를 overriding하여 구현하였습니다.
    • GenericServlet을 상속받으면 프로토콜에 따라 재정의해야 합니다.
  • HttpServlet
    • service()를 overriding하여 HTTP 프로토콜에 대응하는 기능을 구현한 클래스입니다.
    • service()에는 doGet(), doPost() 등 정해진 스펙의 메서드가 호출되도록 구현되어 있습니다.

서블릿 컨테이너(Servlet Container)

  • 클라이언트의 요청에 따라 서블릿을 실행합니다.
  • 서블릿의 생명주기를 관리합니다.
  • JSP 컨테이너는 JSP를 서블릿으로 변환하는 작업을 수행합니다.
  • JSP 컨테이너에 의해 컴파일된 JSP는 서블릿 컨테이너에 의해 실행됩니다.

서블릿의 실행 순서

  • 클라이언트 --> 웹 서버 --> 서블릿 컨테이너 --> if 최초요청 --> 메모리 로딩 --> 객체 생성 --> init() --> service()
    • else --> service()

참고자료

처음 해보는 자바 프로그래밍, 오정임