

   
© Groupe Eyrolles, 2004,
ISBN : 2-212-11532-6
partie n° 2 Concepts avancés
186 © Éditions Eyrolles
Enrichir une base de données avec JSP
Pour enregistrer les données à l’intérieur d’une table, il « suffit » d’utiliser la commande
INSERT en y plaçant les valeurs relatives aux attributs définis dans la table.
Nous imaginons maintenant, pour reprendre notre exemple, qu’un fonds de bibliothèque (c’est-
à-dire le nombre de livres) correspond en moyenne à 150 000 livres, que le nombre d’adhérents
peut atteindre les 20 000 et qu’en moyenne 500 livres sont empruntés par jour. Pour enregistrer
Figure 5-3 La table Livres enregistrée sous MySQL.
3646_09_Ch05 Page 186 Mercredi, 4. août 2004 1:49 13 > Apogee FrameMaker Couleur
© Éditions Eyrolles 187
chapitre n° 5 Interroger une base de données
l’ensemble de ces données, il nous faut taper 295 000 fois la commande INSERT
(150 000 livres + 20 000 lecteurs + 500 livres × 250 jours), en faisant bien attention aux virgu-
les, parenthèses et autres guillemets. Ce travail est démesuré et ne peut être réalisé tel quel.
Un autre exemple, très parlant, est celui des sites éditoriaux (journaux en ligne). Chaque jour,
les gros titres, les articles et les photos sont modifiés. Chaque jour, les précédents titres, arti-
cles et photos sont archivés. Toutes ces informations sont bien entendues enregistrées dans une
base de données qui permet la mise en ligne automatique de l’information. Compte tenu du
nombre d’articles et des délais très courts pour les mises à jour, l’enrichissement de ce type de
base de données ne peut être effectué à l’aide de la simple commande INSERT.
Un composant JavaBean communique avec MySQL
En réalité, les commandes CREATE, INSERT, SELECT, etc. sont indispensables pour les
concepteurs (éditeurs ou administrateurs) de bases de données mais elles ne le sont pas pour
les utilisateurs finaux.
Pour enrichir une base de données, il convient de construire une interface simple et conviviale,
proche du mode de fonctionnement de l’utilisateur. Cette interface est constituée, pour l’essen-
tiel, de formulaires dont les champs à remplir correspondent aux différents attributs des tables
créées par le concepteur de la base de données. Après validation des données saisies via le for-
mulaire, ces dernières sont vérifiées puis enregistrées dans la base de données.
Architecture 3-tiers
L’enregistrement de données dans une table s’effectue selon le modèle 3-tiers, présenté à la
figure 5-4.
Tiers est un terme anglais qui se traduit par le mot « étage » et non par « un tiers ».
Figure 5-4 Architecture 3-tiers.
3646_09_Ch05 Page 187 Mercredi, 4. août 2004 1:49 13 > Apogee FrameMaker Couleur
partie n° 2 Concepts avancés
188 © Éditions Eyrolles
Les données sont saisies par l’utilisateur grâce à un formulaire HTML/JSP (premier étage,
figure 5-4-). Lorsque l’utilisateur valide le formulaire, les données sont transmises au ser-
veur Tomcat (deuxième étage, figure 5-4-) à l’aide d’une requête JSP. Les données sont alors
traitées par un composant JavaBean. Après vérification de la validité des données, un compo-
sant JavaBean se connecte à la base de données et lui transmet les données (troisième étage,
figure 5-4-) pour enregistrement.
Ainsi, de la saisie à l’aide de formulaires HTML à l’enregistrement dans une base de données
MySQL, les données réalisent un parcours électronique qui nécessite la mise en place de
connexions permettant la transformation et la transmission des données d’un environnement à
l’autre. En effet, chaque environnement (JSP, JavaBean, MySQL) code et interprète les don-
nées d’une façon qui lui est propre.
L’étude du chapitre 4 « Utiliser un objet Java dans un script » montre comment établir une
communication entre un script JSP et un composant JavaBean. Nous allons maintenant exami-
ner comment les informations stockées dans un composant sont transmises à une base de don-
nées MySQL.
Plusieurs étapes sont nécessaires pour réaliser cette transmission, elles se résument de la façon
suivante :
1. Reconnaissance de la base de données et création d’un objet Connection.
2. Mise en place d’un tube de communication à partir de l’objet Connection.
3. Transmission de requêtes entre un JSP et une base de données via le tube.
Reconnaître la base de données et créer un objet Connection
Pour qu’un composant JavaBean interroge une base de données ou lui transmette une informa-
tion, il doit au préalable se connecter à la base de données. Pour réaliser cette connexion, le
composant doit connaître le moyen de communiquer avec la base de données. Il lui faut pour
cela faire appel à des fonctions spécifiques qui ont été écrites par les concepteurs de la base de
données.
Ces fonctions spécifiques sont rassemblées dans une bibliothèque de programmes appelée
« pilote » (en anglais, driver). Il existe autant de pilotes que de types de bases de données.
Pour notre cas, nous utilisons les pilotes fournis par MySQL et enregistrés dans la bibliothè-
que mysql-connector-java-3.0.11-stable-bin.jar.
L’installation du pilote
mysql-connector-java
est décrite en annexe « Contenu et exploi-
tation du CD-Rom » de cet ouvrage, à la section « Autres installations ».
Création du composant JavaBean DBConnexion
Notre objectif est d’écrire un composant JavaBean nommé DBConnexion qui se connecte à
une base de données MySQL. Nous devons pour cela définir les propriétés et les méthodes uti-
3646_09_Ch05 Page 188 Mercredi, 4. août 2004 1:49 13 > Apogee FrameMaker Couleur
© Éditions Eyrolles 189
chapitre n° 5 Interroger une base de données
les à la mise en place de cette connexion. À cette fin, examinons étape par étape comment réa-
liser une telle connexion.
Avant tout, nous devons charger en mémoire le pilote que nous souhaitons utiliser pour établir
la connexion. Par défaut, pour des raisons d’optimisation, aucun pilote de connexion à une
base de données n’est chargé en mémoire de la JVM. Pour réaliser cette opération, il convient
d’utiliser l’instruction :
Class.forName("com.mysql.jdbc.Driver") ;
Grâce à cette instruction, le pilote (ou driver) JDBC (Java DataBase Connector) relatif à la
base de données MySQL est chargé en mémoire.
Ensuite, pour réaliser une connexion, le pilote propose la méthode getConnection() dont
la syntaxe d’utilisation se présente ainsi :
Connection cnx = DriverManager.getConnection(urlJdbc);
Examinons chacun des termes de cette instruction.
La méthode getConnection() est appelée via la classe DriverManager. Cette dernière
regroupe toutes les méthodes permettant la détection des pilotes appropriés pour établir une
connexion.
La méthode getConnection() demande qu’on lui indique en paramètre où se trouve la
base de données, ainsi que le nom d’utilisateur et son mot de passe. Cette information est stoc-
kée sous la forme d’une chaîne de caractères nommée urlJdbc. La façon dont est construite
cette chaîne est décrite ci-après.
Lorsque la connexion est enfin réalisée, la méthode getConnection() retourne en résultat
une valeur de type Connection, enregistrée dans un objet appelé cnx. Cet objet est essen-
tiel, puisque c’est ensuite à travers lui que va s’effectuer la communication entre JSP et
MySQL.
Construction de l’URL Jdbc
Pour établir une connexion, il est nécessaire d’indiquer les informations telles que le protocole
utilisé, le lieu où se trouve la base de données, le nom d’utilisateur et son mot de passe.
Le protocole ainsi que le lieu où se trouve la base de données s’écrivent sous la forme d’une
URL (Uniform Resource Locator), appelée communément URL Jdbc. Elle s’écrit comme
suit :
"jdbc:mysql://" + hostname + ":" + port + "/" + nomDeLaBase ;
où :
hostname est une variable de type String qui contient soit le nom réseau de la machine
hébergeant la base de données, soit l’adresse IP de cette machine.
port est une variable de type String qui contient le numéro de port d’écoute du serveur
MySQL.
3646_09_Ch05 Page 189 Mercredi, 4. août 2004 1:49 13 > Apogee FrameMaker Couleur
1 / 20 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !