Vous êtes sur la page 1sur 23

2020-2021 Iset Gafsa

TP 2 : Programmation d’une Application Web avec Java EE


« Les servlets »
Objectifs
❖ Ce TP qui va permettre de développer une application web en utilisant les Servlets.
I. Créer un simple projet
❖ Créer un nouveau projet dans un projet contenu dans une application.
❖ Cliquer sur « File » « New » « New Project »

❖ Cliquer sur « Next »

RHAHLIA 1
2020-2021 Iset Gafsa

❖ Cliquer sur « Next »

Choisir le serveur payara

❖ Cliquer sur « Finish »


II. Créer un simple Servlet
❖ Créer un nouveau Servlet dans un projet contenu dans une application.

RHAHLIA 2
2020-2021 Iset Gafsa

✓ On peut nommer le Servlet « Servlet1 » et package « com.iset »

❖ Cliquer sur « Next »

RHAHLIA 3
2020-2021 Iset Gafsa

❖ Cliquer sur « Finish », on obtient la page « Servlet1 » :

❖ Puis, Que peut-on conclure à partir de l’arborescence suivante

Une application web est généralement composée des éléments suivants :

• De ressources statiques : pages HTML, images, sons, feuilles de style...


• De ressources dynamiques : servlets, JSP, Java Bean.
• De bibliothèques de classes utilisées par les différents composants dynamiques.

RHAHLIA 4
2020-2021 Iset Gafsa

• D’un descripteur de déploiement permettant de définir les paramètres de


fonctionnement de l’application sur le serveur, les liens entre des URL et les
ressources dynamiques de l’application, les pages par défaut et d’erreur de
l’application, la sécurisation de l’application.
❖ Exécuter l’application

Ici c’est la page index.html qui s’exécute.


❖ Exécuter la servlet
o Saisie de l’URL de la Servlet dans la barre d’adresse du navigateur.
▪ Http://<hôte>:<port>/<webApp>/servlet/<servlet>

Exemple : http://localhost:8080/servlet1/Servlet1
Clique sur un lien hypertexte qui pointe sur l’URL de la Servlet

❖ Erreur d’exécution

RHAHLIA 5
2020-2021 Iset Gafsa

a. Le lien entre la Servlet et l’URL


Le fichier web.xml permet de paramétrer les Servlets de l’application :

Le fichier web.xml permet de


paramétrer les Servlets de
l’application

La déclaration d’une Servlet dans une application Web se fait dans le descripteur de
déploiement «web.xml »
Le code du fichier « web.xml »

RHAHLIA 6
2020-2021 Iset Gafsa

➢ <web-app> ……. </web-app>: encapsule l’ensemble des éléments servant à la


configuration de l’application Web.
➢ <servlet> ……… </servlet>: encapsule l’ensemble des éléments servant à la
configuration de chaque Servlet.
➢ <servlet-name> ………… </servlet-name>: contient une chaîne de caractère
identifiant la Servlet au sein de l’application web.
➢ <servlet-class> ………… </servlet-class>: contient le nom complet de la classe de
Servlet (package compris).
➢ <servlet-mapping> ………… </servlet-mapping>: contient des informations
permettant de définir la relation entre les URL et les servlets.
➢ <servlet-name> ………… </servlet-name>: contient une chaîne de caractère
identifiant la Servlet au sein de l’application web.
➢ <url-pattern>/servlet/…….</url-pattern> : définit comment une Servlet est
invoquée.
❖ Exécuter la servlet

RHAHLIA 7
2020-2021 Iset Gafsa

III. Créer une Servlet authentification


a. La page d’accueil

❖ Cette page convient au code suivant :

✓ L’action du formulaire se traite dans la Servlet « servlet1 » afin de vérifier les


coordonnées saisis

RHAHLIA 8
2020-2021 Iset Gafsa

❖ S’ils sont corrects

❖ Si on a une erreur dans la saisie des données, par exemple :

❖ On obtient :

❖ Cette page convient au code suivant :

RHAHLIA 9
2020-2021 Iset Gafsa

IV. Interface RequestDispatcher


