Vous êtes sur la page 1sur 12

ROYAUME DU MAROC ‫اململكة املغربية‬

Université Mohammed 1er Oujda ‫جامعة حممد األول وجدة‬


Faculté pluridisciplinaire ‫الكلية متعددة التخصصات‬
Nador ‫الناظور‬

TPs Servlets
I. Prise en Main de l'environnement JEE

1 : Création d'un projet JEE 1.1


1.1 Apache Tomcat
Un serveur d'applications Apache Tomcat est installé. Ce serveur possède un conteneur
JEE permettant la réalisation de projets JEE.
• Tout d'abord, vérifiez que Tomcat est correctement installé sur vos machines.
 lancez Tomcat (ou Tomcat Monitor qui permet un suivi visuel de l'état du serveur),
puis ouvrez un navigateur Web à l'URL http://localhost:8080/ Note : Il se peut que
Oracle tourne déjà sur le port 8080. Pour pallier au problème, modifier le port utilisé
par Tomcat dans le fichier de configuration du serveur Tomcat ( /conf/server.xml )

• Ouvrez le Tomcat Manager et regardez les différents projets d'exemples déjà


installés sur le serveur.

Note : Les logins / passwords des utilisateurs de Tomcat peuvent être trouvés/modifiés
dans le fichier /conf/tomcat-users.xml

1.2 : Premier projet JEE


• Créez un nouveau projet JEE : MonProjet contenant un debut.html faisant un Hello
World.
 Créer un nouveau dossier MonProjet contenant le projet JEE. On y mettra les
sources Java (servlets et classes) ainsi que les fichiers HTML/JSP/CSS dans leur
phase de développement.
 Lorsque le projet est fonctionnel dans le répertoire de développement, on peut
passer à la phase de déploiement sur le serveur. Pour cela, allez dans le
répertoire de Tomcat puis dans le dossier webapps (contenant les projets JEE
déployés sur le serveur).
 Dans le conteneur web (Tomcat), la hiérarchie de dossiers suivante doit être
respectée pour que Tomcat puisse charger le projet JEE :

1
ROYAUME DU MAROC ‫اململكة املغربية‬
Université Mohammed 1er Oujda ‫جامعة حممد األول وجدة‬
Faculté pluridisciplinaire ‫الكلية متعددة التخصصات‬
Nador ‫الناظور‬

 Le strict minimum étant le dossier WEB-INF et le fichier web.xml (sauf depuis la


v.6 où le web.xml n'est plus obligatoire). Ici on doit rajouter un fichier debut.html
dans le répertoire racine du projet.
• Lancez votre Projet sur Tomcat et vérifiez qu'il fonctionne correctement.
• Configurez votre Projet pour que la page de démarrage par défaut soit votre
debut.html
 Il faut configurer le fichier web.xml en ajoutant les lignes suivantes :

 Ainsi, lorsque vous lancez votre site : http://localhost:8080/MonProjet/ sans spécifier


de fichier, Tomcat lance le fichier debut.html par défaut.
 Le fichier web.xml est obligatoire si l'on veut définir une url par défaut.

1.3 : Ma première Servlet


Pour l'instant, nous avons réussi à créer une page Web statique et à la lancer sur notre
serveur Tomcat. C'est bien mais ce n'est pas du Web dynamique. Pour faire celà, nous
allons créer notre première Servlet et allons essayer de la faire fonctionner sur notre
site Web.
Une Servlet étant une classe Java, il faudra écrire son code dans un fichier .java puis le
compiler.
• Créez une Servlet affichant : Bonjour le monde.
Il faut commencer par créer le fichier java : MaServlet.java

2
ROYAUME DU MAROC ‫اململكة املغربية‬
Université Mohammed 1er Oujda ‫جامعة حممد األول وجدة‬
Faculté pluridisciplinaire ‫الكلية متعددة التخصصات‬
Nador ‫الناظور‬

 On récupère le flot de sortie : PrintWriter, et on écrit dedans le fichier HTML qui sera
généré par le serveur. Puis on compile le fichier, pour celà il faut mettre dans le
classpath l'url du .jar gérant les servlet (pour les import javax.servlet.*). Cette librairie
est présente dans le JDK orienté JEE, mais également dans Tomcat dans le répertoire
lib (afin qu'il puisse charger les fichiers .class de vos projets).
 Ainsi, on peut compiler en spécifiant l'url du jar : javac -classpath ../../lib/servlet-
api.jar MaServlet.java On doit mettre le fichier .class dans le répertoire WEB-
INF/classes afin que Tomcat puisse les trouver
Ensuite on doit configurer le fichier web.xml qui se charge de faire le mapping entre une URL
et notre Servlet.

 Ainsi, on peut ensuite accéder à notre servlet par l'URL


http://localhost:8080/MonProjet/Hello
 Attention : Lorsque le fichier web.xml est modifié, il faut recharger le Projet par
Tomcat

On peut aussi définir le mapping de la Servlet par une annotation (@WebServlet) directement
dans le code de la servlet. Cette annotation contient l'url-pattern correspondant à l'url qui
permettra d'appeler la servlet sur le serveur.

3
ROYAUME DU MAROC ‫اململكة املغربية‬
Université Mohammed 1er Oujda ‫جامعة حممد األول وجدة‬
Faculté pluridisciplinaire ‫الكلية متعددة التخصصات‬
Nador ‫الناظور‬

 Il suffit donc de créer le fichier java : MaServlet.java

2 : Module WAR

La plupart des applications JEE sont livrés dans un module WAR (équivalent du JAR pour un
projet JEE). Ce WAR contient l'ensemble de votre projet et peut être déployé directement sur
un serveur d'applications JEE (comme Tomcat).
• Créez le WAR de votre projet.
 Il suffit de se placer à la racine du dossier du projet et taper la commande : jar cvf
MonProjet.war *
• • Déployez-le sur Tomcat
 IlIl suffit d'aller dans l'onglet Tomcat Manager sur http://localhost:8080/ , en bas
de la page on peut déployer un WAR sur le serveur Tomcat. Il apparaît ensuite
dans la liste des projets.

4
ROYAUME DU MAROC ‫اململكة املغربية‬
Université Mohammed 1er Oujda ‫جامعة حممد األول وجدة‬
Faculté pluridisciplinaire ‫الكلية متعددة التخصصات‬
Nador ‫الناظور‬

II. interface ServletRequest

Un objet de ServletRequest est utilisé pour fournir les informations dont le client
demande à une servlet telles que le type de contenu, la longueur du contenu, les noms et
valeurs des paramètres, les informations d'en-tête, les attributs, etc.
Dans cet exemple, nous affichons le nom de l'utilisateur dans la servlet. Pour cela, nous
avons utilisé la méthode getParameter qui renvoie la valeur du nom de paramètre de
requête donné.
index.html

DemoServ.java

 Testez l’exemple dans Eclipse.

III. interface RequestDispatcher

Dans cet exemple, nous validons le mot de passe saisi par l'utilisateur. Si le mot de
passe est correct, la demande est transmise à WelcomeServlet, sinon on affichera un
message d'erreur: désolé erreur de nom d'utilisateur ou de mot de passe !.
Dans ce programme, nous recherchons des informations codées en dur. Dans cet
exemple, nous allons créé les fichiers suivants:

 fichier index.html: pour obtenir les entrées de l'utilisateur.


 Fichier Login.java: une classe de servlet pour traiter la réponse. Si le mot de passe
est correct, il transmettra la demande au servlet de bienvenue.

5
ROYAUME DU MAROC ‫اململكة املغربية‬
Université Mohammed 1er Oujda ‫جامعة حممد األول وجدة‬
Faculté pluridisciplinaire ‫الكلية متعددة التخصصات‬
Nador ‫الناظور‬

 Fichier WelcomeServlet.java: une classe de servlet pour afficher le message de


bienvenue.
 Fichier web.xml: un fichier descripteur de déploiement contenant les
informations sur la servlet.

IV. Les cookies


Un cookie est un élément d'information qui est conservé entre les multiples demandes
des clients. Un cookie a un nom, une valeur unique et des attributs facultatifs tels qu'un
commentaire, un chemin d'accès et des qualificatifs de domaine, une un cycle de vie et
un numéro de version. Il existe 2 types de cookies dans les servlets.
 Cookie non persistant Il n'est valable que pour une seule session. Il est supprimé
chaque fois que l'utilisateur ferme le navigateur.
 Cookie persistant Il est valable pour plusieurs sessions. Il n'est pas supprimé à
chaque fois que l'utilisateur ferme le navigateur. Il n'est supprimé que si
l'utilisateur se déconnecte ou se déconnecte.
Les cookies sont conservés côté client. Seules les informations textuelles peuvent être
définies dans l'objet Cookie.

Exercice 1 :
Créez une page contenant un champs et un bouton comme montre dans la figure ci-
dessous, stockez le nom de l'utilisateur dans l'objet cookie et y accédez dans un autre

6
ROYAUME DU MAROC ‫اململكة املغربية‬
Université Mohammed 1er Oujda ‫جامعة حممد األول وجدة‬
Faculté pluridisciplinaire ‫الكلية متعددة التخصصات‬
Nador ‫الناظور‬

servlet. Notez bien que , cette session correspond à l'utilisateur particulier. Donc, si vous
y accédez à partir d'un trop grand nombre de navigateurs avec des valeurs différentes,
vous obtiendrez la valeur différente.

Exercice 2 :
Créez un exemple de connexion et de déconnexion de servlet à l'aide de cookies Nous
allons créer un exemple de connexion et de déconnexion à l'aide de cookies de servlet.
Créez 3 liens: connexion, déconnexion et profil. L'utilisateur ne peut pas accéder à la
page de profil tant qu'il n'est pas connecté. Si l'utilisateur est déconnecté, il doit se
reconnecter pour visiter le profil. Dans cette application, nous avons créé les fichiers
suivants.
Dans cette application, nous allons créé les fichiers suivants.
 index.html
 link.html
 login.html
 LoginServlet.java
 LogoutServlet.java
 ProfileServlet.java
 web.xml

7
ROYAUME DU MAROC ‫اململكة املغربية‬
Université Mohammed 1er Oujda ‫جامعة حممد األول وجدة‬
Faculté pluridisciplinaire ‫الكلية متعددة التخصصات‬
Nador ‫الناظور‬

8
ROYAUME DU MAROC ‫اململكة املغربية‬
Université Mohammed 1er Oujda ‫جامعة حممد األول وجدة‬
Faculté pluridisciplinaire ‫الكلية متعددة التخصصات‬
Nador ‫الناظور‬

V. Champs de formulaire caché


Dans le cas d'un champ de formulaire masqué, un champ de texte masqué (invisible) est
utilisé pour maintenir l'état d'un utilisateur.
Dans ce cas, nous stockons les informations dans le champ caché et on les récupère
d'une autre servlet. Cette approche est meilleure si nous devons soumettre un
formulaire dans toutes les pages et que nous ne voulons pas dépendre du navigateur.

Voyons le code pour stocker la valeur dans un champ caché.

 Ici, uname est le nom du champ caché et Safâa EL OUAHABI Jaiswal est la valeur
du champ caché.

 Application réelle du champ de formulaire caché


Il est largement utilisé sous forme de commentaire sur un site Web. Dans ce cas, nous
stockons l'identifiant de la page ou le nom de la page dans le champ masqué afin que
chaque page puisse être identifiée de manière unique.
 Avantage du champ de formulaire caché
Cela fonctionnera toujours, que le cookie soit désactivé ou non.
 Inconvénient du champ de formulaire caché:
o Il est maintenu côté serveur.
o Un formulaire supplémentaire est requis sur chaque page.
o Seules les informations textuelles peuvent être utilisées.
Travail à faire :
Stockez le nom de l'utilisateur dans un champ de texte masqué et obtenons cette valeur
d'un autre servlet comme montré dans la figure suivante :

9
ROYAUME DU MAROC ‫اململكة املغربية‬
Université Mohammed 1er Oujda ‫جامعة حممد األول وجدة‬
Faculté pluridisciplinaire ‫الكلية متعددة التخصصات‬
Nador ‫الناظور‬

VI. Réécriture d'URL


Lors de la réécriture d'URL, nous ajoutons un jeton ou un identifiant à l'URL du servlet
suivant ou de la ressource suivante. Nous pouvons envoyer des paires nom / valeur de
paramètre en utilisant le format suivant:
url?nom1= valeur1 & nom2 = valeur2 &??
Un nom et une valeur sont séparés à l'aide d'un signe égal =, une paire nom / valeur de
paramètre est séparée d'un autre paramètre à l'aide de l'esperluette (&). Lorsque l'utilisateur
clique sur le lien hypertexte, les paires nom / valeur de paramètre sont transmises au serveur.
À partir d'une servlet, nous pouvons utiliser la méthode getParameter () pour obtenir une
valeur de paramètre.

 Avantage de la réécriture d'URL


o Cela fonctionnera toujours, que le cookie soit désactivé ou non (indépendant
du navigateur).
o La soumission d'un formulaire supplémentaire n'est pas requise sur chaque
page.
 Inconvénient de la réécriture d'URL
o Cela ne fonctionnera qu'avec des liens.
o Il ne peut envoyer que des informations textuelles.

Travail à faire : Crée le même exemple précédant mais en renvoyant les paramètres en URL.

IXInterface HttpSession

10
ROYAUME DU MAROC ‫اململكة املغربية‬
Université Mohammed 1er Oujda ‫جامعة حممد األول وجدة‬
Faculté pluridisciplinaire ‫الكلية متعددة التخصصات‬
Nador ‫الناظور‬

Dans ce cas, le conteneur crée un identifiant de session pour chaque utilisateur. Le


conteneur utilise cet identifiant pour identifier l'utilisateur particulier. Un objet de
HttpSession peut être utilisé pour effectuer deux tâches:
o lier des objets
o afficher et manipuler des informations sur une session, telles que l'identifiant de
session, l'heure de création et l'heure du dernier accès

Comment obtenir l'objet HttpSession?


o L'interface HttpServletRequest fournit deux méthodes pour obtenir l'objet de
HttpSession:
o public HttpSession getSession (): renvoie la session actuelle associée à
cette demande, ou si la demande n'a pas de session, en crée une.
o public HttpSession getSession (boolean create): renvoie la HttpSession
actuelle associée à cette demande ou, s'il n'y a pas de session en cours et
que create est vrai, renvoie une nouvelle session.
Méthodes couramment utilisées de l'interface HttpSession
o public String getId (): renvoie une chaîne contenant la valeur de l'identificateur
unique.
o public long getCreationTime (): Renvoie l'heure à laquelle cette session a été
créée, mesurée en millisecondes.
o public long getLastAccessedTime (): Renvoie la dernière fois que le client a
envoyé une requête associée à cette session.
o public void invalidate (): invalide cette session puis dissocie tous les objets qui y
sont liés.

Travail à faire :
Créer deux servlets FirstServlet.java et SecondServlet.java. Définissez l'attribut uname
dans la portée de session de FirstServlet, ensuite Récupérez la valeur l’attribut dans la

11
ROYAUME DU MAROC ‫اململكة املغربية‬
Université Mohammed 1er Oujda ‫جامعة حممد األول وجدة‬
Faculté pluridisciplinaire ‫الكلية متعددة التخصصات‬
Nador ‫الناظور‬

session SecondServlet. Pour définir l'attribut dans la portée de session, vous devez
utilisé la méthode setAttribute () de l'interface HttpSession et pour obtenir l'attribut,
vous devez utiliser la méthode getAttribute.

12

Vous aimerez peut-être aussi