d3:tp05

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
d3:tp05 [2025/09/28 19:32] – [V. Amélioration de l’application] dthevenotd3:tp05 [2025/10/03 14:09] (Version actuelle) – [Autres évolutions/Améliorations possibles] dthevenot
Ligne 92: Ligne 92:
 </article>  </article> 
 </code> </code>
-===== III. Comment fonctionne la session1 =====+===== III. Comment fonctionne la session =====
    
 ==== 1. À la suite d'un appel à request.getSession() : ==== ==== 1. À la suite d'un appel à request.getSession() : ====
Ligne 106: Ligne 106:
    
   * Se positionner sur l'onglet Réseau des outils de développement, recharger la page et  créer un nouveau client    * Se positionner sur l'onglet Réseau des outils de développement, recharger la page et  créer un nouveau client 
-  * Cliquer sur la ligne de la requête POST, l'onglet Cookie permet de connaître son  identifiant : valeur de JSESSIONID +  * Cliquer sur la ligne de la requête POST, l'onglet Cookie permet de connaître son  identifiant : valeur de JSESSIONID (Doc - Name = NouveauClient - Headers
   * On retrouve également cet identifiant dans l'entête de la requête.    * On retrouve également cet identifiant dans l'entête de la requête. 
 +{{:promo_2026:sio2:slam:jsessionid.png?600|}}
 ===== IV. Modification de l'authentification ===== ===== IV. Modification de l'authentification =====
    
 Actuellement, la page d'authentification existe, mais il est possible de passer outre : on peut aller  directement à la liste des clients ou créer un nouveau client. (Ex :localhost:8080/Test2Jakarta/NouveauClient).  Actuellement, la page d'authentification existe, mais il est possible de passer outre : on peut aller  directement à la liste des clients ou créer un nouveau client. (Ex :localhost:8080/Test2Jakarta/NouveauClient). 
  
-Après une authentification réussie, il faudra mettre en session un booléen (isAuthentified)  indiquant cette réussite ou non (méthode doPost de la servlet AuthentifServ.java, avant la  redirection). De même, il faudra supprimer cette variable de session au niveau de la méthode  doGet. +L'authentification concerne les salariés de l'entreprise il faut donc les gérer : 
 +  - créer une **table salarie** dans la base de données qui contient leur login, mot de passe et leur rôle (estAdmin, booléen : administrateur ou pas) 
 +  - créer la **javabean SalarieMysql** pour gérer les salariés (2 méthodes : readAll() et lireSalarie((String login, String mdp))) 
 +  - créer une méthode **existeUser**(HttpServletRequest request) dans la classe **AuthentifForm** qui retourne un booléen pour vérifier l'existence de l'utilisateur dans la base de données 
 +  - changer la méthode **controlerAdmin** de la classe AuthentifForm pour utiliser le **rôle** du salarié qui s'authentifie 
 + 
 +Après une authentification réussie, il faudra mettre en session un booléen (**isAuthentified**)  indiquant cette réussite ou non (méthode **doPost de la servlet AuthentifServ.java**, avant la  redirection). De même, il faudra supprimer cette variable de session au niveau de la méthode  doGet. 
  
 Ensuite il faudrait faire en sorte qu'aucune page ne puisse s'afficher sans passer par une  authentification réussie.  Ensuite il faudrait faire en sorte qu'aucune page ne puisse s'afficher sans passer par une  authentification réussie. 
-Cette façon de procéder fonctionne, mais le problème, c'est qu'il faudrait reproduire cette  modification dans toutes les servlets. Ce qui n'est pas satisfaisant. + 
 +<del>Cette façon de procéder fonctionne, mais le problème, c'est qu'il faudrait reproduire cette  modification dans toutes les servlets. Ce qui n'est pas satisfaisant. 
  
 Au lieu d'apporter cette modification dans toutes les servlets, nous allons créer un **filtre**.  Au lieu d'apporter cette modification dans toutes les servlets, nous allons créer un **filtre**. 
Ligne 122: Ligne 130:
  
 Pour créer un filtre :   Pour créer un filtre :  
-  * onglet File>New File>Web>Filter puis Next.  +  * onglet **File>New File>Web>Filter** puis **Next**.  
-  * Nommer ce filtre AuthentifFilter, indiquer le Package com.personnelTP.filter, puis Next  +  * Nommer ce filtre **AuthentifFilter**, indiquer le Package **com.mycompany.filter**, puis **Next** 
-  * Cocher la case "Add information to deployment descriptor (web.xml)", puis Next et Finish  +  * Cocher la case "**Add information to deployment descriptor (web.xml)**", puis **Next et Finish**  
-Remplacer le corps de la méthode doFilter par celui-ci : +Dans la classe AuthentifFilter.java, remplacer le corps de la méthode **doFilter** par celui-ci : 
 <code> <code>
 // Cast de l'objet request  // Cast de l'objet request 
Ligne 139: Ligne 147:
 boolean authentificationOK = false;  boolean authentificationOK = false; 
 if (maSession.getAttribute("isAuthentified") != null) { if (maSession.getAttribute("isAuthentified") != null) {
- authentificationOK = (boolean)   + authentificationOK = (boolean) maSession.getAttribute("isAuthentified"); 
-maSession.getAttribute("isAuthentified"); +
  
 if (authentificationOK) {  if (authentificationOK) { 
Ligne 155: Ligne 162:
  
 Vérifier la présence de 2 nouvelles sections au niveau du fichier web.xml : <filter> et <filter mapping>  Vérifier la présence de 2 nouvelles sections au niveau du fichier web.xml : <filter> et <filter mapping> 
-Peut-être avez-vous remarqué un problème concernant les caractères spéciaux (accent, tréma,  …) saisis dans les formulaires. Pour remédier à ce problème, il faut ajouter un filtre qui permettra  de spécifier le format d'encodage UTF-8 pour les données échangées.  
  
-Télécharger **filtreEncodage.xml** depuis le Driveet en copier le contenu dans votre fichier **web.xml**,  redémarrer le serveur// Tomcat (Services/Serveur/Restart)// et tester.+<del>Peut-être avez-vous remarqué un problème concernant les caractères spéciaux (accenttréma,  …) saisis dans les formulairesPour remédier à ce problèmeil faut ajouter un filtre qui permettra  de spécifier le format d'encodage UTF-8 pour les données échangées
  
-====== Résumé ======+Télécharger **filtreEncodage.xml** depuis le Drive, et en copier le contenu dans votre fichier **web.xml**,  redémarrer le serveur// Tomcat (Services/Serveur/Restart)// et tester. 
 +</del></del> 
 +<bootnote learn>
    
   * Il existe 4 portées d'objets différentes, représentant 4 durées de vie différentes : page,  requête, session et application.    * Il existe 4 portées d'objets différentes, représentant 4 durées de vie différentes : page,  requête, session et application. 
Ligne 174: Ligne 182:
 ArrayList <Salarie> …)  ArrayList <Salarie> …) 
   * La mémorisation d'un attribut de session s'effectue par     * La mémorisation d'un attribut de session s'effectue par  
-<code>maSession.setAttribute("nomAttribut", attribut); </code> +<code>maSession.setAttribute("nomAttribut", attribut); </code></bootnote>
-  * Un **filtre** est un objet Java qui peut modifier les entêtes et le contenu d'une requête http  avant l'intervention d'une servlet. Il pourra être utilisé pour obliger l'utilisateur à  s'authentifier avant d'accéder à l'application  +
-  * C'est dans la méthode doFilter du filtre que l'on vérifiera la présence d'une variable de  session indiquant si l'utilisateur s'est correctement authentifié  +
 ===== V. Amélioration de l’application ===== ===== V. Amélioration de l’application =====
    
 À partir de la liste des clients, proposer la modification  : À partir de la liste des clients, proposer la modification  :
-  * Quand l'utilisateur souhaite modifier un client, il clique le lien hypertexte Modifier. Les données du  client apparaissent au niveau du formulaire. La validation permet la mise à jour dans la base de  données. +  * Quand l'utilisateur souhaite modifier un client, il clique le lien hypertexte //Modifier//. Les données du  client apparaissent au niveau du formulaire. La validation permet la mise à jour dans la base de  données. 
 À vous de voir s'il y a besoin de créer des variables de session. Les méthodes doGet et doPost de la servlet se compliquent un peu : elles doivent désormais gérer les 2 cas : création ou  modification.  À vous de voir s'il y a besoin de créer des variables de session. Les méthodes doGet et doPost de la servlet se compliquent un peu : elles doivent désormais gérer les 2 cas : création ou  modification. 
  
-===== 1. Modification de l'interface graphique nouveauJsp.jsp ====+==== 1. Modification de l'interface graphique listeclientVue.jsp ==== 
-  +Ajouter une colonne intitulée **Action** au tableau. Au niveau de chaque ligne de cette colonne,  proposer "Modifier" qui sera un lien hypertexte vers nouveau?id=xx 
-Ajouter une colonne intitulée Action au tableau. Au niveau de chaque ligne de cette colonne,  proposer "Modifier" qui sera un lien hypertexte vers nouveau?id=xx +
   - Quelle servlet s'activera après un clic sur Modifier ?    - Quelle servlet s'activera après un clic sur Modifier ? 
   - Quelle méthode de cette servlet sera sollicitée ?    - Quelle méthode de cette servlet sera sollicitée ? 
-===== 2. Modifier la servlet de façon à ce qu'elle tienne compte de la requête de l'utilisateur et  qu'elle permette la modification du client. =====+==== 2. Modifier la servlet de façon à ce qu'elle tienne compte de la requête de l'utilisateur et  qu'elle permette la modification du client. ====
    
-===== 3. Modifier à nouveau l'interface graphique, en cas de modification, il faut : =====+==== 3. Modifier à nouveau l'interface graphique, en cas de modification, il faut : ====
    
   - Changer la légende affichée au niveau de la partie formulaire    - Changer la légende affichée au niveau de la partie formulaire 
Ligne 199: Ligne 203:
   - Quelle servlet s'activera sur un clic du bouton Valider ?    - Quelle servlet s'activera sur un clic du bouton Valider ? 
   - Quelle méthode de cette servlet sera sollicitée ?    - Quelle méthode de cette servlet sera sollicitée ? 
-===== 4. Modifier à nouveau la servlet afin d'effectuer la mise à jour dans la base de données et  dans la collection lesNvxClients. =====+==== 4. Modifier à nouveau la servlet afin d'effectuer la mise à jour dans la base de données et  dans la collection lesNvxClients. ==== 
 +===== VI.Autres évolutions/Améliorations possibles ===== 
 +  - suppression d'un client 
 +  - hachage du mot de passe 
 +  - sécurisation de l'application 
 +  - ajout favicon 
 +  - ... 
  
  • d3/tp05.1759080768.txt.gz
  • Dernière modification : 2025/09/28 19:32
  • de dthevenot