web-dev-qa-db-fra.com

Qu'est-ce que Java Servlet?

J'ai lu de nombreux articles pour comprendre le servlet Java, mais je n'y suis pas parvenu.

Pouvez-vous s'il vous plaît donner une brève introduction de servlets Java (dans un langage simple). Comme quoi servlet? Quels sont les avantages? Et tout ça. 

Je ne comprends pas la différence entre les langages de programmation côté serveur (PHP, ASP) et les servlets.

222
hardik

Un servlet est simplement une classe qui répond à un type particulier de requête réseau - généralement une requête HTTP. En principe, les servlets sont généralement utilisés pour implémenter des applications Web - mais il existe également divers cadres qui fonctionnent au-dessus des servlets (par exemple, Struts) pour donner une abstraction de niveau supérieur à la requête "voici une requête HTTP, écrivez dans cette réponse HTTP". fournir.

Les servlets s'exécutent dans un conteneur servlet qui gère le côté réseau (analyse d'une requête HTTP, gestion de la connexion, etc.). L'un des conteneurs de servlets open source les plus connus est Tomcat .

262
Jon Skeet

Une servlet à la base est une classe Java; qui peut gérer les requêtes HTTP . Typiquement, la tâche interne de lire une requête HTTP et la réponse sur le réseau sont prises en charge par les conteneurs comme Tomcat. Ceci est fait de sorte qu'en tant que développeur côté serveur, vous puissiez vous concentrer sur ce qu'il faut faire avec la requête HTTP et les réponses, sans vous soucier du code qui traite des réseaux, etc. Le conteneur s'occupera de choses telles que L'objet de réponse HTTP et l'envoyer au client (par exemple un navigateur).

Maintenant, la prochaine question logique à poser est de savoir qui décide de ce qu’un conteneur est censé faire. Et la réponse est: Dans le monde Java au moins, il est guidé (notez que je n’ai pas utilisé le contrôle Word) par des spécifications. Par exemple, les spécifications de servlet (voir ressource 2) déterminent ce qu'un servlet doit être capable de faire. Donc, si vous pouvez écrire une implémentation pour la spécification, félicitations, vous venez de créer un conteneur (techniquement, les conteneurs tels que Tomcat implémentent également d'autres spécifications et réalisent des tâches délicates telles que des chargeurs de classes personnalisés, etc.

En supposant que vous ayez un conteneur, vos servlets sont maintenant des classes Java dont le cycle de vie sera maintenu par le conteneur mais leur réaction aux demandes HTTP entrantes sera décidée par vous. Vous faites cela en écrivant ce que vous voulez faire dans les méthodes prédéfinies telles que init (), doGet (), doPost (), etc. Regardez la ressource 3.

Voici un exercice amusant pour vous. Créez un servlet simple comme dans la ressource 3 et écrivez quelques instructions System.out.println () dans sa méthode de constructeur (oui, vous pouvez avoir un constructeur de servlet), init (), doGet (), méthodes de DoPost () et exécuter le servlet dans Tomcat. Consultez les journaux de la console et Tomcat.

J'espère que cela aide, un apprentissage heureux.

Ressources

  1. Regardez à quoi ressemble le servlet HTTP ici (exemple Tomcat).

  2. Servlet Spécification .

  3. Servlet simple exemple .

  4. Commencez à lire le livre en ligne/PDF Il vous permet également de télécharger le livre entier. Peut-être que cela vous aidera… si vous commencez tout juste les servlets, c’est une bonne idée de lire le matériel en même temps que l’API de servlet. c'est un processus d'apprentissage plus lent, mais beaucoup plus utile pour clarifier les bases.

74
Ayusman

En plus de ce qui précède, et juste pour souligner le saignement évidente ...

