Skip to Content
Suffering builds character
아카이브15.서블릿Servlet/JSP특징2.요청 및 응답 처리3.서블릿 상속 관계

3.서블릿 상속 관계

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

servlet_inheritance

1.Servlet

개요
Servlet의 기본 인터페이스

목적
클라이언트의 요청을 처리하고 응답을 생성하는 작업을 수행하기 위한 스펙이 정의된 인터페이스
→ 모든 서블릿은 이 Servlet 인터페이스를 구현해야함

대표적인 메서드 구현 스펙 및 메서드명

  1. 서블릿 객체 초기화 과정에서 필요한 로직 작성 부분 - init()
  2. 사용자의 요청에 따라 서블릿을 동작시키는 작업 로직을 작성하는 부분 - service()
  3. 서블릿 객체 제거 과정에서 필요한 로직 작성 부분 - destroy()

일반적으로 개발자는 이 인터페이스를 직접 구현하지 않고, 해당 인터페이스를 미리 구현한 GenericServlet이나 HttpServlet를 상속받아서 사용함

2.GenericServlet

Servlet 인터페이스를 구현한 추상 클래스(abstract class)

GenericServlet.java
abstract class GenericServlet implements Servlet { ... }

개요
이 클래스는 추상 클래스이기 때문에 해당 인터페이스의 모든 스펙을 구현하진 않았음

목적
다양한 프로토콜에서 서블릿을 사용할 수 있도록 프로토콜에서 독립적(protocol-independent)이고 일반적인(Generic) 기능들만 구현한 클래스

HTTP와 관련된 동작으로 Servlet을 작성, 사용하기 위해서는 굳이 GenericServlet을 상속받기(extends) 보다는 이미 구현된 HttpServlet을 상속받는 것이 더 편리하고 일반적
다만 확장성을 고려하여 이런식으로 구현의 자유도를 열어두었다는 점만 인지

3.HttpServlet

개요
HttpServlet은 GenericServlet을 상속받은 추상 클래스(abstract class)

HttpServlet.java
abstract class HttpServlet extends GenericServlet { ... }

목적
HTTP 프로토콜에서 활용될 서블릿을 구현할 수 있도록 제공되는 클래스

HTTP 요청 메서드(GET, POST 등)에 따라 적절한 응답을 생성하도록 구현되어있음

HttpServlet은 HTTP프로토콜 기반으로 브라우저로부터 요청을 전달 받아 동적인 요청을 처리할 수 있도록 지원하는 클래스

개발자는 서블릿을 작성하기 위해 HttpServlet만 상속 받으면 됨

MyServlet.java
class MyServlet extends HttpServlet { ... }

HTTP 요청 메서드에 따라 doGet(), doPost(), doPut() 등 요청 메서드에 맞는 메서드를 재정의(Overriding)하여 사용해야함

Note

doGet() - 해당 서블릿이 HTTP GET 요청을 받았을 때 동작하는 메서드
doPost() - 해당 서블릿이 HTTP POST 요청을 받았을 때 동작하는 메서드
doPut(), doDelete() 등 동일
그 외 수명주기와 관련된 init(), destory()

Last updated on