Qu'est-ce que Java Servlet?

277

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 des servlets java (dans un langage simple). Comme quoi est servlet? Quels sont les avantages? Et tout ça.

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

hardik
la source
38
Passez la servletsbalise sous votre question jusqu'à ce qu'une boîte noire apparaisse. Cliquez dessus le lien info .
BalusC
1
Servlets Vous pouvez le regarder. Je pense que ce sont des détails et authentiques.
shohan

Réponses:

336

Un servlet est simplement une classe qui répond à un type particulier de requête réseau - le plus souvent une requête HTTP. Fondamentalement, 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 au niveau "voici une demande HTTP, écrivez dans cette réponse HTTP" qui servlets fournir.

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

Jon Skeet
la source
16
Les servlets sont des extraits de code java appelés par le serveur Web à l' intérieur du serveur Web lui-même. Si vous voulez quelque chose ressemblant à PHP ou ASP, vous avez besoin de JSP (qui sont un type spécial de servlets)
Thorbjørn Ravn Andersen
3
Merci pour la réponse, mais je ne peux toujours pas obtenir l'utilisation réelle des servlets, il serait préférable que vous puissiez expliquer par exemple comme la situation où nous pouvons utiliser des servlets. Je n'ai pas compris l'utilisation de servlet comme ce que peut faire un servlet que les autres langages de programmation côté serveur ne peuvent pas faire.
hardik
4
@Hardik: ce n'est pas qu'ils peuvent faire quelque chose qui ne peut pas être fait d'une autre manière. Les servlets ne sont qu'une technologie courante pour le travail Java côté serveur. Les servlets ne sont pas une langue - et ASPX non plus. Les deux sont des plates-formes que vous utilisez conjointement avec un autre langage - généralement Java dans le cas des servlets.
Jon Skeet
7
@Hardik: Comme je l'ai écrit dans mon article, les servlets sont des classes qui fonctionnent à l'intérieur d'un conteneur de servlets. Le conteneur de servlets peut héberger plusieurs servlets en même temps.
Jon Skeet
5
@Hardik: Oui, exactement. Le servlet peut fournir le code HTML pour afficher le formulaire et également agir sur la soumission. Les servlets peuvent également être utilisés pour implémenter des services Web. Ils peuvent être utilisés pour d'autres protocoles en dehors de HTTP, mais HTTP est en très grande majorité le transport le plus courant géré par les servlets.
Jon Skeet
102

