3.서블릿 상속 관계
서블릿 클래스(객체)의 상속 관계도는 다음과 같음
→ 인터페이스와 추상 클래스가 같이 사용되는 형태

1.Servlet
개요
Servlet의 기본 인터페이스
목적
클라이언트의 요청을 처리하고 응답을 생성하는 작업을 수행하기 위한 스펙이 정의된 인터페이스
→ 모든 서블릿은 이 Servlet 인터페이스를 구현해야함
대표적인 메서드 구현 스펙 및 메서드명
- 서블릿 객체 초기화 과정에서 필요한 로직 작성 부분 -
init() - 사용자의 요청에 따라 서블릿을 동작시키는 작업 로직을 작성하는 부분 -
service() - 서블릿 객체 제거 과정에서 필요한 로직 작성 부분 -
destroy()
일반적으로 개발자는 이 인터페이스를 직접 구현하지 않고, 해당 인터페이스를 미리 구현한
GenericServlet이나HttpServlet를 상속받아서 사용함
2.GenericServlet
Servlet 인터페이스를 구현한 추상 클래스(abstract class)
abstract class GenericServlet implements Servlet { ... }개요
이 클래스는 추상 클래스이기 때문에 해당 인터페이스의 모든 스펙을 구현하진 않았음
목적
다양한 프로토콜에서 서블릿을 사용할 수 있도록 프로토콜에서 독립적(protocol-independent)이고 일반적인(Generic) 기능들만 구현한 클래스
HTTP와 관련된 동작으로 Servlet을 작성, 사용하기 위해서는 굳이
GenericServlet을 상속받기(extends) 보다는 이미 구현된HttpServlet을 상속받는 것이 더 편리하고 일반적
다만 확장성을 고려하여 이런식으로 구현의 자유도를 열어두었다는 점만 인지
3.HttpServlet
개요
HttpServlet은 GenericServlet을 상속받은 추상 클래스(abstract class)
abstract class HttpServlet extends GenericServlet { ... }목적
HTTP 프로토콜에서 활용될 서블릿을 구현할 수 있도록 제공되는 클래스
HTTP 요청 메서드(GET, POST 등)에 따라 적절한 응답을 생성하도록 구현되어있음
HttpServlet은 HTTP프로토콜 기반으로 브라우저로부터 요청을 전달 받아 동적인 요청을 처리할 수 있도록 지원하는 클래스
개발자는 서블릿을 작성하기 위해 HttpServlet만 상속 받으면 됨
class MyServlet extends HttpServlet { ... }HTTP 요청 메서드에 따라 doGet(), doPost(), doPut() 등 요청 메서드에 맞는 메서드를 재정의(Overriding)하여 사용해야함
doGet() - 해당 서블릿이 HTTP GET 요청을 받았을 때 동작하는 메서드
doPost() - 해당 서블릿이 HTTP POST 요청을 받았을 때 동작하는 메서드
doPut(), doDelete() 등 동일
그 외 수명주기와 관련된 init(), destory()