La plupart du temps, la programmation de Servlets consiste de récupérer des données en
paramètre, à traiter ces données et à envoyer une réponse adaptée au client. Nous avons
utilisé la méthode sendRedirect() de l’objet response qui permet de rediriger l’utilisateur
vers une page précise. Par contre, cette redirection ne permet pas d’envoyer des données
directement dans le corps du message.
Un objet de type javax.servlet.RequestDispatcher est créé par le conteneur web pour
chaque application. Il permet d’ :
✓ effectuer un traitement contenu vers une autre ressource Web
✓ inclure le contenu d’une autre ressource Web dans la réponse HTTP.
a. la méthode getRequestDispatcher
La syntaxe de la méthode getRequestDispatcher (chemin) doit commencer par un signe / qui
permet de faire référence au contexte de l’application Web courante. Ce chemin est complété
ensuite vers la ressource statique (HTML, XML, PDF,…) ou dynamique (page JSP, une autre
Servlet …). Une fois l’objet javax.servlet.RequestDispatcher obtenu, il est possible

RHAHLIA 10
2020-2021 Iset Gafsa

d’invoquer la méthode qui permet de déléguer le traitement de la requête HTTP à la ressource


ou la méthode permettant d’inclure du contenu dans la réponse HTTP.
b. dispatcher.forward(request,response)

La délégation consiste à transmettre la requête HTTP courante à une autre ressource Web
qui sera chargée de son traitement et qui peut également transmettre la requête à une autre
ressource. Pour cela, la méthode forward() permet de transmettre le contenu complet de la
requête (donc avec les paramètres) vers une autre page.

V. L’interface ServletConfig
1. Présentation de l’interface

❖ Les informations de configuration d’une Servlet au sein d’une application Web (non
de la Servlet, les paramètres sous formes de nom/valeur) sont représentées par un objet de
type javax.servlet.ServletConfig.
❖ L’objet javax.servlet.ServletConfig est crée par le conteneur web pour chaque
élément <servlet> déclaré dans le descripteur de déploiement web.xml de l’application
web.

RHAHLIA 11
2020-2021 Iset Gafsa

❖ Les informations de configurations représentées par l’objet


javax.servlet.ServletConfig peuvent ensuite être récupérées par la Servlet de préférence
lors de sa phase d’initialisation au sein de la redéfinition de la méthode init(…).
2. Initialisation d’une Servlet

Après son chargement en mémoire, le conteneur Web passe en phase d’initialisation de la


Servlet et la méthode init () est invoquée. Elle est très souvent surchargée pour récupérer des
informations de configuration, charger des ressources utiles à la Servlet. L’interface
ServletConfig permet ensuite de manipuler les paramètres du fichier de configuration de
l’application web.xml.
Syntaxe de la méthode init () :
o public void init (ServletConfig config ) throws ServletExeption;
o public void init () throws ServletExeption;

3. Les méthodes d’une Servlet


❖ Les méthodes de l’interface javax.servlet.ServletConfig dédiées à la récupération des
paramètres d’une Servlet:

✓ public String getServletName() permet de récupérer le nom de la Servlet déclaré


au sein du descripteur de déploiement ou le nom de la classe de la Servlet.
✓ public String getInitParameter (String nom) permet de récupérer une chaîne de
caractères contenant la valeur d’un paramètre nommé nom ou la valeur null si le
paramètre n’existe pas.
✓ public java.util.Enumeration getInitParameterNames(): permet de récupérer
sous la forme d’un objet de type java.util.Enumeration l’ensemble des noms des
paramètres déclarés pour la Servlet.
✓ public ServletContext getServletContext():elle récupére une référence sur le
contexte d’exécution de la Servlet qui permet d’interagir avec le conteneur web de
l’application Web.

RHAHLIA 12
2020-2021 Iset Gafsa

Exemple :
1) Le fichier de configuration « web.xml »
A. Les paramètres de configurations de la Servlet
❖ <init-param> …. </init-param> : Encapsule les paramètres d’initialisation de la
Servlet. Chaque élément <init-param> ….. </init-param> correspond à un paramètre
représenté par une paire nom/valeur avec les éléments :
o <param-name> ….. </param-name>,
o <param-value> ….. </param-value>.
B. Saisir les paramètres Identifiant et Mot de passe

RHAHLIA 13
2020-2021 Iset Gafsa

2) Exercice : L’initialisation d’une Servlet


❖ La méthode init ()

RHAHLIA 14
2020-2021 Iset Gafsa

❖ Les méthodes doGet() et doPost()

VI. L’interface ServletContext


1) Présentation

L’interface javax.servlet.ServletContext représente les informations de configuration d’une


Application Web totale. Chaque Servlet de la même application Web aura donc accès à ces
paramètres.
Elle permet d’interagir avec le conteneur Web de l’application. Il y aura donc un accès en
lecture et en écriture dans le fichier de configuration. Donc on peut créer, lire et supprimer des
attributs de façon dynamique, ce qui permet alors le partage de ressources entre Servlets d’une
même application Web.

