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()