SESSION
3
Introduction aux servlets
Programme de la session
Principes de fonctionnement des servlets
Création d'une première servlet minimale
Les servlets et les pages JSP résultantes
Avant de nous plonger dans les détails de la rédaction d'une page JSP,
il sera profitable de connaître les grandes lignes du fonctionnement des
servlets, car ces petits programmes exécutés côté serveur constituent le
soubassement de JSP. Une servlet est un programme écrit en langage
Java et capable de répondre à une requête HTTP, tout comme le font les
programmes CGI (Common Gateway Interface), actuellement très répan-
dus. A la différence du CGI, une servlet peut profiter des caractéristiques
évoluées du langage Java, comme l'exécution distribuée multithread
(un processus peut lancer l'exécution de plusieurs sous-processus simul-
tanés) et la notion de session (permettant de conserver les valeurs des
données d'une session utilisateur d'une requête à l'autre). Chaque page
JSP que vous rédigerez finira par produire une servlet Java capable de
recevoir une requête HTTP et de renvoyer une réponse HTTP.
30 JSP Web Training
Principes de fonctionnement des servlets
Une servlet, (prononcez servlette) tout comme une applet (prononcez
applette), est un programme écrit en langage Java. Une applet est un
programme qui s'exécute sur la machine du client (le visiteur) après
avoir été rapatriée (téléchargée) depuis le site du serveur ; l'exécution
est réalisée sous le contrôle de la machine virtuelle JVM (Java Virtual
Machine) intégrée au navigateur. Une applet ne comporte pas obligatoi-
rement de partie visuelle, mais presque toutes en ont une. La taille n'est
pas limitée mais, dans la pratique, les applets restent de taille réduite
pour ne pas entraîner des temps de téléchargement inacceptables pour
le visiteur. En revanche, une servlet n'est jamais téléchargée ; elle réside
et est exécutée sur le serveur. Vous pouvez considérer les servlets com-
me une infrastructure pour les applications Web se servant de Java. Une
servlet a accès à toutes les fonctions des interfaces de programmation
API de Java ; elle est donc indépendante de la plate-forme d'exécution
et peut aisément servir à enrichir les capacités fonctionnelles de la plu-
part des logiciels serveurs Web.
Une servlet se distingue d'une application Java classique de par ses ca-
pacités à gérer les requêtes HTTP. Une telle requête est émise par le na-
vigateur du client suite au clic d'un lien hypertexte, à l'envoi d'un
formulaire, ou encore à la saisie d'une adresse URL dans un champ ap-
proprié.
Pour d'autres détails au sujet de HTTP, voyez le
Chapitre 19.
Lorsqu'un serveur Web reçoit une requête HTTP, il analyse la chaîne
d'adresse URL demandée pour savoir quel type de page a été demandé
par le navigateur. Si le navigateur a demandé une servlet, le serveur Web
transmet la requête au conteneur de servlets. Le programme conteneur
gère la création, l'utilisation et la destruction des servlets, soit le cycle
de vie de ces servlets. Le conteneur de servlets que nous allons utiliser
tout au long de ce livre est Tomcat (installé lors du Chapitre 2).
Pour chaque demande d'exécution d'une servlet via une requête HTTP,
le conteneur charge la servlet en mémoire et crée un objet instance à
partir de la classe nommée Servlet. Le conteneur n'a plus ensuite qu'à
Session 3 - Introduction aux servlets 31
lancer l'exécution de la servlet en l'initialisant par appel à la méthode
init() de la partie interface nommée Servlet, tout en lui transmettant un
objet ServletConfig en paramètre. L'objet ServletConfig contient des infor-
mations de configuration sous forme de paires nom/valeur ; ces valeurs
sont reçues et exploitées par la servlet.
Une fois la servlet correctement initialisée (la méthode init() s'est termi-
née sans erreur), la servlet peut traiter la requête HTTP et générer sa
réponse HTTP. La méthode service() transmet les deux objets
ServletRequest et ServletResponse à la servlet. Sauf mention contraire ex-
plicite, le conteneur de servlets travaille en mode multithread (sous-
processus multiples), ce qui lui permet de gérer plusieurs requêtes en
parallèle, en distribuant les requêtes à la servlet sous forme de sous-pro-
cessus (threads) distincts, comme le montre la Figure 3-1.
L'autre mode de fonctionnement consiste à utiliser l'interface nommée
SingleThreadModel. Dans ce cas, les requêtes sont mises en file d'attente
pour être exécutées l'une après l'autre (Figure 3-2).
Figure 3-1
Une même instance de servlet sait gérer plusieurs requêtes.
32 JSP Web Training
Une fois toutes les requêtes en attente servies, le conteneur de servlets
appelle la méthode destroy() pour libérer l'espace mémoire de l'objet ser-
vlet devenu inutile. Dès l'arrivée d'une nouvelle requête concernant la-
même servlet, le processus reprend au début.
Création d'une première servlet minimale
Le Listing 3-1 propose de créer une servlet minimale qui se contente
d'afficher un message dans la fenêtre du navigateur.
Servez-vous des instructions suivantes pour compiler et exécuter ce pre-
mier exemple.
Figure 3-2
Avec l'interface SingleThreadModel, la servlet répond aux requêtes l'une après
l'autre.
Session 3 - Introduction aux servlets 33
1. Saisissez le code source ci-dessus dans un éditeur de texte et
enregistrez le fichier dans le sous-répertoire <Tomcat>\webapps\
ROOT\WEB-INF\classes sous le nom SalutMonde et avec l'extension
de nom de fichier .java. Ce fichier .java servira de source pour la
compilation de la servlet. Vous pouvez aussi récupérer le fichier
dans le sous-répertoire sources\jsc_03 du CD-ROM.
2. Avant de compiler le fichier .java pour produire un fichier .class,
vérifiez que la variable CLASSPATH comporte bien une mention re-
lative au fichier servlet.jar fourni avec Tomcat, fichier qui est né-
cessaire à la compilation. Si vous avez par exemple installé Tomcat
dans C:\JAKARTA, CLASSPATH doit comporter une chaîne
Listing 3-1
La servlet SalutMonde.java affiche un message.
/** SalutMonde (traduit de HelloWorld) **/
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SalutMonde extends HttpServlet
{
public void doGet (HttpServletRequest request,
HttpServletResponse response)
throws ServletException,
IOException
{
PrintWriter out = response.getWriter();
out.println("<HTML>");
out.println("<HEAD>");
out.println("<TITLE>");
out.println("Exemple de servlet minimale SalutMonde");
out.println("</TITLE>");
out.println("</HEAD>");
out.println("<BODY>");
out.println("<H1>Salut à tout le monde</H1>");
out.println("</BODY>");
out.println("</HTML>");
}
}
1 / 12 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 !