Vous êtes sur la page 1sur 6

Ecole Hassania des Travaux Publics 2ème Année

GI

Ateliers JEE
Application de Chat

Partie 1 : une application de chat anonyme

Nous souhaitons développer une application basique de chat. Pour cette application, une
servlet « Chat » permettra d’afficher une conversation entre plusieurs utilisateurs en reprenant
l’ensemble des messages envoyés durant l’utilisation de l’application. Chaque utilisateur
poste un message et voit l’ensemble de la conversation mise à jour.

Piste de développement :

 Ecrire le code d’une servlet http « Chat » avec


o Un attribut « String Conversation » initialisé à la chaine vide et qui va
permettre de concaténer l’ensemble des messages
o Une méthode doGet qui va encapsuler dans le flux d’écriture de la réponse un
formulaire comprenant
 Un champ « message »
 Un bouton « envoyer »
 L’action du formulaire sera sur la méthode doPost de la même servlet
« Chat »
o Une méthode doPost qui va encapsuler dans le flux d’écriture de la réponse un
formulaire comprenant
 La reprise de la valeur chaîne de caractères « Conversation » dans la
page html à générer
 Un champ « message »
 Un bouton « envoyer »
 L’action du formulaire sera sur la méthode doPost de la même servlet
« Chat »

Déployer la servlet et la tester en utilisant différentes machines.

Partie 2 : Ajout du rafraichissement de la conversation

Avec la configuration précédente, on ne peut voir l’évolution de la conversation et les


messages envoyés par les autres utilisateurs qu’après l’envoi d’un nouveau message de
l’utilisateur concerné.

1
Rajouter une option de rafraîchissement au niveau de la servlet « Chat ». L’objectif est de
permettre à chaque utilisateur de rafraichir la conversation sans envoyer de nouveaux
messages.

Piste de développement :

 Rajouter un deuxième formulaire au niveau des méthodes doGet et doPost comprenant


un bouton « Rafraichir » dont l’action est sur la méthode doGet. Cette méthode
affichera aussi maintenant le contenu de l’attribut « Conversation ».

Partie 3 : Identification des utilisateurs

Nous souhaitons maintenant identifier l’origine des différents messages. Pour cela, chaque
message correspondra forcément à un utilisateur qui définira un pseudo avant de démarrer la
session de chat.

Ecrire une servlet « Identification » dont l’objectif est de mettre en œuvre cette phase
préliminaire.

Piste de développement :

 Ecrire une servlet « Identification » avec


o Une méthode doGet comprenant un formulaire avec
 un champ « Pseudo »
 un bouton « soumettre »
 l’action du formulaire est sur la méthode doPost de la servlet
o Une méthode doPost qui

2
 Démarre une session pour chaque utilisateur à sa première requête sur
la servlet
 HttpSession s=req.getSession(true) ;
 Réalise la création d’une valeur de session en associant à cette valeur le
pseudo envoyé par la méthode doGet
 String pseudo = req.getParameter("Pseudo");
 s.setAttribute("LePseudo" , pseudo);
 Introduit un premier formulaire avec un bouton de confirmation de
pseudo qui renvoie vers la servlet « Chat »
 Introduit un deuxième formulaire avec un bouton de correction qui
renvoie sur la méthode doGet pour choisir un autre pseudo.
 Au niveau de la servlet « Chat »,
o On peut récupérer le pseudo en appelant l’objet session avec la méthode
getAttribute
 s.getAttribute("LePseudo") ;
o Réaliser les modifications nécessaires pour tracer l’origine des messages au
niveau d’une même conversation.

Partie 4 : Connexion et Authentification des utilisateurs

Nous souhaitons maintenant authentifier les utilisateurs avec un login et un mot de passe.
Pour cela, nous allons définir les servlets qui suivent avec le comportement décrit ci-dessous :

 Une servlet « Connexion » permettant à un utilisateur soit de s’inscrire s’il n’est pas
encore inscrit ou de s’authentifier s’il s’est déjà connecté auparavant. Selon le choix
effectué par l’utilisateur, elle renvoie sur la servlet « Authentification » ou sur la
servlet « Inscription »
 Une servlet « Inscription » permettant à un nouveau membre de s’inscrire en saisissant
un login et un mot de passe. Après la saisie, un message de bienvenue est affiché à
l’utilisateur en l’invitant à appuyer sur un bouton pour démarrer le chat. Elle renvoie
vers la servlet « Chat »
 Une servlet « Authentification » qui permet de saisir un login et un mot de passe.
Après avoir appuyé sur un bouton envoyer, l’utilisateur est renvoyé vers la servlet
« Chat » si l’authentification réussit. Sinon, un message d’erreur est affiché et
l’utilisateur est invité à saisir une autre fois le login et le mot de passe. Il a aussi la
possibilité de revenir vers la servlet « Connexion ».
 Une servlet « Chat » qui présente le même fonctionnement que dans la partie 3. Elle
présente aussi un bouton permettant de se déconnecter. Un rafraichissement
automatique est aussi implanté permettant de recharger la conversation toutes les 15
secondes.

Piste de développement :

3
 La servlet Connexion :
