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.