В чем разница между GenericServlet, HttpServlet и сервлета?
Я искал точную разницу между javax.servlet.http.HttpServlet
, javax.servlet.GenericServlet
и javax.Servlet
не могут найти этого.
"Точная разница" означает
- Использование
- Причина существования
javax.servlet.GenericServlet
Ответы
Ответ 1
"Точная разница" означает что? API перечисляет точные различия.
Servlet
- это интерфейс, определяющий, что должен выполнять сервлет.
GenericServlet
- это просто общий, не зависящий от протокола сервлет.
HttpServlet
- это сервлет, привязанный специально к протоколу HTTP.
Вы спрашиваете, когда будете использовать какие-либо из них?
В общем, вы должны расширить HttpServlet
для реализации веб-уровня приложения.
Вы можете реализовать Servlet
, если вы пишете свой собственный контейнер или обрабатываете все самостоятельно. Вы можете расширить GenericServlet
, чтобы обрабатывать другой протокол, но вы не можете.
Ответ 2
javax.servlet
Сервлет - это веб-технология на стороне сервера. Как следует из названия, он обслуживает клиентский запрос и получает ответ от сервера. Вы должны реализовать javax.Servlet(Interface) для обработки работы сервлета.
javax.servlet.GenericServlet
Подпись:
public abstract class GenericServlet extends java.lang.Object implements Servlet, ServletConfig, java.io.Serializable
- GenericServlet определяет общий, не зависящий от протокола сервлет.
- GenericServlet дает план и упрощает создание сервлетов.
- GenericServlet предоставляет простые версии методов жизненного цикла
init и destroy, а также методы в интерфейсе ServletConfig.
- GenericServlet реализует метод журнала, объявленный в
Интерфейс ServletContext.
- Чтобы написать общий сервлет, достаточно переопределить
abstract service().
javax.servlet.http.HttpServlet
Подпись:
public abstract class HttpServlet extends GenericServlet implements java.io.Serializable
- HttpServlet определяет определенный сервлет HTTP-протокола.
- HttpServlet дает схему для сервлета Http и делает запись
их легче.
- HttpServlet расширяет GenericServlet и, следовательно, наследует
свойства GenericServlet.
Ответ 3
javax.servlet.Servlet является интерфейсом, он определяет методы для всех реализаций - то, что обычно делают интерфейсы.
javax.servlet.GenericServlet является независимым от протокола. Он абстрактный, поэтому он не должен быть непосредственно создан. Это полезный класс для расширения, если вам когда-нибудь придется писать сервлет для протокола, отличного от HTTP.
javax.servlet.http.HttpServlet является абстрактным классом, который должен быть расширен, если вы хотите общаться по протоколу HTTP. Скорее всего, вам нужно только заботиться об этом.
Более точную информацию вы можете найти по ссылкам.
Ответ 4
- > Общей особенностью является то, что оба этих класса являются абстрактными классами.
- > GenericServlet - суперкласс класса HttpServlet.
- > Основное отличие состоит в том, что HttpServlet зависит от протокола, тогда как GenericServlet не зависит от протокола. Таким образом, GenericServlet может обрабатывать все типы протоколов, но HttpServlet обрабатывает только HTTP-протоколы.
- > GenericServlet принадлежит к пакету javax.servlet. HttpServlet принадлежит пакет javax.servlet.http
- > GenericServlet - абстрактный класс, который расширяет Object и реализует интерфейсы Servlet, ServletConfig и java.io.Serializable. HttpServlet - абстрактный класс, который расширяет GenericServlet и реализует интерфейс java.io.Serializable.
- > GenericServlet поддерживает только метод service() не содержит методов doGet() и doPost(). HttpServlet поддерживает также методы doGet(), doPost(), doHead() (HTTP 1.0) плюс doPut(), doOptions(), doDelete(), doTrace() (HTTP 1.1).
Ответ 5
Servlet: -
- Сервлеты выполняются как поток в веб-контейнере, а не в отдельном процессе ОС.
- В первый раз при первом запросе создается только один объект, другой запрос использует один и тот же объект.
- Сервлет независим от платформы.
- Сервлет быстрый.
GenericServlet: -
- Общие для всех протоколов.
- Использует интерфейс Servlet.
- Использовать метод службы.
HttpServlet: -
- Только для протокола HTTP.
- Наследовать класс GenericServlet.
- Используйте метод doPost, doGet вместо метода службы.
Ответ 6
HttpServlet
специфичен для протокола HTTP и, следовательно, он предоставляет методы для HTTP-глаголов: doGet
, doPost
и т.д., а также версию универсального метода service
, который принимает HTTP-специфический запрос и ответ объекты. Это особый тип Servlet
, который на самом деле является довольно минимальным интерфейсом.
GenericServlet
- базовая, нейтральная по протоколу реализация интерфейса Servlet
. Часто вы найдете аналогичные базовые реализации интерфейсов в API; в этом случае GenericServlet
добавляет немного функциональности API Servlet
: getServletName
, getServletInfo
и сквозные методы для параметров инициализации сервлета. HttpServlet
выгоды от этих дополнений путем расширения GenericServlet
.
Как правило, все, кодирующие этот API, используют HttpServlet
для реализации веб-служб HTTP, но также можно расширить или использовать GenericServlet
для реализации функций сервера/службы с использованием настраиваемого протокола или другого существующего протокола, например FTP.
Ответ 7
Servlet - это интерфейс, который содержит пять абстрактных методов, чтобы использовать сервлет, который мы должны предоставить для всех этих пяти методов, что является головной болью. Чтобы избежать этой сложности, у нас есть GenericServlet и HttpServlet для следующего уровня.
GenericServlet независим от протокола, это означает, что он может принимать любой запрос протокола.
GenericServlet может перенаправлять и включать запрос, но мы не можем перенаправить запрос.
Управление сеансом с помощью файлов cookie и HttpSession невозможно в GenericServlet.
В GenericServlet невозможно определить отдельную логику для запроса get и post.
HttpServlet зависит от протокола. это означает, что он принимает только запрос HTTP-протокола.
HttpServlet может перенаправлять и включать и перенаправлять запрос.
Управление сеансом с помощью файлов cookie и HttpSession возможно в HttpServlet.
В HttpServlet можно определить отдельную логику для запроса get и post.
Ответ 8
- > GenericServlet
может обрабатывать несколько запросов клиентов из одной формы. Принимая во внимание, что HttpServlet
может обрабатывать несколько клиентов, запрашивающих несколько форм HTML
.
- > GenericServlet
не имеет статуса и HttpServlet
имеет значение Stateful.
Ответ 9
Все классы, интерфейсы и методы, присутствующие в пакете javax.servlet
, независимы от протокола (общие для всех протоколов).
Напротив, все классы, интерфейсы и методы, присутствующие в пакете javax.servlet.http
, зависят от протокола (зависит от протокола HTTP)