Pour beaucoup, cela est hyper évident, mais pour quelqu'un qui a l'habitude d'écrire des applications qui sont juste lancées puis terminées: une servlet passe le plus clair de son temps à ne rien faire ... attendre qu'on lui envoie quelque chose, une requête, puis y répondre . Pour cette raison, une servlet a une durée de vie: elle est initialisée et attend ensuite, en répondant à tout ce qui lui est jeté, puis est détruite. Ce qui implique qu'il doit être créé (puis détruit) par quelque chose d'autre (un framework), qu'il s'exécute dans son propre thread ou processus et qu'il ne fait rien à moins d'y être invité. Et aussi que, par quelque moyen que ce soit, il faut mettre en place un mécanisme par lequel cette "entité" peut "écouter" les demandes.

Je suggère que la lecture sur les threads, les processus et les sockets jette un peu de lumière sur ceci: c'est très différent de la façon dont fonctionne une application basique "hello world".

On pourrait faire valoir que le terme "serveur" ou "servlet" est un peu excessif. Un nom plus rationnel et plus simple pourrait être "répondant".

25
mike rodent

Servlet est une technologie côté serveur utilisée pour créer une page Web dynamique dans une application Web. En réalité, servlet est une API constituée d'un groupe de classes et d'interfaces, qui possède certaines fonctionnalités. Lorsque nous utilisons l'API Servlet, nous pouvons utiliser les fonctionnalités prédéfinies des classes et des interfaces de servlet.

Cycle de vie du servlet:

Le conteneur Web conserve le cycle de vie de l'instance de servlet.

1 . Classe de servlet chargée

2. Instance de servlet créée

3. La méthode init () est invoquée

4. Méthode service () invoquée

5. Méthode destroy () invoquée

Lorsque la demande est générée par le client (navigateur), alors web-container vérifie si le servlet est en cours d'exécution ou non, il appelle alors la méthode service () et donne la réponse au navigateur.

Si le servlet n'est pas en cours d'exécution, Web-Container suit les étapes suivantes.

1. classloader charge la classe de servlet  

2. Instancie le servlet

3. Initialise le servlet

4.invoke la méthode service ()

après avoir servi le conteneur Web de la requête, attendez un moment précis. Si cette requête arrive, elle n’appellera que la méthode service (), sinon elle appellera la méthode destroy (). 

3
Navnath Adsul

Les servlets Java sont des modules de programme Java côté serveur qui traitent et répondent aux demandes des clients et actualisent l'interface de servlet. Cela contribue à améliorer l'utilité du serveur Web avec des frais généraux, une maintenance et un support négligeables. 

Un servlet sert de médiateur entre le client et le serveur. Lorsque les modules de servlet continuent de fonctionner sur le serveur, ils peuvent recevoir les demandes du client et y réagir. Les objets demande et réaction du servlet constituent une méthode utile pour traiter les demandes HTTP et renvoyer des informations sur le contenu au client. 

Dans la mesure où un servlet est coordonné avec le dialecte Java, il présente en outre tous les avantages Java, par exemple une mobilité élevée, une autonomie de scène, la sécurité et la disponibilité de la base de données Java.

2

Qu'est-ce qu'un servlet?

  • Un servlet est simplement une classe qui répond à un type particulier de requête réseau - généralement une requête HTTP. 
  • En principe, les servlets sont généralement utilisés pour implémenter des applications Web - mais il existe également divers cadres qui fonctionnent au-dessus des servlets (par exemple, Struts) pour donner une abstraction de niveau supérieur à la requête "voici une requête HTTP, écrivez dans cette réponse HTTP". fournir.
  • Les servlets s'exécutent dans un conteneur de servlets qui gère le côté réseau (par exemple, l'analyse d'une requête HTTP, la gestion de connexion, etc.). Tomcat est l'un des conteneurs de servlets open source les plus connus.

  • Dans un paradigme demande/réponse, un serveur Web ne peut servir que des pages statiques au client.

  • Pour servir des pages dynamiques, nous avons besoin de Servlets.
  • Servlet n'est qu'un programme Java
  • Ce programme Java n’a pas de méthode principale. Il n'y a que quelques méthodes de rappel.
  • Comment le serveur Web communique-t-il avec le servlet? Via un conteneur ou un moteur Servlet.
  • Servlet vit et meurt dans un conteneur Web.
  • Le conteneur Web est responsable de l'appel des méthodes dans les servlets. Il sait quelles méthodes de rappel le Servlet a.

