webentwicklung-frage-antwort-db.com.de

Was ist der Unterschied zwischen GenericServlet, HttpServlet und einem Servlet?

Ich habe nach genauem Unterschied zwischen javax.servlet.http.HttpServlet, javax.servlet.GenericServlet und javax.Servlet gesucht und konnte es nicht herausfinden. 

"Exakter Unterschied" bedeutet

  1. Verwendungszweck
  2. Grund für javax.servlet.GenericServlet Existenz
21
Rony

"Exakter Unterschied" bedeutet was? Die API listet die genauen Unterschiede auf.

Servlet ist eine Schnittstelle, die definiert, was ein Servlet implementieren muss.

GenericServlet ist genau das, ein generisches, protokollunabhängiges Servlet.

HttpServlet ist ein speziell an das HTTP-Protokoll gebundenes Servlet.

Fragen Sie, wann Sie verwenden eine von denen?

Im Allgemeinen würden Sie HttpServlet erweitern, um die Webebene einer Anwendung zu implementieren.

Sie können Servlet implementieren, wenn Sie Ihren eigenen Container schreiben oder alles selbst handhaben. Möglicherweise erweitern Sie GenericServlet, um ein anderes Protokoll zu verarbeiten, möglicherweise jedoch nicht.

24
Dave Newton

javax.servlet

Servlet ist eine serverseitige Webtechnologie. Wie der Name schon sagt, bedient er eine Client-Anfrage und erhält eine Antwort vom Server. Sie müssen javax.Servlet (Interface) implementieren, um eine Servlet-Arbeit ausführen zu können.

javax.servlet.GenericServlet

Unterschrift: 

public abstract class GenericServlet extends Java.lang.Object implements Servlet, ServletConfig, Java.io.Serializable
  1. GenericServlet definiert ein generisches, protokollunabhängiges Servlet.
  2. GenericServlet gibt eine Blaupause und macht das Schreiben von Servlets einfacher.
  3. GenericServlet stellt einfache Versionen der Lebenszyklusmethoden Init und destroy und der Methoden in der ServletConfig-Schnittstelle bereit.
  4. GenericServlet implementiert die Protokollmethode, die in der ServletContext-Schnittstelle deklariert ist.
  5. Um ein generisches Servlet zu schreiben, reicht es aus, die Abstract service () -Methode zu überschreiben.

javax.servlet.http.HttpServlet

Unterschrift: 

public abstract class HttpServlet extends GenericServlet implements Java.io.Serializable
  1. HttpServlet definiert ein HTTP-Protokoll-spezifisches Servlet.
  2. HttpServlet gibt eine Blaupause für das Http-Servlet und erleichtert das Schreiben von
  3. HttpServlet erweitert das GenericServlet und erbt daher dasproperties GenericServlet.
12
K_Anas

javax.servlet.Servlet ist eine Schnittstelle. Sie definiert Methoden für alle Implementierungen. Dies ist, was Schnittstellen normalerweise tun.

javax.servlet.GenericServlet ist protokollunabhängig. Es ist abstrakt, also nicht direkt instanziiert werden. Es ist eine nützliche Klasse, die erweitert werden kann, wenn Sie eines Tages ein anderes Servlet als HTTP schreiben müssen.

javax.servlet.http.HttpServlet ist eine abstrakte Klasse, die erweitert werden soll, wenn Sie über das HTTP-Protokoll kommunizieren möchten. Wahrscheinlich müssen Sie sich nur um diesen kümmern.

Genauere Informationen finden Sie hinter den Links.

10
Mikko Maunu

-> Ein gemeinsames Merkmal ist, dass diese beiden Klassen abstrakte Klassen sind.

-> GenericServlet ist eine Superklasse der HttpServlet-Klasse.

-> Der Hauptunterschied besteht darin, dass HttpServlet protokollabhängig ist, während GenericServlet protokollunabhängig ist. GenericServlet kann also alle Arten von Protokollen verarbeiten, HttpServlet dagegen nur HTTP-spezifische Protokolle.

-> GenericServlet gehört zum javax.servlet-Paket. HttpServlet gehört zum Paket javax.servlet.http

-> GenericServlet ist eine abstrakte Klasse, die Object erweitert und die Schnittstellen Servlet, ServletConfig und Java.io.Serializable implementiert. HttpServlet ist eine abstrakte Klasse, die GenericServlet erweitert und die Java.io.Serializable-Schnittstelle implementiert.

-> GenericServlet unterstützt nur die Methode service (), die die Methoden doGet () und doPost () nicht enthält. HttpServlet unterstützt auch die Methoden doGet (), doPost (), doHead () (HTTP 1.0) sowie doPut (), doOptions (), doDelete (), doTrace () (HTTP 1.1).

7
Jaydip Baldha

Servlet: -

  1. Die Servlets werden als Thread in einem Web-Container statt in einem separaten Betriebssystemprozess ausgeführt.
  2. Beim ersten Aufruf wird nur ein Objekt erstellt, bei anderen Anforderungen wird dasselbe Objekt verwendet.
  3. Servlet ist plattformunabhängig.
  4. Servlet ist schnell. 

GenericServlet: -

  1. Allgemein für alle Protokolle.
  2. Implementiert die Servlet-Schnittstelle.
  3. Verwenden Sie die Service-Methode.