RHAHLIA 15
2020-2021 Iset Gafsa

❖ Les informations de configuration d’une application Web sont représentées par un


objet de type javax.servlet.ServletContext. Chaque Servlet d’une même application
Web a donc accès à ces informations.
❖ L’objet javax.servlet.ServletContext propose des méthodes permettant de travailler
principalement avec deux catégories de données :
✓ Accéder à des paramètres globaux de l’application Web déclarés dans son
descripteur de déploiement web.xml.
✓ Créer, lire et supprimer des attributs de façon logicielle, permettant le partage de
ressources entre les Servlets d’une même application Web.
2) Utilisation
Un objet de type javax.servlet.ServletContext est obtenu en invoquant directement la
méthode getServletContext() dans les méthodes des Servlets (objet Servlet).
De la même manière que la déclaration spécifique de paramètre par Servlet, il est possible
de déclarer des paramètres globaux pour toute l’application.
L’élément <web-app>, racine du fichier de configuration web.xml, peut contenir zéro ou
plusieurs éléments <context-param> qui permettent de déclarer des paramètres de
l’application Web. Chaque élément <context-param> correspond à un paramètre
représenté par une paire nom/valeur avec les éléments <param-name> et <param-
value>

RHAHLIA 16
2020-2021 Iset Gafsa

3) La récupération des paramètres

Pour récupérer les paramètres globaux d’initialisation présents dans le fichier de


configuration, il existe plusieurs méthodes. La première méthode getInitParameter (param)
permet de récupérer une chaîne de caractère contenant la valeur d’un paramètre ou null si le
paramètre n’existe pas.
La seconde méthode getInitParameterNames () permet de retourner l’énumération de
l’ensemble des paramètres déclarés dans le fichier de configuration.

❖ Les méthodes doGet() et doPost()

RHAHLIA 17
2020-2021 Iset Gafsa

❖ La page d’erreur affiche le nom de l’administrateur

❖ Si on clique sur « Envoyer », on obtient :

RHAHLIA 18
2020-2021 Iset Gafsa

4) Ajouter des paramètres


L’avantage de l’utilisation de l’interface ServletContext est la possibilité d’ajouter des
attributs. Le contexte est accessible par l’ensemble des Servlets/JSP de l’application Web et
peut donc stocker, récupérer et détruire des attributs.
Les attributs d’une application Web sont donc des variables globales appelées également
variables d’application des éléments participants à sa fonctionnement et qui peuvent être
partagées simultanément par plusieurs Servlets et pages JSP.
✓ La méthode setAttribute (nom,objet) : utilisée pour positionner un attribut qui sera
visible dans toute l’application (portée d’application),. Si le nom de l’attribut existe
déjà, la valeur existante est remplacée par la nouvelle.
✓ La méthode getAttribute (nom) : utilisée pour récupérer la valeur d’un attribut de
type quelconque dans l’application ou la valeur null si l’attribut n’existe pas.
✓ La méthode getattributesNames () : récupérer le nom de tous les attributs
actuellement stockés dans le contexte de l’application Web
✓ La méthode removeAttribute (nom) : Suppression de l’attribut indiqué dans le
contexte de l’application Web.
5) La mise en application
❖ Créer une classe Client :
✓ Les attributs : identifiant, mot de passe
✓ Les méthodes accesseurs : getIdentifiant() , getMotDePasse()
setIdentifiant (identifiant),setMotdepasse( motdepasse)

RHAHLIA 19
2020-2021 Iset Gafsa

❖ Le nouveau code de la Servlet1 permet de sauvegarder l’objet client correctement


authentifié dans le contexte de l’application.
✓ La méthode init ()

RHAHLIA 20
2020-2021 Iset Gafsa

✓ La méthode doGet ()

Après l’appel de la Servlet « Servlet1 » par le biais de l’URL


http://localhost:8080/Test/Servlet1, nous pouvons déclencher la Servlet en respectant le
code et la configuration du fichier web.xml.
L’objet client1 stocké dans la variable globale est accessible pour toute l’application. Lors du
redémarrage (ou de l’arrêt) du serveur, le contexte sera détruit.

RHAHLIA 21
2020-2021 Iset Gafsa

❖ Le résultat obtenu est :

Si on clique sur « Envoyer »

RHAHLIA 22
2020-2021 Iset Gafsa

RHAHLIA 23

Vous aimerez peut-être aussi