TUTORIELS 
Manipuler des données avec une servlet via JDBC

Page 1 | 2

Présentation d'un premier servlet simple mettant en application les pilotes JDBC de Java pour manipuler les informations d'une base de données.
 (10 janvier 2003)
 

Description du servlet
Ce servlet (voir page précédente) étend la classe HttpServlet, qui nous permet de gérer tout ce qui concerne le protocole HTTP requis par une application Web.

Trois méthodes sont ensuite définies: init(), service() et destroy(). Elles sont décrites dans ce qui suit, hors les gestionnaires d'exceptions...

init()
C'est ici que se déroule l'ensemble des connexions à la base de données, ainsi que tous les processus ne nécessitant qu'un seul lancement.
Ici, deux processus sont lancés: l'enregistrement du pilote JDBC, et la connexion à la base de données (donc).
C'est la méthode Class.forName qui permet de choisir le pilote JDBC que l'on utilise, ici le pilote Omnidex.
La méthode getConnection() ouvre une connexion vers l'adresse (l'URL) JDBC de la base de données. Les URLs JDBC offrent une manière unique d'identifier les bases de données, sous la forme jdbc:nomdupilote:nomdelasource. Dans notre servlet, nous utilisons le pilote Omnidex, et la base de données se trouve sous la forme d'un fichier datasource nommé test.dsn, situé dans le repertoire c:/datas/.

service()
Après l'initialisation, le servlet est en mesure de gérer de nombreuses requêtes par le biais d'une seule occurence. Chaque requête en provenance du client génère un appel sur le service, et elles peuvent toutes se faire en même temps.

La connexion (lancée par init()) réussie, le servlet est prêt à envoyer et recevoir des requêtes. service() offre deux méthodes pour les flux entrants ou sortants entre le client et le servlet. Ici, le servlet gère la requête en renvoyant une réponse dans une page HTML dynamique.
Pour construire la page HTML, il faut en premier lieu lui donner un type (text/html) à l'aide de setContentType(). Le flux de sortie est créé avec out=res.getWriter(). Une fois créé, il ne reste plus qu'à construire le HTML.
On créé un objet Statement, utilisé pour lancer la requête SQL, qui renverra un objet ResultSet. Cet objet sera utilisé pour afficher les données renvoyées par la requête SQL.
Une fois fois la requête terminée, les objets contenant le résultat de la requête et le Statement sont fermés. Cet exemple permet d'observer une connexion persistante à une base de données, de telle sorte qu'une nouvelle requête du client ne nécessite pas de reconnexion.

destroy()
Une fois le servlet utilisé par le serveur, la méthode destroy() permet de fermer complètement la connexion.

A propos des threads
Chaque application servlet doit être thread-safe: toutes les variables définies en dehors de la méthode service() étant attachées à l'occurence du servlet et partagées entre tous les clients, il est du devoir du développeur de s'assurer que les méthodes devant être attachées à chaque client en particulier ne soient appellées que depuis service(), quand bien même les sessions sont conservées dans l'objet HttpSession.

Ce n'est là qu'une première approche très basique, mais qui peut se montrer très puissante au fur et à mesure que l'on en maîtrise le fonctionnement...

Page 1 | 2

 
[ Xavier Borderie,JDNet
 
Accueil | Haut de page