HttpServlet: -

  1. Nur für HTTP-Protokoll.
  2. Inherit GenericServlet-Klasse.
  3. Verwenden Sie die Methode doPost, doGet anstelle der Servicemethode.
3
Mohit

HttpServlet ist spezifisch für das HTTP-Protokoll und stellt daher Methoden für die HTTP-Verben bereit: doGet, doPost usw. und eine Version der generischen service-Methode, die HTTP-spezifische Anforderungs- und Antwortobjekte akzeptiert. Es ist ein spezieller Typ von Servlet, der eigentlich nur ein minimales Interface ist.

GenericServlet ist die grundlegende, protokollneutrale Implementierung der Servlet-Schnittstelle. Häufig finden Sie ähnliche grundlegende Implementierungen von Schnittstellen in einer API. In diesem Fall fügt GenericServlet der Servlet-API einige Funktionen hinzu: getServletName, getServletInfo und Durchlaufmethoden für die Servlet-Init-Parameter. HttpServlet profitiert von diesen Ergänzungen durch die Erweiterung von GenericServlet

Im Allgemeinen verwenden alle, die für diese API codieren, HttpServlet zum Implementieren von HTTP-Webdiensten. Sie können GenericServlet jedoch auch zum Implementieren von Server-/Servicefunktionen mithilfe eines benutzerdefinierten Protokolls oder eines anderen vorhandenen Protokolls, z.

2
pb2q
  1. Servlet-Schnittstelle
    Dies ist die Super-Schnittstelle für GenericServlet und HttpServlet. Es enthält 5 abstrakte Methoden, die alle von GenericServlet und HttpServlet ..__ übernommen werden.
    • Problem
      Wenn Sie ein Servlet erstellen möchten, indem Sie die Servlet-Schnittstelle implementieren, sollten alle 5 abstrakten Methoden der Schnittstelle Servlet überschrieben werden, obwohl der Programmierer nicht interessiert ist
    • Verwendungszweck
      Implementieren Sie die Servlet-Schnittstelle nur, wenn Sie einen eigenen Container entwickeln möchten.
  2. GenericServlet
    Dies ist die unmittelbare Unterklasse der Servlet-Schnittstelle und der Superklasse von HttpServlet. In dieser Klasse gibt es eine abstrakte Methode: service (). Andere 4 abstrakte Methoden sind in dieser Klasse implementiert .
    • Problem
      Alle Methoden sind außer der service () -Methode konkret. Sie müssen sie also als Callback-Methode implementieren.
    • Verwendungszweck
      Es ist protokollunabhängig und kann mit jedem Protokoll wie FTP, SMTP, HTTP usw. verwendet werden.
  3. HttpServlet
    Die Unterklasse der GenericServlet- und der Servlet-Schnittstelle. Die unmittelbare Superklasse von HttpServlet ist GenericServlet. HttpServlet enthält keine abstrakten Methoden. Obwohl das HttpServlet keine abstrakten Methoden enthält, wird es von den Designers als abstrakte Klasse deklariert, um nicht zuzulassen, dass jemand ein Objekt direkt erstellt, da ein Servlet-Objekt vom Servlet-Container erstellt wird .
    • Problem
      HttpServlet ist protokollabhängig und wird nur für das HTTP-Protokoll verwendet.
    • Verwendungszweck
      die Methode service () muss nicht überschrieben werden. Es kann durch die Methoden doGet () oder doPost () mit denselben Parametern ersetzt werden. Die am häufigsten verwendete Methode zum Erstellen von Servlets.


      Hierarchie
      Referenz: way2Java.com
2
Varshil Patel

Servlet ist eine Schnittstelle, die fünf abstrakte Methoden enthält. Um Servlet verwenden zu können, müssen wir eine Implementierung für all diese fünf Methoden bereitstellen, was Kopfschmerzen bedeutet. Um diese Komplexität zu vermeiden, haben wir GenericServlet und HttpServlet für die nächste Ebene.

GenericServlet ist protokollunabhängig, dh es kann jede Protokollanforderung annehmen. GenericServlet kann eine Anforderung weiterleiten und enthalten, die Anforderung kann jedoch nicht umgeleitet werden. Sitzungsverwaltung mit Cookies und HttpSession ist in GenericServlet nicht möglich. In GenericServlet ist es nicht möglich, eine separate Logik für die Get- und Post-Anforderung zu definieren.

HttpServlet ist protokollabhängig. Dies bedeutet, dass nur HTTP-Protokollanfragen akzeptiert werden. HttpServlet kann eine Anforderung weiterleiten, einschließen und umleiten. Sitzungsverwaltung mit Cookies und HttpSession ist in HttpServlet möglich. In HttpServlet ist es möglich, eine separate Logik für zu definieren Anfrage erhalten und posten.

2

-> GenericServlet kann mehrere Clientanfragen aus einem einzigen Formular bearbeiten. Während HttpServlet mehrere Clients verarbeiten kann, die von mehreren HTML-Formularen anfordern.

-> GenericServlet ist zustandslos und HttpServlet ist zustandsbehaftet.

1
rajkannoju

Alle Klassen, Schnittstellen und Methoden, die im Paket javax.servlet enthalten sind, sind protocol independent (generisch für alle Protokolle).

Im Gegensatz dazu sind alle Klassen, Schnittstellen und Methoden, die im Paket javax.servlet.http vorhanden sind, Protokoll abhängig (spezifisch für das HTTP-Protokoll).

0
rajasekhar