Vous n'êtes pas connecté. Connexion
|
|
TP3 M1 Miage applications web, 2012-2013De $1Table des matièresIntroductionDans ce TP nous allons intégrer au TP1 des éléments vus lors des derniers cours et TPs. Gestion de login/passwords en AjaxLors 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 livresOn 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 :
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 :
|
Powered by MindTouch Deki Open Source Edition v.8.08 |