TP d’applications web
Accès à une base de données

Initialisation d’une base sous netbeans

Dans votre projet, créez un fichier SQL (clic droit sur le projet, new > SQL file).

Votre fichier SQL contiendra les requêtes de création des tables de la base de données :

CREATE TABLE Users( login varchar2(10) PRIMARY KEY, password varchar2(100) NOT NULL, ville char(3) NOT NULL ); INSERT INTO Users VALUES ('toto', 'toto', 'GRE'); INSERT INTO Users VALUES ('titi', 'titi', 'SMH');

Cette table contiendra les inscrits à la bibliothèque, en stockant leur ville de résidence sous forme d’un code de trois lettres comme celui utilisé dans le servlet de statistiques de la manip 5. Pour simplifier, on ne stocke pas les autres informations (mais vous pouvez le faire à titre d’exercice).

Pour exécuter ce fichier, choisissez la connexion à oracle1 dans « Connection » en haut de l’onglet d’édition, puis cliquez sur l’icône « Run SQL » qui se trouve juste à droite. Remarque : il se peut que lors du premier essai l’exécution échoue à cause d’un timeout car l’établissement initial de la connexion est long. Normalement au deuxième essai cela fonctionne sans erreur.

Installation du pilote de base de données dans tomcat

Le serveur tomcat permet de gérer un pool de connexions à la base de données, et c’est ce qu’on utilisera ici. Pour le faire fonctionner, le serveur a besoin du fichier contenant le pilote JDBC de la base de données Oracle. Ce fichier se trouve sur les machines : il s’agit de /opt/oracle/jdbc/lib/ojdbc7.jar

Pour que tomcat puisse l’utiliser, créez un lien dans apache-tomcat-8.5.11/lib vers ce fichier : ln -s /opt/oracle/jdbc/lib/ojdbc7.jar ~/apache-tomcat-8.5.11/lib/ Redémarrez ensuite le serveur tomcat, sans quoi il ne prendra pas en compte cet ajout.

Si vous souhaitez travailler sur une machine personnelle, vous pouvez vous connecter à oracle1 à condition d’être sur le VPN. Pour le fichier ojdbc7.jar, vous pouvez récupérer celui de l’école en scp : scp votrelogin@pcserveur.ensimag.fr:/opt/oracle/jdbc/lib/ojdbc7.jar ./ par exemple.

Requête depuis un servlet

Lecture d’informations dans la base

Votre table Users est maintenant prête à être utilisée. Modifiez la méthode isLoginValid(username, password) que vous avez implémentée dans le cadre de la manip 7, en vue de vérifier si l’utilisateur existe bien dans la table Users et si son mot de passe est correct.

On utilisera le pool de connexions intégré au serveur tomcat. Pour que tomcat initialise ce pool au déploiement de l’application, il faut ajouter un élément Resource à l’élément racine Context du fichier context.xml de votre projet (il est dans le répertoire META-INF). Le fichier complet devra ressembler à ceci :

<?xml version="1.0" encoding="UTF-8"?> <Context path="/Bibliotheque"> <Resource auth="Container" type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@oracle1.ensimag.fr:1521:oracle1" maxTotal="2" maxIdle="1" maxWaitMillis="20000" name="jdbc/bibliotheque" password="XXXX" username="XXXX" /> </Context>

N’oubliez pas de renseigner vos propres password et username. Attention si vous éditez un fichier qui a été généré automatiquement : la balise ouvrante ne doit pas se terminer par />, sinon cela désigne en fait un élément vide et vous aurez une erreur de syntaxe XML lors du déploiement).

Mise à jour de la base

Modifiez maintenant votre servlet AddCustomer créé lors de la manip 5 de sorte que celui-ci insère dans la table une ligne correspondant au nouvel utilisateur.