GenericServlet - абстрактный базовый класс, предоставляющий общую функциональность для всех сервлетов. Он не привязан к конкретному протоколу. Основной метод обработки запроса - service(ServletRequest req, ServletResponse res).
HttpServlet - абстрактный класс, наследующийся от GenericServlet и специально разработанный для работы с HTTP-запросами. Он предоставляет методы для обработки различных типов HTTP-запросов (GET, POST, PUT, DELETE и т.д.): doGet(), doPost(), doPut(), doDelete(). Метод service в HttpServlet переопределен для диспетчеризации HTTP-запросов к соответствующим методам doXxx().
Основные отличия:
| Признак | GenericServlet | HttpServlet |
|---|---|---|
| Протокол | Независимый от протокола | Ориентирован на HTTP |
| Основной метод обработки | service(ServletRequest, ServletResponse) | service(HttpServletRequest, HttpServletResponse). Вызывает doGet, doPost и т.д. |
| Типы запросов | Обработка общих запросов | Специализированная обработка HTTP-методов (GET, POST, PUT, DELETE, и др.) |
| Абстракция | Более низкий уровень абстракции | Более высокий уровень абстракции для веба |
GenericServlet подходит для создания сервлетов, работающих с протоколами, отличными от HTTP, или для создания специализированных базовых классов для сервлетов. HttpServlet используется в подавляющем большинстве веб-приложений на Java для обработки HTTP-запросов.