TP3 M1 Miage applications web, 2012-2013

De $1

Version de 19:14, 19 Avr 2024

cette version.

Revenir à liste des archives.

Voir la version actuelle

Introduction

Dans ce TP nous allons intégrer au TP1 des éléments vus lors des derniers cours et TPs.

Gestion de login/passwords en Ajax

Lors du dernier TP sur jQuery vous avez testé un petit bout de code qui permet de gérer les logins/passwords en Ajax.

Intégrer simplement l'exemple du dernier TP sur jQuery

Dans un premier temps vous allez juste intégrer bêtement cet exemple dans le code de votre TP. Ajoutez le formulaire de saisie + le code Javascript dans la partie "en-tête" de votre application (le bandeau en haut de la page), Créez une servlet ServletLogin comme dans le TP précédent, vérifiez que cela fonctionne.

Ajouter un objet dans la session HTTP pour indiquer qu'on est bien connecté

Maintenant, on va modifier la ServeltLogin pour insérer dans la session HTTP un objet qui indique que l'utilisateur est connecté, s'il s'est bien authentifié, vous vous inspirerez de l'exemple donné dans le support de cours sur les pages JSPs (pages 28 et 29).

Modification de toutes les Servlets pour qu'elles ne fassent rien tant qu'on est pas connecté

Si on invoque n'importe quelle autre Servlet du projet, elles ne doivent rien faire si on est pas connecté.

Modification de la JSP principale pour qu'elle affiche un message si on est pas connecté

Là aussi, si on demande l'affichage d'une page du projet (soit directement en tapant l'adresse de la JSP dans le navigateur, soit par un forwad() depuis une Servlet), dans le cas où l'utilisateur n'est pas connecté, un message "vous devez vous identifier" doit apparaitre dans la page principale.

Par la suite, toute Servlet ou toute page JSP devra vérifier l'état "connecté" de l'utilisateur

Et oui, si votre projet comprends 10 Servlets et 15 pages JSPs, il n'est pas question qu'un utilisateur non identifié puisse exécuter du code en entrant directement un URL dans le navigateur. Seules les pages "publiques", pouvant être vues sans être forcément authentifié, n'ont pas besoin de faire cette vérification.

Ajout d'un panier pour acheter des livres

On va modifier le projet pour pouvoir acheter des livres. Pour cela on va créer un modèle "Panier". On ne se préoccupera pas pour l'instant de la persistence du panier dans une base de données, on gèrera la liste des livres mis dans le panier uniquement en mémoire, à l'aide d'une collection. Souvent d'ailleurs, dans les sites de e-commerce, les paniers ne sont pas persistants (les commandes, en revanche le sont... ce sont juste des "paniers validés" avec quelques informations supplémentaires.

Modèlisez un panier

Un panier n'est rien d'autre qu'une liste de couples Livre/Quantité. Par exemple je peux acheter 1 exemplaire du livre A et 2 exemplaires du livre B. Ecrivez la classe Panier.java (vous aurez sans doute besoin d'une classe en plus pour décrire le couple Livre/Quantité, je propose de l'appeler LivreQuantite.java). Un Panier est donc une ArrayList d'instances de cette classe LivreQuantite.

Ajoutez des méthodes :

  • AddBook(int quantite, Book livre)
  • getBooks() qui renvoie une Collection de couples LivreQuantite
  • getPrixTotal() qui renvoie le prix total

Pourquoi pas de "gestionnaireDePanier" ?

Et bien parceque on aura un panier et un seul par personne connectée. A-t-on besoin de "rechercher un panier" ? De "lister tous les paniers ?" etc. Non, le panier est unique pour chaque client. Les méthode dans le modèle suffiront donc pour "le gèrer". 

Quelle durée de vie pour le panier ?

D'après vous ? Un panier a la même durée de vie que la session HTTP ! On utilisera non pas l'annotation @ApplicationScoped mais @SessionScoped pour l'injecter ! Attention, il faut impérativement que le package importé soit import javax.enterprise.context.SessionScoped;  

le panier va "exister" lorsqu'on passera d'une page du site à l'autre, etc. son contenu ne doit pas être perdu.

Ajout d'un lien dans la table des livres pour l'ajouter au panier

Vous ajouterez un lien dans une colonne supplémentaire de la table d'affichage des livres, intitulé "ajouter au panier". Ce lien pointera par exemple sur ServletPanier?action=ajouterLivre&id=3 ou id vaut l'id du livre.

Ecriture d'une Servlet pour gérer le panier

Cette Servlet va devoir faire plusieurs choses : 

  1. Injecter le panier
  2.  
  3. Vérifier qu'on est bien connecté, comme vu en début de TP.
  4. Si on est conncté, regarder