web-dev-qa-db-fra.com

Quelle est la différence entre GenericServlet, HttpServlet et un servlet?

Je cherchais la différence exacte entre javax.servlet.http.HttpServlet, javax.servlet.GenericServlet et javax.Servlet incapable de le trouver 

"Différence Exacte" signifie

  1. Usage
  2. Raison de l'existence de javax.servlet.GenericServlet
21
Rony

"Différence exacte" signifie quoi? L'API répertorie les différences exactes.

Servlet est une interface définissant ce qu'un servlet doit implémenter.

GenericServlet est simplement cela, un servlet générique, indépendant du protocole.

HttpServlet est une servlet liée spécifiquement au protocole HTTP.

Est-ce que vous demandez quand vous voulez {utiliser} _ ceux-là?

En général, vous étendriez HttpServlet pour implémenter la couche Web d'une application. 

Vous pouvez implémenter Servlet si vous écrivez votre propre conteneur ou si vous manipulez tout vous-même. Vous pouvez étendre GenericServlet pour gérer un protocole différent, mais ce n’est peut-être pas le cas.

24
Dave Newton

javax.servlet

Servlet est une technologie Web côté serveur. Comme son nom l'indique, il répond à une demande du client et reçoit une réponse du serveur. Vous devez implémenter javax.Servlet (Interface) pour gérer un travail de servlet.

javax.servlet.GenericServlet

Signature: 

public abstract class GenericServlet extends Java.lang.Object implements Servlet, ServletConfig, Java.io.Serializable
  1. GenericServlet définit un servlet générique, indépendant du protocole.
  2. GenericServlet donne un plan et facilite la rédaction d'un servlet.
  3. GenericServlet fournit des versions simples des méthodes de cycle de vie Init et destroy et des méthodes de l'interface ServletConfig.
  4. GenericServlet implémente la méthode log, déclarée dans l'interface ServletContext.
  5. Pour écrire une servlet générique, il suffit de remplacer la méthode Abstract service ().

javax.servlet.http.HttpServlet

Signature: 

public abstract class HttpServlet extends GenericServlet implements Java.io.Serializable
  1. HttpServlet définit un servlet spécifique au protocole HTTP.
  2. HttpServlet donne un plan pour le servlet Http et facilite leur écriture
  3. HttpServlet étend GenericServlet et hérite donc duproperties GenericServlet.
12
K_Anas

javax.servlet.Servlet est une interface, elle définit des méthodes pour toutes les implémentations - c'est ce que font habituellement les interfaces.

javax.servlet.GenericServlet est indépendant du protocole. C'est abstrait, donc il ne faut pas l'instancier directement. C'est une classe utilisable à étendre si vous devez un jour écrire un servlet pour un protocole autre que HTTP.

javax.servlet.http.HttpServlet est une classe abstraite à étendre si vous souhaitez communiquer via le protocole HTTP. Très probablement, vous ne devez vous soucier que de celui-ci.

Des informations plus précises que vous pouvez trouver derrière les liens.

10
Mikko Maunu

-> Une caractéristique commune est que ces deux classes sont des classes abstraites.

-> GenericServlet est une super classe de la classe HttpServlet.

-> La principale différence est que HttpServlet est dépendant du protocole alors que GenericServlet est indépendant du protocole. Donc, GenericServlet peut gérer tous les types de protocoles, mais HttpServlet ne gère que les protocoles spécifiques à HTTP.

-> GenericServlet appartient au package javax.servlet. HttpServlet appartient au package javax.servlet.http

-> GenericServlet est une classe abstraite qui étend Object et implémente les interfaces Servlet, ServletConfig et Java.io.Serializable. HttpServlet est une classe abstraite qui étend GenericServlet et implémente l'interface Java.io.Serializable.

-> GenericServlet prend en charge que la méthode service () ne contient pas les méthodes doGet () et doPost (). Le support HttpServlet prend également en charge les méthodes doGet (), doPost (), doHead () (HTTP 1.0), ainsi que doPut (), doOptions (), doDelete (), doTrace () (HTTP 1.1).

7
Jaydip Baldha

Servlet: -

  1. Les servlets s'exécutent en tant que thread dans un conteneur Web plutôt que dans un processus de système d'exploitation distinct.
  2. Un seul objet est créé pour la première fois lors de la première demande. D'autres demandes partagent le même objet.
  3. Servlet est indépendant de la plateforme.
  4. Servlet est rapide. 

GenericServlet: -

  1. Général pour tout protocole.
  2. Implémente l'interface de servlet.
  3. Utilisez la méthode de service.

HttpServlet: -

  1. Seulement pour le protocole HTTP.
  2. Hériter de la classe GenericServlet.
  3. Utilisez doPost, méthode doGet au lieu de la méthode service.
