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
|