Gymterview
junior

В чем отличия GenericServlet и HttpServlet

GenericServlet — абстрактный класс, реализующий интерфейс Servlet и предоставляющий протоколонезависимую базовую реализацию сервлета. HttpServlet — абстрактный класс, наследующий GenericServlet и добавляющий поддержку HTTP-протокола.

Критерий GenericServlet HttpServlet
Протокол Любой (протоколонезависимый) Только HTTP
Основной метод service(ServletRequest, ServletResponse) doGet(), doPost(), doPut(), doDelete() и др.
Практическое использование Практически не используется Основной класс для создания сервлетов

На практике GenericServlet не используется, потому что веб-приложения работают по HTTP. HttpServlet предоставляет удобную маршрутизацию по типу HTTP-метода через паттерн Template Method: метод service() определяет тип запроса и вызывает соответствующий doXxx().

На собеседовании: достаточно сказать, что GenericServlet — протоколонезависимая база, а HttpServlet — HTTP-специализация. В реальных проектах всегда наследуют HttpServlet.