Note:
Ajouter une dépendance (pom.xml) :
<dependency> <groupId>org.mariadb.jdbc</groupId> <artifactId>mariadb-java-client</artifactId> <version>3.3.3</version> </dependency>
Nous poursuivons notre application de gestion des clients. Cette application doit permettre :
Le travail commencé a permis de gérer approximativement l'authentification et l'affichage d'un menu. Les pages permettant de créer un nouveau client ou de les lister sont créées, mais elles ne font rien.
Désormais, il faudrait pouvoir afficher la liste des clients.
Par la suite, pour établir une connexion, il faudra écrire : Connection theConnection = Connexion.getConnect( “192.168.100.100”, “bdclient”, “adminBDClient”, “mdpBDClient”);
La méthode getConnect est une méthode statique, qui peut donc être utilisée sans avoir besoin d'instancier la classe Connexion. Elle a besoin de 4 paramètres : le serveur de base de données, le nom de la base de données, un user de connexion avec son mot de passe associé.
Cette classe sera dédiée aux requêtes SQL concernant la table client. Elle disposera d'un attribut : laConnexion de type Connexion et nous y implanterons les méthodes CRUD :
Créer la nouvelle classe Java ClientMysql dans le package bdd
Les requêtes SQL ont besoin d'un objet de type Statement qui contiendra la requête SQL executeQuery. Cette méthode retourne un objet de type ResultSet (jeu d'enregistrements). Il faut appliquer la méthode next() au ResultSet obtenu pour se positionner sur un enregistrement. Ensuite, les méthode getInt(“nomAttribut”) ou getString(“nomAttribut) permettent de récupérer les valeurs des attributs.
Exemple :
public ArrayList<Client> readAll(){ ArrayList<Client> lesClients=new ArrayList<>(); try { Statement stmt=theConnection.createStatement(); ResultSet resultQ=null; resultQ=stmt.executeQuery("SELECT * FROM client;"); while (resultQ.next()){ Client resultat=new Client(resultQ.getInt("id"),resultQ.getString("nom"),resultQ.getString("prenom"),resultQ.getString("mail")); lesClients.add(resultat); } resultQ.close(); stmt.close(); } catch(SQLException ex){ System.out.println("SQLException:"+ex.getMessage()); System.out.println("SQLState:"+ex.getSQLState()); System.out.println("code Erreur:"+ex.getErrorCode()); } return lesClients; } }
Modifier la méthode doGet. Avant de solliciter la jsp, elle devra :
La jsp devra afficher les clients présents dans la collection lesClients.
Un fichier .env est un fichier de configuration qui permet de stocker des variables d’environnement nécessaires au fonctionnement de l'applications. Il joue un rôle crucial dans la gestion des paramètres sensibles tels que les clés API, les informations sur les bases de données ou d’autres configurations environnementales qui ne devraient pas être visibles dans le code source. Grâce à ce type de fichier, les développeurs peuvent garantir la sécurité des données tout en conservant une flexibilité dans la configuration des projets.
Le fichier .env peut être créé à la racine de ton projet (là où se trouvent le fichier pom.xml, le dossier src/) :
DB_HOST=192.168.100.100 DB_NAME=bdclient DB_USER=adminBDClient DB_PASSWORD=mdpBDClient
Dans les fichiers de configuratin (Project Files-fichier pom.xml), ajouter une dépendance dotenv-java (librairie utilisable avec Maven) :
<dependency> <groupId>io.github.cdimascio</groupId> <artifactId>dotenv-java</artifactId> <version>3.0.0</version> </dependency>
Dans le code,
import io.github.cdimascio.dotenv.Dotenv;
// 1.Chargement du fichier .env à la racine du projet Dotenv dotenv = Dotenv.load(); // 2. Initialisation des paramètres de connexion String host = dotenv.get("DB_HOST"); // Serveur de bd String dbname = dotenv.get("DB_NAME"); // Nom bd String url = "jdbc:mariadb://" + host + "/" + dbname; // url de connexion url += "?autoReconnect=true"; // Ajout 26/09/2021 System.out.println("url : "+url); String user = dotenv.get("DB_USER"); // nom du user System.out.println("nomUtil : "+user); String passwd = dotenv.get("DB_PASSWORD"); // mot de passe System.out.println("mdp : "+passwd); // 3. Connexion connect = (Connection) DriverManager.getConnection(url, user, passwd);
Dans pom.xml, configurer le plugin maven-resources-plugin pour que .env soit copié dans le target/ à chaque build.
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>3.3.1</version> <executions> <execution> <id>copy-env</id> <phase>process-resources</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${project.build.outputDirectory}</outputDirectory> <resources> <resource> <directory>${basedir}</directory> <includes> <include>.env</include> </includes> </resource> </resources> </configuration> </execution> </executions> </plugin>