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 chargé n 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