o Définira aussi une valeur de session « ConnexionOK » qui sera un booléen
exprimant si un utilisateur est authentifié ou pas. Cette valeur sera positionnée
initialement à « false ».
o Pour la méthode GET, elle créera deux formulaires
 Le premier formulaire comprendra un bouton « s’inscrire » et renverra
vers la servlet « Inscription »
 Le deuxième formulaire comprendra un bouton « s’authentifier » et
renverra vers la servlet « Authentification »
 La servlet « Inscription »
o Avec une méthode GET comprenant un formulaire qui offre
 Un champ de saisie du login
 Un deuxième champ pour saisir le mot de passe
 Un bouton confirmer
 L’action du formulaire est sur la méthode POST de la servlet
o Et une méthode POST qui
 Récupère le login et le mot de passe soumis par la méthode GET
 Met l’attribut « LePseudo » à la chaîne de caractère saisie dans le login
 Crée un attribut « mdp » à la chaîne de caractères saisie dans le mot de
passe
 Affiche un message de bienvenue
 Met l’attribut « ConnexionOK » à true
 Affiche un formulaire avec un bouton « Démarrer le Chat » qui renvoie
vers la servlet « Chat »
 La servlet « Authentification »
o Avec une méthode GET comprenant un formulaire qui offre
 Un champ de saisie du login
 Un deuxième champ pour saisir le mot de passe
 Un bouton confirmer
 L’action du formulaire est sur la méthode POST de la servlet
o Et une méthode POST qui
 Récupère le login et le mot de passe soumis par la méthode GET
 Compare ces deux chaines de caractères avec les attributs de session
« LePseudo » et « mdp »
 Si cela correspond
o L’attribut « ConnexionOK » est mise à true
o un formulaire est introduit comprenant un message de
bienvenue et un bouton « Démarrer le Chat » qui
renvoie vers la servlet « Chat »

 Sinon

4
o Un deuxième formulaire est introduit comprenant un
message d’erreur, un premier bouton « Réessayer » qui
renvoie vers le GET,
o Un troisième formulaire est aussi introduit avec un
bouton « S’inscrire » qui renvoie vers la servlet
« Inscription »
 La servlet « Chat » qui garde le même code avec les modifications suivantes
o Dans un premier lieu, on récupère l’attribut « ConnexionOK ».
 Si cet attribut est égale à false, un message d’erreur est affiché et un
formulaire est introduit comprenant un bouton permettant de revenir
vers la servlet « Connexion »
 Si cette valeur est à true
 On garde le même fonctionnement avec un formulaire
supplémentaire comprenant un bouton « Quitter » qui renvoie
vers la servlet « Connexion » et met par effet de bord l’attribut
« ConnexionOK » à false.
 Dans la page html, générée, on peut utiliser la balise <META http-
EQUIV="Refresh" CONTENT="15"> pour rafraichir automatiquement
toutes les 15 secondes.

Partie 5 : implantation de la persistance

Dans cette partie nous allons aborder l’utilisation de l’IDE Netbeans. Dans un premier lieu
une démonstration sera réalisée pour montrer son utilisation dans un contexte de
développement d’une application JEE. Typiquement cette démonstration portera sur la
définition des composants Web, Métier, et gestion des données vues en cours.

Pour la suite, nous souhaitons implanter la persistance au niveau de notre application chat.

1- Permettra de faire persister les utilisateurs de l’application en


a. Définition une entité « utilisateur » permettant de stocker les informations
jugées nécessaires relatives à un utilisateur
b. Un EJB session jouant le rôle de façade de l’entité permettant de
i. Créer un utilisateur
ii. D’authentifier un utilisateur
c. Définition d’une entité « message » permettant de stocker les messages
envoyés par les utilisateurs
d. Un EJB session jouant le rôle de façade de l’entité permettant de
i. Initialement d’afficher les dix derniers messages
ii. Liste les messages en cours lors d’une discussion
iii. Lister les messages d’un utilisateur donné
e. Les servlets « Connexion », « Inscription », « Authentification », et « Chat »
conservant la même sémantique.

Les servlets auront le comportement suivant :

5
1- La servlet « Connexion » renverra toujours le choix Inscription/Authentification
2- La servlet « Inscription » permettra
a. d’inscrire un nouvel utilisateur avec un login et mot de passe.
b. Elle veillera à ce que le login ne soit pas utilisé par un autre utilisateur déjà
inscrit. Dans ce cas, elle affichera un message d’erreur demandant à
l’utilisateur de choisir un autre login ou de s’authentifier s’il est déjà inscrit.
3- La servlet « Authentification » permettra
a. De saisir un login et un mot de passe, elle vérifiera si l’utilisateur est
correctement authentifié avant de le laisser accéder à la servlet « Chat ». dans
le cas d’échec d’authentification, un message d’erreur est affiché demandant à
l’utilisateur de de ressaisir ces identifiant ou de s’inscrire
4- La servlet Chat affichera les dix derniers messages de la conversation ou la totalité si
la conversation en contient moins. Elle permettra aussi de trier les messages envoyés
par utilisateur. Pour le reste, elle conserve son comportement précédent.

Vous aimerez peut-être aussi