1.6 Suppléments sur la servlet - Free

1.23.8 Correction des exercices ... 1.23.8.3 Exercice : un écran pour saisir une
nouvelle ville à partir des attributs un par un ... Une servlet est un composant
WEB conçu sous la forme d'une classe Java ..... Les corrigés sont en fin de
support.

Part of the document


JAVA ET LES SERVLETS [pic] Sommaire 1.1 Présentation 4
1.1.1 Les Servlets 4
1.1.2 Moteur de servlets 6
1.1.3 Le fichier web.xml 8
1.2 L'API Servlet 12
1.3 La méthode doGet 14
1.4 La méthode doPost 19
1.5 Une Servlet Post-Get 20
1.6 Suppléments sur la servlet 22
1.6.1 Informations diverses 22
1.6.2 ServletContext et HttpServletRequest 22
1.7 Récupération de valeurs multiples 25
1.8 Récupérer tous les attributs de la requête 27
1.9 Cycle de vie d'une servlet 30
1.9.1 Cycle de vie : première démonstration 31
1.9.2 Cycle de vie : deuxième démonstration 33
1.10 Redirection 35
1.11 Lecture d'un fichier sur le serveur 38
1.12 Lecture d'un fichier sur le serveur via son URL 42
1.13 Ecriture d'un fichier sur le serveur 44
1.14 Lister le contenu d'un dossier 47
1.15 Travailler avec une Base de données 48
1.15.1 Présentation 48
1.15.2 Exemple 49
1.16 Servlet et Cookies 53
1.17 Servlets et Session 59
1.18 Réécriture d'URL 63
1.19 Champs cachés 63
1.20 Travailler avec une BD lors d'une session 66
1.20.1 Objectif et démarche 66
1.20.2 Ecrans 67
1.20.3 Scripts 69
1.20.3.1 Première page : SessionConnexion.html 69
1.20.3.2 Première servlet : SessionConnexion.java 70
1.20.3.3 Deuxième servlet : SessionConnexionUse.java 71
1.20.3.4 Troisième servlet : SessionDeconnexion.java 72
1.21 Une applet communique avec une servlet 73
1.22 Collaboration entre servlets 77
1.22.1 Principes 77
1.22.2 Collaboration de contrôle 78
1.23 Annexes 81
1.23.1 Web.xml 81
1.23.2 Connexion BD au démarrage d'une application 84
1.23.3 Management sommaire de Tomcat 87
1.23.4 Le modèle MVC en résumé 89
1.23.5 Encore sur le mapping 90
1.23.6 NetBeans et les servlets 91
1.23.7 Les exemples du cours 95
1.23.8 Correction des exercices 98
1.23.8.1 Récapitulatif des exercices 98
1.23.8.2 Le menu des exercices 99
1.23.8.3 Exercice : un écran pour saisir une nouvelle ville à partir
des attributs un par un 101
1.23.8.4 Exercice : création dynamique de l'ordre INSERT INTO villes
... à partir de la liste des attributs de la requête 102
1.23.8.5 Exercice : redirection vers une servlet en fonction d'une
valeur passée au contrôleur 103
1.23.8.6 Exercice : reprenez la lecture de villes.csv et préparez
les insertions dans la BD 104
1.23.8.7 Exercice : listez les fichiers d'un dossier dans une liste
106
1.23.8.8 Exercice : suppression d'une ville dans la BD 107
1.23.8.9 Exercice : préférences couleurs à stocker dans un cookie
108
1.23.8.10 Exercice : une connexion BD dans une variable de session
110 1 Présentation
1 Les Servlets
. Définition Une servlet est un composant WEB conçu sous la forme d'une classe Java
insérée au sein d'une application WEB. La servlet est une extension du
serveur WEB. Elle est mise en ?uvre par un conteneur WEB - parfois appelé
serveur de servlets - (Apache TOMCAT par exemple ou Sun Server) sur le
serveur WEB.
Une servlet interagit avec un client WEB via le protocole http selon le
mécanisme de requête/réponse.
Une servlet génère du contenu dynamique en réponse à des requêtes clients.
. Avantages des servlets Portabilité Ecrites en Java elles héritent de la portabilité du langage. Elles peuvent
être développées sur un serveur et déployer sur un autre. De plus à la
différence des applets elles s'exécutent sur un seul serveur donc une fois
déployées elles n'ont plus aucun problème de portabilité. N'intégrant ni
AWT ni Swing elles ne sont pas sujettes à dysfonctionnements. Puissance Elles bénéficient de la puissance du noyau Java : accès réseau et URL,
multithreading, manipulation d'images, internationalisation, invocation de
méthodes distantes via RMI, intégration CORBA, accès à des données XML.
Elles s'intègrent dans la plateforme J2EE avec les JavaBeans et les EJB,
les transactions distribuées (JTS), les services de messagerie (JMS), les
recherches dans les annuaires (JNDI) et les accès JDBC (Base de données). Efficacité et endurance Une fois la servlet chargée elle reste en mémoire comme une instance
d'objet. Elle maintient son état et des références vers des ressources
externes (connexions BD, ...). Sûreté S'exécutant dans une JVM elles garantissent la sûreté d'exécution sur le
serveur.
Ecrites en Java elles sont sûres au niveau du langage étant donné le typage
fort de ce dernier.
Le garbage collector et l'absence de pointeurs garantissent la sécurité du
point de vue de la gestion de la mémoire.
La gestion des exceptions garantit la robustesse du déroulement d'une
action.
Elles dépendent du gestionnaire de sécurité du serveur Web qui peut
accroître le contrôle sur celles-ci. Elégance Ecrites en Java elles sont donc objets et modulables. Intégration Extension de serveurs Web elles sont intégrées à celui-ci. Extensibilité Elles génèrent du HTML, mais aussi du XML et servent à construire de
nouvelles technologies comme JSP. . L'API servlets Le fichier d'archives servlet-api.jar (situé dans C:\Program Files\Apache
Software Foundation\Tomcat 5.5\common\lib) est ajouté au projet Eclipse. Avec NetBeans il est ajouté automatiquement au projet. 2 Moteur de servlets
Il existe plusieurs moteurs de servlets : Nous utiliserons TOMCAT (avec admin/schifo).
Outils (2007) pour les servlets et JSP
o Tomcat 5.5 (Serveur Apache conteneur de servlets) ou Server SUN.
o MYSQL 5 ou Oracle 9i ou 10G (SGBDR).
o Eclipse ou NetBeans (IDE)
o J2EE 1.5 (JDK - Java Development Kit - et JRE - Java Runtime
Environment) Le port par défaut de Tomcat est 8080. Paramétrable (il est paramétrable
aussi lors de l'installation, ici c'est 8085 qui a été choisi) dans
server.xml (situé dans C:\Program Files\Apache Software Foundation\Tomcat
5.5\conf) dans le paragraphe suivant : . Avec Tomcat Lancement de TOMCAT [pic] "C:\Program Files\Apache Software Foundation\Tomcat 5.5\bin\tomcat5w.exe"
//MS//Tomcat5 puis [pic] Cliquez droit et lancer le service [pic] Exemple d'arborescence Tomcat 5.5 [pic] Les servlets (les .class) sont à déposer dans le dossier classes de WEB-INF
de l'application (ici WebAppServlets). Le menu général _menuServlets.html est dans le dossier : C:\...\WebAppServlets\html Donc requêtable de cette façon-ci : http://localhost:8085/WebAppServlets/_menuServlets.html Une servlet (de nom NNI1.class) sera appelée ainsi quel que soit son
dossier de stockage (cf le fichier web.xml) dans l'application
WebAppServlets sur le serveur 127.0.0.1:8085. 3 Le fichier web.xml
C'est le fichier de configuration de votre application. Cf aussi les
annexes.
Il se trouve dans le dossier WEB-INF. Chaque servlet doit être référencée ainsi :
Dans un paragraphe
> Le nom de la servlet
> Le nom de la classe avec le chemin de stockage (packServlet.NNI1 par
exemple pour une classe d'un package ou NNI1 si la classe se trouve
dans un default package ce qui est déconseillé)
Dans un paragraphe
> Le nom de la servlet
> L'url avec laquelle la servlet sera sollicitée
Mes servlets
Mes servlets pour Java Tiger BD
BD
BD
/BD
Autre exemple
NNI1
packageServlets.NNI1
NNI1
/NNI1
Dans ce cas là, la requête sera http://localhost:8085/WebAppServlets/NNI1.
Le fichier NNI1.class est stocké dans /WebAppServlets/WEB-
INF/classes/PackageServlets lorsque vous avez créé un package.
Pour vous pouvez saisir /NN1.html, par exemple, ainsi vous
masquez le fait qu'il s'agisse d'une servlet. Quand vous allez écrire et tester vos servlets avec Tomcat pensez à : V A copier votre .class dans le dossier classes,
V A mettre à jour le fichier web.xml,
V A recharger l'application avec le manager de Tomcat (cf annexe) ou à
arrêter et redémarrer le serveur Tomcat. [pic] et stop service puis [pic] et start service. En principe lorsque vous mettez à jour votre servlet la nouvelle version
devrait être prise en compte. Mais c'est loin d'être toujours le cas, donc
là aussi arrêter et redémarrer Tomcat ou recharger l'application comme ci-
dessus. . Un dernier petit exemple : package fr.buguet.pascal.servlets; import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*; public class S1 extends HttpServlet
{
public void doGet(HttpServletRequest requete, HttpServletResponse
reponse) throws ServletException, IOException
{
reponse.setContentType("text/html");