3
Mohit

HttpServlet est spécifique au protocole HTTP et fournit donc des méthodes pour les verbes HTTP: doGet, doPost, etc., ainsi qu'une version de la méthode générique service qui prend des objets de requête et de réponse spécifiques à HTTP. C'est un type spécial de Servlet qui est en fait une interface plutôt minimale.

GenericServlet est l'implémentation de base de l'interface Servlet de base, indépendante du protocole. Vous trouverez souvent des implémentations de base similaires d'interfaces dans une API; dans ce cas, GenericServlet ajoute un peu de fonctionnalité à l'API Servlet: getServletName, getServletInfo et aux méthodes d'intercommunication pour les paramètres init du servlet. HttpServlet profite de ces ajouts en étendant GenericServlet

Généralement, tout le monde utilisant cette API utilise HttpServlet pour implémenter les services Web HTTP, mais vous pouvez également étendre ou utiliser GenericServlet pour implémenter la fonctionnalité serveur/service à l'aide d'un protocole personnalisé ou d'un autre protocole existant, par exemple FTP.

2
pb2q
  1. Interface de servlet
    C'est la super interface pour GenericServlet et HttpServlet. Il contient 5 méthodes abstraites et toutes héritées par GenericServlet et HttpServlet .
    • Problème
      Si vous voulez créer un servlet en implémentant l'interface Servlet, toutes les 5 méthodes abstraites de l'interface doivent être remplacées, même si le programmeur n'est pas intéressé
    • Utilisation
      Implémentez l'interface Servlet uniquement si vous souhaitez développer votre propre conteneur.
  2. GenericServlet
    C’est la sous-classe immédiate de l’interface Servlet et de la super classe de HttpServlet. Dans cette classe, une méthode abstraite existe: service (). 4 autres méthodes abstraites sont implémentées dans cette classe .
    • Problème
      Toutes les méthodes sont concrètes sauf la méthode service (). Vous devez donc l'implémenter en tant que méthode de rappel.
    • Utilisation
      Il est indépendant du protocole et peut donc être utilisé avec n’importe quel protocole comme FTP, SMTP, HTTP, etc.
  3. HttpServlet
    Sa sous-classe des interfaces GenericServlet et Servlet. La super classe immédiate de HttpServlet est GenericServlet. HttpServlet ne contient aucune méthode abstraite. Bien que le HttpServlet ne contienne aucune méthode abstraite, les concepteurs le déclarent comme une classe abstraite afin de ne permettre à personne de créer un objet directement car un objet Servlet est créé par le conteneur de servlet .
    • Problème
      HttpServlet dépend du protocole et est utilisé spécifique au protocole HTTP uniquement.
    • Utilisation
      la méthode service () n'a pas besoin d'être remplacée. Il peut être remplacé par les méthodes doGet () ou doPost () avec les mêmes paramètres. Sa méthode la plus utilisée pour créer un servlet.


      hiérarchie
      Référence: way2Java.com
2
Varshil Patel

Servlet est une interface qui contient cinq méthodes abstraites. Afin d'utiliser servlet, nous devons fournir une implémentation pour toutes ces cinq méthodes, ce qui est un casse-tête. Afin d'éviter cette complexité, nous avons GenericServlet et HttpServlet pour le niveau suivant.

GenericServlet est indépendant du protocole, cela signifie qu'il peut accepter n'importe quelle demande de protocole . GenericServlet peut transférer et inclure une demande, mais nous ne pouvons pas rediriger la demande . La gestion de session avec des cookies et HttpSession n'est pas possible dans GenericServlet . Dans GenericServlet, il n'est pas possible de définir une logique distincte pour les requêtes get et post.

HttpServlet dépend du protocole. cela signifie qu’elle accepte uniquement les demandes de protocole HTTP . HttpServlet peut transférer, inclure et rediriger une demande . La gestion de session avec les cookies et HttpSession est possible dans HttpServlet . Dans HttpServlet, il est possible de définir une logique séparée pour obtenir et poster la demande.

2
Dnyaneshwar Tambe

-> GenericServlet peut traiter plusieurs demandes de clients à partir d'un seul formulaire. Alors que HttpServlet peut traiter plusieurs clients demandant à partir de plusieurs formulaires HTML.

-> GenericServlet est sans état et HttpServlet est avec état.

1
rajkannoju

Toutes les classes, interfaces et méthodes présentes dans le package javax.servlet sont des protocoles indépendants (génériques pour tous les protocoles).

En revanche, toutes les classes, interfaces et méthodes présentes dans le package javax.servlet.http sont dépendantes du protocole dépendantes (spécifiques au protocole HTTP).

0
rajasekhar