Un servlet à sa base est une classe java; qui peut gérer les requêtes HTTP. En règle générale, le contenu interne de la lecture d'une demande et d'une réponse HTTP via le câble est pris en charge par les conteneurs comme Tomcat. Ceci est fait pour qu'en tant que développeur côté serveur, vous puissiez vous concentrer sur ce qu'il faut faire avec la demande et les réponses HTTP et ne pas vous soucier de traiter du code qui traite de la mise en réseau, etc. Objet de réponse HTTP et envoyez-le 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 mot contrôlé) par des spécifications. Par exemple, les spécifications des servlets (voir ressource 2) dictent 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 comme Tomcat implémentent également d'autres spécifications et font des choses délicates comme des chargeurs de classe personnalisés, etc., mais vous avez l'idée).

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 requêtes HTTP entrantes sera décidée par vous. Pour ce faire, écrivez ce que vous voulez faire dans les méthodes prédéfinies comme 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 constructeur (oui, vous pouvez avoir un constructeur d'un servlet), init (), doGet (), doPost () et exécutez le servlet dans tomcat. Voir les journaux de la console et les journaux tomcat.

J'espère que cela vous aidera, bon apprentissage.

Ressources

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

  2. Spécification de servlet .

  3. Exemple de servlet simple .

  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 ne faites que démarrer des servlets, c'est peut-être une bonne idée de lire le matériel avec l'API de servlet. c'est un processus d'apprentissage plus lent, mais il est beaucoup plus utile pour clarifier les bases.

Ayusman
la source
12
Les réponses de lien uniquement sont déconseillées sur Stack Overflow, car les ressources auxquelles elles sont liées peuvent devenir indisponibles à l'avenir ou peuvent changer. Pensez à résumer le contenu pertinent du lien dans votre réponse pour l'améliorer.
6
@Cupcake apprécie vos commentaires constructifs. J'ai essayé d'ajouter de la viande à la réponse. Merci d'avoir amélioré la communauté.
Ayusman
34

En plus de ce qui précède, et juste pour souligner l'évidence qui saigne ...

Pour beaucoup, cela est hyper évident, mais pour quelqu'un qui a l'habitude d'écrire des applications qui sont simplement exécutées puis terminées: une servlet passe la plupart de son temps à ne rien faire ... en attendant d'être envoyé quelque chose, une demande, puis d'y répondre . Pour cette raison, un servlet a une durée de vie: il est initalisé puis attend, répondant à tout ce qui lui est lancé, puis est détruit. Ce qui implique qu'il doit être créé (et ensuite 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 sauf si on le lui demande. Et aussi que, d'une manière ou d'une autre, un mécanisme doit être mis en œuvre par lequel cette "entité" peut "écouter" les demandes.

Je suggère que la lecture sur les threads, les processus et les sockets éclairera ceci: c'est assez différent de la façon dont fonctionne une application de base "hello world".

On pourrait faire valoir que le terme «serveur» ou «servlet» est un peu exagéré. Un nom plus rationnel et plus simple pourrait être «répondeur». La raison du choix du terme "serveur" est historique: les premiers arrangements de ce type étaient des "serveurs de fichiers", où plusieurs terminaux utilisateur / client demanderaient un fichier spécifique à une machine centrale, et ce fichier serait alors "servi" "comme un livre ou une assiette de fish and chips.

Mike rongeur
la source
1
Est-il incorrect de voir la servlet comme analogue à un "contrôleur" dans un framework MVC standard?
user2490003
Personnellement, je ne vois pas comment cette analogie tient. J'aurais aussi tendance à penser que les gens qui pensent que ma réponse est utile (aide à clarifier les choses pour eux) pourraient bien être confus par votre suggestion.
mike rodent
Je pense que cette réponse est utile. Mais je me suis également demandé (indépendamment de cette réponse, et avant de la lire) la même question que @ user2490003 posée ci-dessus. Quelle est la différence entre un servlet et un contrôleur de framework MVC? Pourquoi l'analogie par user2490003 ne tient-elle pas?
cellepo
Un arrangement MVC est plus compliqué et pourtant moins compliqué. Cela n'implique pas nécessairement l'attente d'une entrée. En définissant l'idée de base d'une configuration serveur-client, c'est cette simplicité que je cherche à souligner. Regardez le diagramme MVC de base ici: en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller . Dans une configuration client-serveur simple, l'utilisateur n'interagit qu'avec le client, pas avec deux objets, à savoir une vue et un contrôleur. Avec MVC, il peut également y avoir plusieurs vues, plusieurs contrôleurs et plusieurs modèles. Et attendre l'entrée n'est pas (nécessairement) impliqué.
mike rodent
En plus de ce qui précède, un serveur peut servir plusieurs utilisateurs, alors qu'il n'y a pas une telle exigence avec une configuration MVC. Une configuration MVC appartient au monde de l'informatique classique, c'est-à-dire des applications autonomes. Avec les serveurs, nous faisons notre premier pas dans l'univers de l'informatique interactive. Ce n'est pas que l'analogie soit 100% erronée, plus 90% erronée, et surtout que toute analogie est tout simplement inutile si elle n'aide réellement personne ou quoi que ce soit de quelque manière que ce soit. Un arrangement serveur-client est si simple qu'une idée que personne n'a besoin d'analogies, de quelque nature que ce soit , pour comprendre.
mike rodent
10

Qu'est-ce qu'un servlet?

  • Un servlet est simplement une classe qui répond à un type particulier de requête réseau - le plus souvent une requête HTTP.
  • Fondamentalement, 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 au niveau "voici une demande HTTP, écrivez dans cette réponse HTTP" qui servlets fournir.
  • Les servlets s'exécutent dans un conteneur de servlets qui gère le côté réseau (par exemple, analyser une requête HTTP, gérer la connexion, etc.). L'un des conteneurs de servlets open source les plus connus est Tomcat.

  • Dans un paradigme de 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 rien d'autre qu'un programme Java
  • Ce programme Java n'a pas de méthode principale. Il n'a que quelques méthodes de rappel.
  • Comment le serveur Web communique-t-il avec le servlet? Via conteneur ou moteur Servlet.
  • Servlet vit et meurt dans un conteneur Web.
  • Le conteneur Web est chargé d'appeler des méthodes dans un servlet. Il connaît les méthodes de rappel du Servlet.

Déroulement 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 HTTP, c'est un programme Java, il ne comprend que les objets, donc le conteneur Web convertit cette demande en objet de demande valide
  • Le conteneur Web fait tourner un fil pour chaque demande
  • Toute la logique métier va à l'intérieur des méthodes de rappel doGet () ou doPost () à l'intérieur des servlets
  • Le servlet crée un objet de réponse Java et l'envoie au conteneur. Il convertit à nouveau cette réponse en 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 le servlet dans ce fichier-

    • servlets
      • Nom du servlet
      • Classe de servlet
    • servlet-mappings - le chemin comme / Login ou / Notifications est mappé ici dans
      • 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 produit comme - modèle d'URL -> nom de servlet -> classe de servlet

Comment "installer" les servlets? * Eh bien, les objets servlet sont hérités de la bibliothèque-javax.servlet. *. Tomcat et Spring peuvent être utilisés pour utiliser ces objets pour s'adapter au cas d'utilisation.

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

Sankalp
la source
1
Un lien vers une solution est le bienvenu, mais assurez-vous que votre réponse est utile sans lui: ajoutez du contexte autour du lien pour que vos collègues aient une idée de ce que c'est et pourquoi il est là, puis citez la partie la plus pertinente de la page que vous '' relier à au cas où la page cible n'est pas disponible. Les réponses qui ne sont guère plus qu'un lien peuvent être supprimées.
Mogsdad
1
Notez que le monde a évolué. En 2020, nous utilisons des annotations sur le code au lieu d'un fichier de configuration basé sur une chaîne centrale en XML.
Thorbjørn Ravn Andersen
5

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

Cycle de vie de Servlet:

Le conteneur Web maintient 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 requête est soulevée par le client (navigateur), le conteneur Web vérifie si la servlet est en cours d'exécution ou non, si oui, il appelle la méthode service () et donne la réponse au navigateur.

Lorsque le servlet n'est pas en cours d'exécution, le conteneur Web suit les étapes suivantes.

1. classloader charger la classe de servlet

2. Instancie la servlet

3. Initialise le servlet

4. invoquer la méthode service ()

après avoir servi le conteneur Web de demande, attendez une heure spécifique, à ce moment-là, si la demande arrive, elle appelle uniquement la méthode service (), sinon elle appelle la méthode destroy ().

Navnath Adsul
la source
5

Si vous êtes débutant, je pense que ce tutoriel peut donner une idée de base sur ce qu'est le servlet ...

Certains points précieux sont ci-dessous à partir du lien donné.

La technologie Servlet est utilisée pour créer une application Web qui réside côté serveur et génère une page Web dynamique.

Le servlet peut être décrit de plusieurs façons, selon le contexte.

  • Servlet est une technologie utilisée pour créer une application Web.
  • Servlet est une API qui fournit de nombreuses interfaces et classes, y compris des documentations.
  • Le servlet est une interface qui doit être implémentée pour créer n'importe quel servlet.
  • Servlet est une classe qui étend les capacités des serveurs et répond à la demande entrante. Il peut répondre à tout type de demandes.
  • Le servlet est un composant Web qui est déployé sur le serveur pour créer une page Web dynamique. Référence: ici .
Sandun Madola
la source
1
C'est un très bon tutoriel qui explique les concepts de base
Nikhil Sahu
3

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 du servlet. Il aide à améliorer l'utilité du serveur Web avec une surcharge, un entretien et une assistance négligeables.

Une servlet sert de médiateur entre le client et le serveur. Comme les modules de servlet continuent de fonctionner sur le serveur, ils peuvent obtenir et réagir aux demandes du client. Les objets de demande et de réaction de la servlet offrent une méthode utile pour traiter les demandes HTTP et renvoyer les informations de contenu au client.

Puisqu'un servlet est coordonné avec le dialecte Java, il présente en outre tous les points forts de Java, par exemple, une grande mobilité, une autonomie de scène, la sécurité et la disponibilité de la base de données Java.

Poorna Senani Gamage
la source
2

Servlet est une classe java pour répondre à une requête HTTP et produire une réponse HTTP ...... quand nous faisons une page avec l'utilisation de HTML alors ce serait une page statique donc pour la rendre dynamique nous utilisons SERVLET {en mots simples on peut comprendre} Pour utiliser servlet est surmonté par JSP il utilise le code et la balise HTML à la fois en soi ..

Roopam
la source
2

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 l'enregistrement de données dans une base de données, l'exécution de la logique et le renvoi des informations (telles que les données JSON) nécessaires au chargement d'une page.

La plupart des programmes Java utilisent une main()méthode qui exécute du code lors de l'exécution du programme. Servlets Java contiennent doGet()et les doPost()méthodes qui agissent comme la main()méthode. Ces fonctions sont exécutées lorsque l'utilisateur fait une demande GETou POSTà l'URL mappée à ce servlet. Ainsi, l'utilisateur peut charger une page pour une GETdemande ou stocker des données à partir d'unPOST demande.

Lorsque l'utilisateur envoie une demande GETou POST, le serveur lit la partie @WebServletsupérieure de chaque classe de servlet dans votre répertoire pour décider quelle classe de servlet appeler. Par exemple, supposons que vous ayez une classe ChatBox et que celle-ci soit en haut:

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

Lorsqu'un utilisateur demande le /chat URL, votre ChatBoxclasse doit être exécutée.

kundus
la source
0

Comme cet article le décrit, un servlet est un moyen standardisé d'étendre un serveur Java et d'accéder à ses capacités.

Chaque servlet peut être considéré 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 tout ce dont il a besoin pour rendre une réponse, y compris le transfert vers une page JSP pour générer une vue HTML.

mtyson
la source
-1

Je pense que le servlet est fondamentalement une classe java qui agit comme un moyen terme entre la requête HTTP et la réponse HTTP. Le servlet est également utilisé pour rendre votre page Web dynamique. Supposons par exemple que si vous souhaitez rediriger vers une autre page Web sur le serveur, vous devez utiliser des servlets. Une autre chose importante est que la servlet peut fonctionner sur localhost ainsi que sur un navigateur Web.

Roopam
la source
-2

Vous venez de recevoir la réponse pour une servlet normale. Cependant, je veux vous parler de quelque chose à propos de Servlet 3.0

Qu'est-ce d'abord qu'un servlet?

Un servlet est un composant Web qui est géré par un conteneur et génère du contenu dynamique. Les servlets sont des classes Java qui sont compilées en code octet pouvant être chargé dynamiquement dans et exécuté par un serveur Web ou un conteneur de servlets à technologie Java.

Servlet 3.0 est une mise à jour de la spécification existante de Servlet 2.5. Servlet 3.0 API requise de la plate-forme Java, Enterprise Edition 6. Servlet 3.0 se concentre sur l'extensibilité et la connectivité du framework Web. Servlet 3.0 vous propose des extensions telles que la facilité de développement (EoD), la connectivité, la prise en charge asynchrone et les améliorations de la sécurité

Facilité de développement

Vous pouvez déclarer des servlets, un filtre, des écouteurs, des paramètres d'initialisation et presque tout peut être configuré à l'aide d'annotations

Pluggability

Vous pouvez créer un sous-projet ou un module avec un web-fragment.xml. Cela signifie qu'il permet de mettre en œuvre indépendamment des exigences fonctionnelles enfichables.

Prise en charge Async

Servlet 3.0 offre la possibilité d'un traitement asynchrone, par exemple: Attendre qu'une ressource soit disponible, Générer une réponse de manière asynchrone.

Améliorations de la sécurité

Prise en charge des méthodes de sécurité des servlets d'authentification, de connexion et de déconnexion

Je l'ai trouvé dans le tutoriel Java Servlet

David Pham
la source