Créé le 28 avril 2004
Modifié le
Technologies serveur > Servlets

Les Servlets Java

Présentation des servlets Java

La technologie des servlets Java est une technologie introduite par Sun jouant un rôle symétrique à celui des applets, mais côté serveur. Si les applets Java ont pour but d'enrichir les fonctionnalités d'un navigateur client, les servlets permettent d'étendre les fonctionnalités d'un serveur Web.

Cette technologie serveur permet de générer des pages Web dynamiques, dont le contenu, issu de programmes d'applications sur le serveur, est adapté aux spécifications et aux requêtes d'utilisateurs particuliers. Tout comme pour les scripts CGI, les servlets Java réalisent la liaison entre des requêtes clientes et des données ou applications liées à un serveur.

A quoi ressemble un servlet?

Un servlet est un programme écrit en Java. Les différentes instructions du programme vont permettre de générer les données à intégrer dans le code HTML (afin d'être comprise par les navigateurs) et par l'intermédiaire de variables et d'objets, de créer des comportements dynamiques en fonction des actions des utilisateurs.

En pratique, un servlet est le plus souvent invoqué par un appel depuis une page HTML. Dans ce cas, les variables sont exécutées, puis remplacées par du HTML pur à la place des balises. Mais il est également possible de générer entièrement une page HTML, uniquement à partir d'un servlet. Ceci n'est bien sûr pas très efficient, puisqu'on ne développe la page que sur base du langage Java, mais cela permet d'éclairer la syntaxe d'un servlet. Le programme génére en sortie un document formaté en HTML:

  • en précisant les balises de mise en page (par exemple, System.out.println("<body>");)
  • et en utilisant des variables exécutées, puis remplaçées par les données correspondantes et placées dans le code HTML en sortie.

Fonctionnement des servlets

Lors de l'appel HTTP d'une page Web, un moteur de servlets reconnaît à l'URL si la page référence un servlet (dans ce cas, ce sera une URL longue). Le moteur de servlets prend alors en charge les servlets et leurs requêtes via des API standard (interface vers d'autres programmes d'application). C'est également le moteur de servlets, nommé container web dans l'architecture distribuée J2EE, qui après avoir récupéré les données dans des applications serveur, les renvoie au serveur HTTP.

Les réponses renvoyées doivent être dans un format assimilable par tout navigateur. Ceci implique que le moteur de servlets transforme les réponses obtenues après un traitement dans un programme d'application (un SGBD le plus souvent), dans le format MIME (c'est-à-dire en HTML, en XML, en image GIF ...) et non pas dans le langage Java.

Voici pour mieux comprendre le mécanisme, un schéma d'exécution classique d'un servlet (source: www.commentcamarche.net)

Quel est l'avantage à utiliser des servlets par rapport à d'autres technologies permettant elles aussi d'accéder à des programmes d'application sur le serveur? L'avantage indéniable des servlets vient de leur capacité à supporter le multi-thread (multi-taches), c'est-à-dire d'accéder à plusieurs applications différentes et d'effectuer plusieurs traitements simultanés depuis un seul processus. De plus, lors de l'invocation d'un servlet, celui-ci est instancié par le serveur et stocké dans un répertoire avec une extension .class. Il y reste jusqu'à l'arrêt du serveur.

Cette caractéristique offre des performances et une rapidité largement plus importantes que pour les CGI (pour lesquels, à chaque invocation d'un script, on lance un nouveau processus). Il n'est en effet pas nécessaire ici de relancer systématiquement un nouveau processus pour accéder aux programmes d'applications, le servlet étant chargé initialement et une seule fois lors du premier appel. A chaque requête HTTP, on alloue alors une thread (tâche) particulière au servlet. Une fois la réponse élaborée et transmise au moteur de servlets, la thread est libérée. Par contre, l'instance servlet n'est détruite qu'à la suite de la fermeture du serveur ou suite à un certain délai d'inactivité.

Avantages et inconvénients des servlets

Les servlets disposent des principaux avantages reconnus aux technologies développées par Sun, à savoir:

  • Une excellente portabilité. Ils sont en effet indépendants de la plate-forme utilisée.
  • Un support de programmation, le langage Java, puissant et très orienté vers le développement Web.
  • Une rapidité d'exécution et des performances certaines (les servlets pallient les faiblesses des CGI et visent à les remplacer: persistances des connexions et support multi-thread).

Néanmoins, les servlets présentent un inconvénient inhérent au fait qu'il s'agit de programme en langage compilé: l'observation du code d'un servlet montre bien que c'est en fait le code Java qui constitue la page et que le code HTML est contenu à l'intérieur du programme Java. L'intégration avec HTML n'est donc pas optimale. Aujourd'hui, la technologie des JSP (Java Server Page) permet de générer des pages avec des scripts dynamiques très bien intégrés dans HTML, tout en continuant à utiliser la technologie des servlets.

Par ailleurs, si les servlets offrent un support très complet pour la gestion multi-tâches des scripts serveur, les très nombreuses API proposées pour accéder aux programmes d'applications sont fortement complexes et nécessitent par conséquent de bonnes connaissances en programmation. Mais est-ce réellement un défaut? :-)

Liens utiles

http://java.sun.com/products/servlet/

http://www.commentcamarche.net/servlets/servintro.php3

http://www.infini-fr.com/Sciences/Informatique/Langages/Imperatifs/Java/servletsJsp/servlets.html

http://java.developpez.com/cours/servlets/

http://eva.univ-tlse1.fr/berro/cours/igsi/exemple/Exemple.html


Haut de page