TP n°2
Transcription
TP n°2
TP n°2 documentation : http://java.sun.com/products/servlet/2.2/javadoc/index.html Ce TP reprend intégralement le TP précédent et le complète. Créer un nouveau projet tp2 en copiant le précédent. Objectifs du TP Séparation de l'aspect traitement (implanté par une servlet) de l'aspect présentation (implanté par une jsp). Création de page d'erreur. Spécification de l'application Nous souhaitons écrire une application dont le but est de générer automatiquement, pour ses abonnés, une grille de loterie. Elle propose un formulaire à travers lequel un utilisateur entre son nom. Dans le cas où cet utilisateur est connu du système, une grille est affichée et lui est envoyée. Si cet utilisateur n'est pas reconnu par le système, le formulaire est réaffiché avec un message d'erreur en rouge : ″vous n'êtes pas reconnu par le système!″. L'application est constituée d'une jsp (formulaire.jsp) qui gérera la présentation du formulaire et d'une servlet (Controleur) qui assurera le traitement, c'est à dire l'identification de l'utilisateur et demandera l'affichage Question1 Ecrire la page formulaire.jsp qui sera chargée d'afficher le formulaire qui suit : On s'appuiera sur le fichier HTML du tp1. Question 2 On complète le fichier précédent pour lui permettre la récupération de la valeur entrée dans la zone de texte. Balise JSP : o Les scripts sont des instructions Java embarquées dans du code HTML entre les balises <% %> o Les déclarations globales à une page JSP sont effectuées entre les balises <%! %> o Une balise d'expression contient une expression Java <%= %> Exemple : <input name="Nom" value= "<%= nom %>" type="text"> Question 3 Lancer l'application en tapant l'URL suivante : http://localhost:8080/tp2/formulaire.jsp Que se passe-t-il ? Supposons que Marie soit associée au paramètre Nom contenu dans l’objet request le script jsp situé au début du fichier permet de récupérer cette valeur dans une variable java la nouvelle valeur du paramètre jsp Nom prend la valeur ″Marie″. L’objet request est un objet implicite. Il n’est donc pas déclaré. page jsp objet request envoyer paramètre Nom script jsp getParameter("Nom") affiche ″Marie″ String nom Question 4 On souhaite maintenant donner une présentation plus adaptée. Le code d'erreur 404 correspond à une page non trouvée. Le fichier web.xml est complété de la manière suivante, où /404.html est le fichier qui traite l'erreur, en affichant le message : ″La page demandée n'existe pas!″. <error-page> <error-code> 404 </error-code> <location> /404.html </location> </error-page> Lancer à nouveau l'application en tapant l'URL suivante : http://localhost:8080/tp2/toto Question 5 Ecrire la servlet Controleur qui : o récupère le paramètre du formulaire o affiche à nouveau le formulaire si le nom saisi n'est pas reconnu par le système. Supposons que, dans un premier temps, il n'y ait que 3 abonnés : ″Leroy″, ″Martin″, ″Bauer″ enregistrés dans la servlet. Si l'utilisateur n'est pas reconnu comme abonné, le formulaire est affiché de nouveau avec un message d'erreur. Pour réafficher le formulaire pré rempli et modifier le paramètre erroné, on utilisera la méthode suivante : o modifier le formulaire Suivant la valeur d'un paramètre que nous nommerons ″erreur″, on affichera le message suivant en rouge à la suite du formulaire : Le nom est inconnu! o modifier le code de la servlet en vous aidant des lignes suivantes ServletContext contexte = getServletContext(); RequestDispatcher dispatcher = contexte.getNamedDispatcher("Formulaire"); if( dispatcher != null ){ request.setAttribute("erreur","oui"); dispatcher.forward(request,response); } Question 6 Compléter la servlet avec une méthode dont le rôle est de générer un tableau de 6 entiers compris entre 1 et 49 représentant une grille du loto. Rappel : En java la classe java.util.Random permet de générer aléatoirement une valeur dans un intervalle donné. La méthode nextInt(int n) appliquée à une instance de Random retourne un entier compris dans l'intervalle [0;n[ Question 7 Ecrire la ″jsp″ grille.jsp qui affichera le nom de l'abonné et la grille générée aléatoirement.