Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
d3:tp04:suite [2025/09/26 00:27] – [V. Attention : injection SQL, faille XSS (Cross-Site Scripting) en vue…] dthevenot | d3:tp04:suite [2025/09/28 19:10] (Version actuelle) – [V. Attention : injection SQL, faille XSS (Cross-Site Scripting) en vue…] dthevenot | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== D3-TP04-suite : Persistance des données ====== | + | ====== D3-TP04-suite : Projet gestion de clients - Persistance des données |
===== Contexte ===== | ===== Contexte ===== | ||
Nous poursuivons notre application permettant de gestion des clients d'une entreprise de travaux | Nous poursuivons notre application permettant de gestion des clients d'une entreprise de travaux | ||
Ligne 22: | Ligne 22: | ||
La méthode **getGeneratedKeys** permet de récupérer l' | La méthode **getGeneratedKeys** permet de récupérer l' | ||
- | Exemple de méthode create pour l' | + | Exemple de méthode |
- | < | + | < |
+ | public int create(Client unClient){ | ||
+ | int id=-1; | ||
+ | | ||
+ | |||
+ | try (PreparedStatement prepStmt = theConnection.prepareStatement(sql, | ||
+ | |||
+ | prepStmt.setString(1, | ||
+ | prepStmt.setString(2, | ||
+ | prepStmt.setString(3, | ||
+ | |||
+ | int status = prepStmt.executeUpdate(); | ||
+ | // récupération de la clé auto-générée | ||
+ | if (status > 0) { | ||
+ | try (ResultSet result = prepStmt.getGeneratedKeys()) { | ||
+ | if (result.next()) { // <-- utiliser next() et pas first() | ||
+ | id = result.getInt(1); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | prepStmt.close(); | ||
+ | |||
+ | } catch(SQLException ex){ | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | } | ||
+ | | ||
+ | } | ||
+ | } | ||
</ | </ | ||
==== III. Créer la classe NouveauClientForm dans le package com.test.forms ==== | ==== III. Créer la classe NouveauClientForm dans le package com.test.forms ==== | ||
Ligne 48: | Ligne 76: | ||
- En quoi cela est-il dangereux ? | - En quoi cela est-il dangereux ? | ||
Pour résoudre ce problème, de type faille xss, il faudra tester les zones saisies, elles ne devront pas comporter le caractère "<" | Pour résoudre ce problème, de type faille xss, il faudra tester les zones saisies, elles ne devront pas comporter le caractère "<" | ||
- | * Modifier | + | * Utiliser une expression régulière et la méthode |
Tester. | Tester. | ||