Flux de la demande

  • Le client envoie une requête HTTP au serveur Web
  • Le serveur Web transmet cette demande HTTP au conteneur Web.
  • Étant donné que Servlet ne peut pas comprendre le protocole HTTP, c'est un programme Java, il ne comprend que les objets. Le conteneur Web convertit cette demande en objet de demande valide.
  • Le conteneur Web lance un fil pour chaque requête 
  • Toute la logique métier va dans les méthodes de rappel doGet () ou doPost () dans les servlets
  • Servlet crée un objet de réponse Java et l'envoie au conteneur. Il convertit à nouveau en réponse HTTP pour l'envoyer au client

Comment le conteneur sait-il quel client Servlet a demandé?

  • Il y a un fichier appelé web.xml
  • Ceci est le fichier maître d'un conteneur Web.
  • Vous avez des informations sur servlet dans ce fichier- 

    • servlets
      • Nom du servlet
      • Classe de servlet
    • servlet-mappings - le chemin tel que/Login ou/Notifications est mappé ici
      • Nom du servlet
      • modèle d'url
    • etc
  • Chaque servlet de l'application Web doit avoir une entrée dans ce fichier.

  • Donc, cette recherche se passe comme-url-pattern -> nom-servlet -> classe-servlet

Comment "installer" des servlets? * Les objets de servlet sont hérités de la bibliothèque javax.servlet. *. Tomcat et Spring peuvent être utilisés pour utiliser ces objets en fonction du cas d'utilisation.

Ref- Regardez ceci sur 1.5x- https://www.youtube.com/watch?v=tkFRGdUgCsE . Cela a une explication géniale.

2
Sankalp

Servlet est une classe Java pour répondre à une requête HTTP et produire une réponse HTTP ...... lorsque nous créons une page avec HTML, ce serait une page statique. Pour la rendre dynamique, nous utilisons SERVLET {en mots simples on peut comprendre} Pour utiliser servlet, JSP l’emporte sur le code et la balise HTML.

1
Roopam

Les servlets sont des classes Java qui exécutent certaines fonctions lorsqu'un utilisateur de site Web demande une URL à un serveur. Ces fonctions peuvent effectuer des tâches telles que la sauvegarde de données dans une base de données, l'exécution d'une logique et la restitution des informations (telles que les données JSON) nécessaires au chargement d'une page.

La plupart des programmes Java utilisent une méthode main() qui exécute le code lors de l'exécution du programme. Les servlets Java contiennent les méthodes doGet() et doPost() qui agissent exactement comme la méthode main(). Ces fonctions sont exécutées lorsque l'utilisateur fait une demande GET ou POST à l'URL adressée à ce servlet. Ainsi, l'utilisateur peut charger une page pour une requête GET ou stocker les données d'une requête POST.

Lorsque l'utilisateur envoie une demande GET ou POST, le serveur lit le @WebServlet en haut de chaque classe de servlet de votre répertoire pour décider quelle classe de servlet appeler. Par exemple, supposons que vous ayez une classe ChatBox et que cela se trouve en haut:

@WebServlet("/chat")
public class ChatBox extends HttpServlet {

Lorsqu'un utilisateur demande l'URL /chat, votre classe ChatBox sera exécutée.

0
kundus

En tant que cet article décrit, un servlet est une méthode standard d’extension d’un serveur Java et d’accès à ses fonctionnalités.

Chaque servlet peut être vu comme un petit serveur (d'où son nom), qui accède à la demande et à la réponse modélisées en code Java, ainsi qu'à d'autres données de contexte, comme la session.

Avec ceux-ci en main, le code Java du servlet peut s’interfacer avec tous les éléments nécessaires pour donner une réponse, y compris le transfert à une page JSP pour générer une vue HTML.

0
mtyson