1
Présentation des servlets
et des JavaServer Pages
Au sommaire de ce chapitre
Qu’est-ce qu’un servlet
Quand et pourquoi peut-on utiliser des servlets
Que sont les JavaServer Pages
Quand et pourquoi peut-on utiliser des JSP
Se procurer les logiciels de servlets et de JSP
Installation et configuration des logiciels
Ce chapitre constitue une présentation rapide des servlets et des JavaServer
Pages (JSP), mettant en évidence les principaux avantages de ces deux techni-
ques. Il montre ensuite comment obtenir et configurer les logiciels nécessaires à
l’écriture de servlets et au développement de documents JSP.
Servlets
Les servlets représentent l’alternative de la technologie Java à la programmation
avec CGI (Common Gateway Interface). Il s’agit de programmes exécutés sur un
serveur Web, qui servent de couche intermédiaire entre une requête provenant
14 Partie I Servlets
d’un navigateur Web et un autre client HTTP, comme des bases de données ou
des applications du serveur HTTP. Leur tâche est de :
1. Lire toutes les données envoyées par l’utilisateur. Ces données sont typique-
ment saisies dans un formulaire sur une page Web, mais elles peuvent également
provenir d’une applet Java ou d’un programme client HTTP particulier.
2. Chercher d’autres informations sur la requête, à l’intérieur de cette
requête HTTP. Ces informations contiennent des détails sur les capacités du
navigateur, sur les cookies, sur le nom de l’hôte du programme envoyant la
requête, etc.
3. Générer les résultats. Ce processus peut nécessiter une communication avec
la base de données, en exécutant un appel RMI ou CORBA, ou en invoquant
une ancienne application, ou encore en calculant directement la réponse.
4. Formater le résultat dans un document. Dans la plupart des cas, cela impli-
que l’incorporation des informations dans une page HTML.
5. Définir les paramètres de la réponse HTTP appropriés. Cela signifie qu’il
faut indiquer au navigateur le type de document renvoyé (c’est-à-dire HTML),
définir les cookies, mémoriser les paramètres, ainsi que d’autres tâches.
6. Renvoyer le document au client. Ce document peut être envoyé au format
texte (HTML), au format binaire (comme pour des images GIF), ou même
dans un format compressé comme gzip, qui est en fait une couche venant
recouvrir un autre format sous-jacent.
Certaines requêtes de clients peuvent être satisfaites en renvoyant des documents
préconstruits. Ce type de requête est géré par le serveur sans invoquer de servlets.
Cependant, dans un certain nombre de cas, un résultat statique n’est pas suffisant,
et il faudra alors générer une page particulière pour chaque requête. Il existe
plusieurs raisons expliquant la nécessité de construire des pages en temps réel :
mLa page Web est fondée sur des données envoyées par l’utilisateur. Par
exemple, les pages de résultats des moteurs de recherche et des pages de
confirmation de commande dans des magasins en ligne sont spécifiques à des
requêtes particulières d’utilisateurs.
mLa page Web est calculée à partir d’informations qui sont fréquemment
modifiées. Par exemple, un bulletin météo ou une page résumant les dernières
Chapitre 1 Présentation des servlets et des JavaServer Pages 15
nouvelles quotidiennes peut construire la page de manière dynamique, éven-
tuellement en renvoyant une page déjà construite si elle est toujours valable.
mLa page Web se sert d’informations provenant de bases de données appar-
tenant à des entreprises ou à d’autres sources situées au niveau d’un
serveur. Par exemple, un site de commerce électronique peut utiliser un servlet
pour construire une page Web qui établit la liste des prix et la disponibilité de
chaque article en vente.
En principe, les servlets ne sont pas restreints au Web ou à des serveurs d’appli-
cations qui gèrent des requêtes HTTP. Ils peuvent également être utilisés par
d’autres types de serveurs. Ainsi, les servlets peuvent être intégrés dans des
serveurs mail ou FTP, afin d’en accroître les capacités. Cependant, dans la prati-
que, cette utilisation des servlets n’est pas très courante, et nous nous contente-
rons d’aborder les servlets HTTP.
Avantages des servlets par rapport aux CGI "traditionnels"
Les servlets Java sont plus efficaces, plus simples à utiliser, plus puissants, plus
portables, plus sûrs, et moins chers que les CGI traditionnels et que plusieurs
autres technologies comparables aux CGI.
Efficacité
Avec un CGI traditionnel, un nouveau processus est exécuté pour chaque requête
HTTP. Si le programme CGI est assez grand, son chargement peut nécessiter
plus de temps que son exécution. Avec les servlets, la machine virtuelle Java est
exécutée en permanence et traite chaque requête grâce à un thread Java plus
simple, et non selon un processus complexe du système d’exploitation. De la
même manière, avec des CGI traditionnels, s’il existe n requêtes simultanées
demandant le même programme CGI, le code de ce programme sera charn fois
dans la mémoire. En revanche, avec des servlets, il y aurait uniquement n threads
et une seule copie de la classe du servlet. Enfin, lorsqu’un programme CGI a fini
de traiter une requête, ce programme se termine. Cela complexifie de manière
significative les calculs de mise en mémoire, la conservation d’une connexion
ouverte vers une base de données ainsi que d’autres optimisations fondées sur les
données persistantes. Cependant, comme les servlets restent en mémoire même
16 Partie I Servlets
après le traitement d’une requête, ils peuvent facilement enregistrer des données
complexes entre deux requêtes.
Simplicité
Les servlets disposent d’une infrastructure complète pour analyser et décoder
automatiquement les données d’un formulaire HTML, pour lire et définir des en-
têtes HTTP, gérer les cookies, conserver une trace des sessions, ainsi que pour
bien d’autres outils de haut niveau. De plus, vous connaissez déjà le langage de
programmation Java. Pourquoi apprendre aussi le langage Perl ? Vous savez déjà
que la technologie Java produit du code plus fiable, dont la maintenance est plus
simple qu’avec le C++. Pourquoi en revenir à une programmation en C++ au
niveau du serveur ?
Puissance
Les servlets disposent de plusieurs facultés qui seraient difficiles, voire impossi-
bles à implémenter avec des CGI classiques. Les servlets peuvent communiquer
directement avec le serveur Web, ce qui est impossible pour des CGI classiques,
du moins sans avoir recours à une API spécifique au serveur. Par exemple, la
communication avec le serveur Web simplifie la traduction d’URL relatives en
chemins complets. Plusieurs servlets peuvent également partager des données, ce
qui permet de réunir facilement plusieurs connexions de bases de données et
d’implémenter d’autres types d’optimisations fondées sur le partage de ressour-
ces. Les servlets peuvent aussi conserver des informations d’une requête à
l’autre. Cette technique simplifie l’implémentation de l’enregistrement des
sessions et la conservation en mémoire de calculs précédemment effectués.
Portabilité
Les servlets sont écrits dans le langage de programmation Java et respectent
l’API standard. Par conséquent, des servlets écrits pour I-Planet Enterprise
Server peuvent être exécutés a priori sans modification sur Apache, Internet
Information Server de Microsoft (IIS), WebSphere d’IBM, ou WebStar de Star-
Nine. Par exemple, presque tous les servlets et pages JSP de ce livre ont été
exécutés sur le serveur Web Java de Sun, Apache Tomcat ainsi que sur le Java-
Server Web Development Kit (JSWDK), sans aucune modification du code. La
plupart d’entre eux ont été également testés sur WebLogic de BEA et sur
Chapitre 1 Présentation des servlets et des JavaServer Pages 17
WebSphere d’IBM. En fait, les servlets sont supportés soit directement soit par
l’intermédiaire d’un composant logiciel fourni pour tous les principaux serveurs
Web. Ils font désormais partie de la plate-forme Java 2, édition Entreprise (J2EE ;
voir le site http://java.sun.communication/j2ee/), c’est pourquoi le support des
servlets dans le monde industriel se répand de plus en plus.
Sécurité
L’une des principales sources de vulnérabilité des programmes CGI traditionnels
provient du fait qu’ils sont souvent exécutés par des interpréteurs de commandes
généraux. Par conséquent, le programmeur d’un CGI doit être très prudent pour
filtrer certains caractères comme les guillemets inversés et les points-virgules, qui
sont interprétés d’une manière spéciale par l’interpréteur de commandes. Ce
processus reste assez complexe et les sources d’erreurs qui en émanent ne sont
généralement pas abordées dans la plupart des bibliothèques CGI courantes. Une
seconde source d’erreurs provient de ce que certains programmes CGI sont traités
par des langages qui ne vérifient pas automatiquement les limites des tableaux et
des chaînes. Par exemple, en C et en C++, il est parfaitement autorisé d’allouer un
tableau de 100 éléments et d’écrire dans le 999-ième élément, qui peut correspon-
dre à une partie quelconque de la mémoire du programme. Par conséquent, les
programmeurs qui oublient de vérifier explicitement ce type d’accès autorisent
indirectement des attaques volontaires ou involontaires par dépassement de
mémoire. Les servlets ne souffrent d’aucun de ces problèmes. Même si un servlet
exécute un appel sur un système distant pour invoquer un programme sur le
système d’exploitation local, il ne passe par aucun interpréteur de commandes. Et
naturellement, la vérification des limites d’un tableau et les autres techniques de
protection de la mémoire font partie intégrante du langage de programmation Java.
Economique
De nombreux serveurs Web gratuits ou très bon marché sont disponibles, qui sont
parfaitement adaptés pour une utilisation personnelle ou pour des sites Web de
faible importance. Cependant, à l’exception d’Apache, qui est gratuit, la plupart
des serveurs Web de qualité commerciale sont relativement chers. Néanmoins, une
fois que vous possédez un serveur Web, quel qu’en soit le prix, l’ajout des fonction-
nalités permettant de supporter les servlets est très économique. Il se peut même
que ce support soit directement intégré dans le serveur Web. Cette solution
1 / 16 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !