Cours gratuits » Cours informatique » Cours développement web » Support de cours développement web en java avec eclipse et tomcat

Support de cours développement web en java avec eclipse et tomcat

Problème à signaler:

Télécharger



★★★★★★★★★★3.5 étoiles sur 5 basé sur 1 votes.
Votez ce document:

/home/coursgratuit/public_html/administrator/com_doconv/htmlfiles/10308 Développement web en Java avec Eclipse et
Tomcat
par Serge Tahé
Date de publication :
Dernière mise&#
160;à jour :
Ce document est un tutoriel de développement web en Java avec les outils
Eclipse et Tomcat. Il s'appuie sur le document [Introduction à la
programmation web en Java]. Des conseils de lecture sont indiqués avant
chaque développement introduisant une notion nouvelle. Après ce tutoriel, le
lecteur devrait avoir acquis les points essentiels de la programmation web en
Java.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
I.7 - Développement d'une application web avec Eclipse/Tomcat
I.7.2 - Création d'un document HTML
I.9 - Une servlet
I.9.4 - Test de la servlet
I.10 - Coopération servlets et pages JSP
I.10.3 - Déploiement de l'application
I.11 - Une application multi-pages
I.11.5 - Tests
I.12 - Gestion d'une session
I.12.5 - Tests
I.13 - Scripts côté navigateur
I.13.3 - Tests
I.16 - Développement MVC
I.16.4 - Téléchargements
- 2 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
I.1 - Objectifs
On se propose ici de découvrir la programmation web en Java par une série de tests pratiques sur
ordinateur. Si les copies d'écran ci-dessous ont été faites sous windows, les tests eux, pourraient être
faits indifféremment sous Windows ou Linux. A la fin de cette série de manipulations qui devrait durer
2 à 3 TD, le lecteur devrait avoir acquis les concepts de base de la programmation web en java.
Afin d'avoir la compréhension de ce qui est fait, l'usage du polycopié "Introduction à la programmation
web en Java" est nécessaire. Des conseils de lecture sont donnés avant la plupart des tests à
réaliser.
- 3 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
I.2 - Les outils
Nous utiliserons pour ces tests les outils suivants :

le serveur web TOMCAT (),

l'outil de développement java ECLIPSE () avec les plugins suivants :

XmlBuddy pour gérer les documents XML ()

Tomcat de Sysdeo () pour gérer Tomcat à
partir d'Eclipse

un navigateur (IE, NETSCAPE, MOZILLA, OPERA,  ) :
Ce sont des outils gratuits. De nombreux outils libres peuvent être utilisés dans le développement
Web :
- 4 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
I.3 - Le conteneur de servlets Tomcat 5
Pour exécuter des servlets, il nous faut un conteneur de servlets. Nous présentons ici l'un d'eux,
Tomcat 5 disponible à l'url ;Nous indiquons la démarche (août 2004)
pour l'installer pour le lecteur intéressé par l'installer sur son poste personnel.
Pour télécharger le produit, on suivra le lien [Binaries] ci-dessus. On arrive alors à une page
rassemblant tous les binaires des différents sous-projets du projet Jakarta de l'Apache Software
Foundation. Nous choisissons celui de Tomcat 5 :
On pourra prendre le .zip ou le .exe destiné à la plate-forme windows. Le .exe est conseillé car il vient
- 5 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
avec un assistant d'installation. Tomcat est une application Java et a donc besoin d'une machine
virtuelle java (JVM) sur la plate-forme d'installation. Comme beaucoup d'applications Java, Tomcat
utilise la variable d'environnement JAVA_HOME si elle est présente. Celle-ci doit désigner le dossier
d'installation d'un JDK (Java Development Kit) ou d'un JRE (Java Runtime Environment). Sur une
machine Windows XP une variable d'environnement peut être créée de la façon suivante :
Menu Démarrer -> Panneau de configuration -> Système -> Onglet [Avancé] -> Bouton [Variables d'environnement] ->
Ici JAVA_HOME désigne un JDK de Sun dont l'arborescence est la suivante :
Tout JDK récent de Sun fera l'affaire. La variable d'environnement peut nécessiter un redémarrage du
système pour être prise en compte. Une fois la variable d'environnement JAVA_HOME définie,
l'installation de Tomcat peut être faite. Au cours de celle-ci, l'installateur va demander le dossier
contenant la JVM. Il présente dans une liste déroulante les dossiers susceptibles de contenir une
JVM. Ces informations sont obtenues soit par la variable JAVA_HOME soit par des clés de registres.
La JVM et correspondant à la variable JAVA_HOME devrait être dans la liste des JVM présentées. Ce
sera la seule s'il n'y a pas d'autres JVM sur la machine. On sélectionnera la JVM de son choix. La
gestion de Tomcat via le web nécessite de s'authentifier via une page de login/mot de passe. Deux
utilisateurs spéciaux sont appelés admin et manager. Au cours de l'installation de Tomcat, il nous est
- 6 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
demandé de fixer le mot de passe de l'utilisateur admin. Dans La suite, nous supposerons que ce mot
de passe est admin. L'installation de Tocat se fait dans un dossier choisi par l'utilisateur, que nous
appellerons désormais <tomcat>. L'arborescence de ce dossier pour la version Tomcat 5.0.27
ci-dessus est la suivante :
L'installation de Tomcat 5.0.27 a amené un certain nombre de raccourcis dans le menu [Démarrer].
Nous utilison le lien [Monitor] ci-dessous pour lancer l'outil d'arrêt/démarrage de Tomcat :
Une icône est insérée dans la barre des tâches en bas à droite de l'écran :
Le moniteur de Tomcat est activé par un double-clic sur cette icône :
- 7 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
Les boutons [Start - Stop - Pause] - Restart nous permettent de lancer - arrêter - relancer le serveur.
Nous
lançons
le
serveur
par
[Start]
puis
avec
un
navigateur
nous
demandons
l'url
http://localhost:8080. Nous devons obtenir une page analogue à la suivante :
- 8 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
On pourra suivre les liens ci-dessous pour vérifier la correcte installation de Tomcat :!
Tous les liens de la page [http://localhost:8080] présentent un intérêt et le lecteur est invité à les
explorer. Nous aurons l'occasion de revenir sur les liens permettant de gérer les applications web
déployées au sein du serveur :I
- 9 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
I.4 - Déploiement d'une application web au sein du serveur Tomcat
Une application web doit suivre certaines règles pour être déployée au sein d'un conteneur de
servlets. Soit <webapp> le dossier d'une application web. Une application web est composée de :
L'application web est configurée par un fichier XML : <webapp>\WEB-INF\.
Construisons l'application web dont l'arborescence est la suivante :
Les dossiers [classes] et [lib] sont ici vides. L'application n'ayant pas de classes, le fichier
WEB-INF\ est inutile et n'est donc pas présent. Le dossier [vues] contient un fichier html
statique :
dont le contenu est le suivant :@
<html>
<head>
<title>Application exemple</title>
</head>
<body>
Application exemple active  .
</body>
</html>
Si on charge ce fichier dans un navigateur, on obtient la page suivante :
- 10 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
L'URL affichée par le navigateur montre que la page n'a pas été délivrée par un serveur web mais
directement chargée par le navigateur. Nous voulons maintenant qu'elle soit disponible via le serveur
web Tomcat.
Revenons sur l'arborescence du répertoire <tomcat> :
La configuration des applications web déployées au sein du serveur Tomcat se fait à l'aide de fichiers
XML placés dans le dossier <tomcat>\conf\Catalina\localhost :
- 11 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
Ces fichiers XML peuvent être créés à la main car leur structure est simple. Plutôt que d'adopter cette
démarche, nous allons utiliser les outils web que nous offre Tomcat. Sur sa page d'entrée
http://localhost:8080, le serveur nous offre des liens pour l'administrer :
Le lien [Tomcat Administration] nous offre la possibilité de configurer les ressources mises par Tomcat
à la disposition des applications web déployée en son sein. Un exemple classique est un pool de
connexions à une base de données. Suivons le lien. Nous obtenons une page d'identification :
- 12 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
Ici, il faut redonner les informations que nous avons données au cours de l'installation de Tomcat.
Dans notre cas, nous donnons le couple admin/admin. Le bouton [Login] nous amène à la page
suivante :
- 13 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
Cette page permet à l'administrateur de Tomcat de définir

des sources de données (Data Sources),

les informations nécessaires à l'envoi de courrier (Mail Sessions),

des données d'environnement accessibles à toutes les applications (Environment Entries),

de gérer les utilisateurs/administrateurs de Tomcat (Users),

de gérer des groupes d'utilisateurs (Groups),

de définir des rôles (= ce que peut faire ou non un utilisateur),

de définir les caractéristiques des applications web déployées par le serveur (Service Catalina)
Suivons le lien [Roles] ci-dessus :
- 14 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
Un rôle permet de définir ce que peut faire ou ne pas faire un utilisateur ou un groupe d'utilisateurs.
On associe un rôle à certains droits. Chaque utilisateur est associé à un ou plusieurs rôles et dispose
des droits de ceux-ci. Le rôle [manager] ci-dessous donne le droit de gérer les applications web
déployées dans Tomcat (déploiement, démarrage, arrêt, déchargement). Nous allons créer un
utilisateur [manager] qu'on associera au rôle [manager] afin de lui permettre de gérer les applications
de Tomcat. Pour cela, nous suivons le lien [Users] de la page d'administration :
Nous voyons qu'un certain nombre d'utilisateurs existent déjà. Nous utilisons l'option [Create New
User] pour créer un nouvel utilisateur :
- 15 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
Nous donnons à l'utilisateur manager le mot de passe manager et nous lui attribuons le rôle manager.
Nous utilisons le bouton [Save] pour valider cet ajout. Ce nouvel utlisateur va être ajouté dans le
fichier <tomcat>\conf\ :
dont le contenu est le suivant :@
<?xml version='1.0' encoding='utf-8'?>
- 16 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="manager" password="manager" fullName="" roles="manager"/>
<user username="admin" password="admin" roles="admin,manager"/>
</tomcat-users>
Une autre façon d'ajouter des utilisateurs est donc de modifier directement ce fichier. C'est notamment
ainsi qu'il faut procéder si d'aventure on a oublié le mot de passe de l'administrateur admin.
Revenons maintenant à la page d'entrée [http://localhost:8080] et suivons le lien [Tomcat Manager] :
Nous obtenons alors une page d'authentification. Nous nous identifions comme manager/manager,
c.a.d. l'utilisateur de rôle [manager] que nous venons de créer. En effet, seul un utilisateur ayant ce
- 17 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
rôle peut utiliser ce lien :
Nous obtenons une page listant les applications actuellement déployées dans Tomcat :
Nous pouvons ajouter une nouvelle application grâce à des liens trouvés en bas de la page :
- 18 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
Ici, nous voulons déployer au sein de Tomcat, l'application exemple que nous avons construite
précédemment. Nous le faisons de la façon suivante :
Pour
obtenir
le
fichier
[D:\data\serge\devel\web\servlets\exemple\vues\],
nous
demanderons à Tomcat l'URL []. Le contexte sert
donc à donner un nom à la racine de l'arborescence de l'application web déployée. Nous utilisons le
bouton [Deploy] pour effectuer le déploiement de l'application. Si tout se passe bien, nous obtenons la
page réponse suivante :
et la nouvelle application apparaît dans la liste des applications déployées :
- 19 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
Commentons la ligne du contexte /exemple ci-dessus :
Le déploiement a eu pour effet d'ajouter un nouveau descripteur XML dans le dossier
<tomcat>\conf\Catalina\localhost :
Le fichier  décrit l'application web ajoutée :
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="D:/data/serge/devel/web/servlets/exemple" path="/exemple">
</Context>
On retrouve tout simplement ce que nous avons saisi dans la page web de déploiement. Une autre
façon de procéder est donc la suivante :
1
écrire à la main le descripteur XML de l'application à déployer
2
mettre ce descripteur dans le dossier <tomcat>\conf\Catalina\localhost
3
arrêter et relancer Tomcat
Maintenant que notre application /exemple est déployée, nous pouvons faire quelques tests. Tout
- 20 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
d'abord, nous demandons l'url racine du contexte http://localhost:8080/exemple/ :
Nous obtenons une liste du contenu du dossier associé au contexte /exemple. Cependant le dossier
WEB-INF d'une application web n'est lui jamais présenté. Nous pouvons demander la page
 via l'url  :
- 21 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
I.5 - Installation de plugins Eclipse
Nous allons avoir besoin dans la suite de plugins pour l'IDE Eclipse, notamment le plugin qui va
permettre de gérer Tomcat depuis Eclipse. Nous présentons ici une méthode possible d'installation
d'un plugin Eclipse. Nous téléchargeons le plugin Tomcat de Sysdeo :
Nous obtenons un zip dont la structure (partielle) est la suivante :
Le contenu du fichier zip est installé dans [<eclipse>\plugins] où <eclipse> est le dossier d'installation
d'Eclipse :
Ceci fait, nous pouvons lancer Eclipse qui va alors intégrer la présence d'un nouveau plugin. Avant de
pouvoir utiliser le plugin Tomcat il nous faut le configurer. Cela se fait par l'option de menu
- 22 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
[Window/Preferences] :
On définit :
- 23 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
1
la version de Tomcat installée sur le poste
2
le dossier où il a été installé
3
le mode de déclaration des contextes des applications web
4
le répertoire des contextes
Les plugins utiles à installer pour le développement web en Java sont les suivants :

XmlBuddy pour la gestion des documents Xml ()

Lomboz pour la gestion des documents JSP ()
- 24 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
I.6 - Lancer-Arrêter Tomcat depuis Eclipse
Pour gérer Tomcat depuis Eclipse, nous disposons de trois boutons dans la barre d'outils :
De gauche à droite : Lancer Tomcat - Arrêter Tomcat - Relancer Tomcat (Arrêt+Redémarrage)
On dispose également d'un menu :
Lançons Tomcat. Le serveur est lancé et écrit des logs dans la fenêtre [Console] :
La compréhension de ces logs demande une certaine habitude. Nous ne nous apesantirons pas
dessus pour le moment. Il est cependant important de regarder que ces logs ne signalent pas
d'erreurs de chargement de contextes. En effet, lorsqu'il est lancé, Tomcat va chercher à charger le
contexte des applications dont il trouve les définitions soit dans le fichier [<tomcat>\conf\]
soit dans le dossier [<tomcat>\conf\Catalina\localhost]. Charger le contexte d'une application implique
d'exploiter le fichier [] de l'application et de charger une ou plusieurs classes initialisant
celle-ci. Plusieurs types d'erreurs peuvent alors se produire :

le fichier [] est syntaxiquement incorrect. C'est l'erreur la plus fréquente. Il est conseillé
d'utiliser un outil capable de vérifier la validité d'un document XML lors de sa construction. Ce
sera le rôle du plugin XmlBuddy que nous avons adjoint à Eclipse.

certaines
classes
à
charger
n'ont
pas
été
trouvées.
Elles
sont
cherchées
dans
- 25 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
[WEB-INF/classes] et [WEB-INF/lib]. Il faut en général vérifier la présence des classes
nécessaires et l'orthographe de celles déclarées dans le fichier [].
Pour vérifier la présence de Tomcat, prenez un navigateur et demandez l'url [http://localhost:8080] :
- 26 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
I.7 - Développement d'une application web avec Eclipse/Tomcat
I.7.1 - Création du contexte de l'application
Nous sommes maintenant prêts à développer une première application web avec Eclipse/Tomcat.
Nous reprenons une démarche analogue à celle utilisée pour créer une application web sans Eclipse.
Eclipse lancé, nous créons un nouveau projet :
que nous définissons comme un projet Tomcat :
La première page de l'assistant de création nous précisons le nom du projet [1] et son emplacement
[2] :p
- 27 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
La seconde page de l'assistant nous demande de définir le contexte [3] de l'application :
Une fois l'assistant validé, Eclipse crée le projet Tomcat avec l'arborescence suivante :
WEB-INF/src : contiendra le code Java des classes de l'application
WEB-INF/classes (non représenté) : contiendra les .class des classes compilées ainsi qu'une
copie de tous les fichiers autres que .java placés dans WEB-INF/src. Une application web utilise
fréquemment des fichiers dits "ressource" qui doivent être dans la même arborescence que les
classes, c.a.d. dans WEB-INF/classes. On les place alors dans le dossier WEB-INF/src sachant

- 28 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
qu'Eclipse les recopiera automatiquement dans WEB-INF/classes.
WEB-INF/lib : contiendra les archives .jar dont a besoin l'application web. work : contiendra le
code .java des servlets générées à partir des pages JSP de l'application.

Après la création du projet Tomcat, nous pouvons constater qu'une nouvelle application est apparue
dans le dossier dans [<tomcat>\conf\Catalina\localhost] :
Son contenu est le suivant :
<Context path="/personne" reloadable="true" docBase="D:\data\serge\travail\2004-2005\webjava\personne"
workDir="D:\data\serge\travail\2004-2005\webjava\personne\work" />
Si nous lançons Tomcat et examinons ses logs dans la fenêtre [Console] d'Eclipse, nous constatons
que la nouvelle application a été prise en compte :
Nous pouvons le vérifier. Demandons le contexte /personne via l'url http://localhost:8080/personne :
- 29 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
Le plugin [Tomcat] nous permet de supprimer un contexte au sein du serveur Tomcat. Pour cela, dans
Eclipse cliquez droit sur le projet et prenez l'option [Projet Tomcat/Suppression du contexte] :
Nous pouvons constater que le fichier [<tomcat>\conf\Catalina\localhost\] a disparu :
- 30 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
Pour recréer le contexte, on prendra l'option [Projet Tomcat/Mise à jour du contexte]. Le fichier
[] réapparaît alors dans le dossier [<tomcat>\conf\Catalina\localhost] et les logs de
Tomcat indiquent que le chargement du nouveau contexte a eu lieu :
I.7.2 - Création d'un document HTML
Nous créons maintenant un document HTML statique [] dans le dossier [personne] :
Pour le créer, cliquez droit sur le projet [personne] puis prenez l'option [New/File] et appelez
[] le nouveau fichier. Ce document HTML affichera un formulaire demandant le nom et
l'âge d'une personne. Son contenu sera le suivant :
<html>
<head>
- 31 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
<title>Personne - formulaire</title>
</head>
<body>
<center>
<h2>Personne - formulaire</h2>
<hr>
<form action="" method="post">
<table>
<tr>
<td>Nom</td>
<td><input name="txtNom" value="" type="text" size="20"></td>
</tr>
<tr>
<td>Age</td>
<td><input name="txtAge" value="" type="text" size="3"></td>
</tr>
</table>
<table>
<tr>
<td><input type="submit" value="Envoyer"></td>
<td><input type="reset" value="Retablir"></td>
<td><input type="button" value="Effacer"></td>
</tr>
</table>
</form>
</center>
</body>
</html>
Sauvegardez ce document dans le dossier <personne>. Lancez Tomcat. Nous allons tout d'abord
vérifier que le contexte [/personne] existe bien au sein de Tomcat. Avec un navigateur demandez
l'URL http://localhost:8080/personne :
- 32 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
On obtient une page qui liste le contenu du dossier physique associé au contexte [/personne]. On y
voit [] accessible via un lien. Le premier test à faire lors du déploiement d'une
application web est de vérifier, comme nous l'avons fait ici, que le contexte de l'application est
accessible. S'il ne l'est pas, il est inutile d'aller plus loin. Que faire si cette étape échoue ? Prenons le
cas suivant où nous faisons une faute d'orthographe sur le nom du contexte :
- 33 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
Lorsqu'un contexte est inaccessible, on vérifiera les points suivants :

l'orthographe du contexte

les logs de Tomcat dans Eclipse. Ils peuvent signaler une erreur lors du chargement du contexte
de notre application. Ci-dessous, on voit les logs liés au traitement du fichier [] :

le contenu du fichier [] qui définit l'application web.
Une fois la page du contexte /personne obtenu, nous pouvons suivre le lien [] :
- 34 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
- 35 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
I.8 - Une page JSP
Nous dupliquons notre document  dans un fichier  dans le même dossier
puis nous transformons le texte de [] la façon suivante :
<%
String nom=request.getParameter("txtNom");
if(nom==null) nom="inconnu";
String age=request.getParameter("txtAge");
if(age==null) age="xxx";
%>
<html>
<head>
<title>Personne - formulaire</title>
</head>
<body>
<center>
<h2>Personne - formulaire</h2>
<hr>
<form action="" method="post">
<table>
<tr>
<td>Nom</td>
<td><input name="txtNom" value="<%= nom %>" type="text" size="20"></td>
</tr>
<tr>
<td>Age</td>
<td><input name="txtAge" value="<%= age %>" type="text" size="3"></td>
</tr>
</table>
<table>
<tr>
<td><input type="submit" value="Envoyer"></td>
<td><input type="reset" value="Rétablir"></td>
<td><input type="button" value="Effacer"></td>
</tr>
</table>
</form>
</center>
</body>
- 36 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
</html>
Le document initialement statique est maintenant devenu dynamique par introduction de code Java.
Pour ce type de document, nous procèderons toujours comme suit :

nous mettons du code Java dès le début du document pour récupérer les paramètres
nécessaires au document pour s'afficher. Ceux-ci seront le plus souvent dans l'objet request. Cet
objet représente la requête du client. Celle-ci peut passer au travers de plusieurs servlets et
pages JSP qui ont pu l'enrichir. Ici, elle nous arrivera directeement du navigateur

le code HTML se trouve à la suite. Il se contentera le plus souvent d'afficher des variables
calculées auparavant dans le code Java au moyen de balises <%= variable %>. On notera ici
que le signe = est collé au signe %. C'est une cause fréquente d'erreurs.
Que fait le document dynamique précédent ?

il récupère dans la requête, deux paramètres appelés [txtNom] et [txtAge]. S'il ne les trouve pas,
il leur donne des valeurs par défaut.

il affiche la valeur de ces deux paramètres dans le code HTML qui suit
Faisons
un
premier
test.
Avec
un
navigateur,
demandons
l'URL
 :
Le document  a été appelé sans passage de paramètres. Les valeurs par défaut ont
donc
été
affichées.
Maintenant
demandons
l'URL
- 37 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
?txtNom=martin&txtAge=14 :
Cette fois-ci, nous avons passé au document , les paramètres txtNom et txtAge qu'il
attend. Il les a donc affichés. On sait qu'il y a deux méthodes pour passer des paramètres à un
document web : GET et POST. Dans les deux cas, les paramètres passés se retrouvent dans l'objet
prédéfini request. Ici, ils ont été passés par la méthode GET.h
- 38 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
I.9 - Une servlet
I.9.1 - Configuration de Eclipse
Nous nous proposons ici de créer une servlet faisant la même chose que la page JSP précédente.
Une servlet est une classe Java. Nous l'appellerons ServletFormulaire. Une servlet dérive de la classe
.Servlet. Les classes javax.servlet.* ne sont pas partie du Java standard et ne sont
donc pas trouvées par défaut dans un projet Java sous Eclipse. Il nous faut configurer le projet afin
que son [ClassPath] inclue les dossiers contenant les bibliothèques .jar des classes nécessaires au
développement web. Sous Eclipse, cliquons droit sur le nom du projet [personne] et accédons à ses
propriétés ou bien prenons le menu [Project/Properties] puis l'option [Java Build Path] de ces
propriétés. Cette option fixe les dossiers et bibliothèques à explorer pour trouver toutes les classes
nécessaires à l'application.
- 39 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
Nous constatons que dans le [Java Build Path] de l'application se trouvent des archives situées dans
l'arborescence de Tomcat. Celles-ci contiennent les classes du paquetage [javax.servlet] dont nous
avons besoin. C'est parce que nous créé un projet [Java/Tomcat] que ces archives ont été
automatiquement ajoutées au [Java Build Path] de l'application.h
I.9.2 - Ecriture de la servlet
Nous sommes maintenant prêts pour écrire la classe servletFormulaire. Sous Eclipse, cliquons droit
sur le dossier [WEB-INF/src] et prenons l'option de création d'une classe :
puis définissons les caractéristiques de la classe à crééer :
Vous adapterez le nom du paquetage en remplaçant [st] par votre nom. Après validation de l'assistant,
le projet est modifié de la façon suivante :
- 40 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
La classe [ServletFormulaire] a été créée avec un squelette de code :
package .servlets.personne;
import .HttpServlet;
public class ServletFormulaire extends HttpServlet {
}
Nous complétons ce code avec le contenu suivant :
package .servlets.personne;
import .IOException;
import .PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import .HttpServlet;
import .HttpServletRequest;
import .HttpServletResponse;
public class ServletFormulaire extends HttpServlet {
// paramètres d'instance
private String defaultNom = null;
private String defaultAge = null;
//init
public void init() {
// on récupère les paramètres d'initialisation de la servlet
ServletConfig config = getServletConfig();
defaultNom = config.getInitParameter("defaultNom");
if(defaultNom==null) defaultNom="NNNNNNNNNNNNNNN";
defaultAge = config.getInitParameter("defaultAge");
if(defaultAge==null) defaultAge="AAA";
}
//GET
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException,
ServletException {
// on récupère les paramètres du formulaire
String nom = request.getParameter("txtNom");
if (nom == null) {
nom = defaultNom;
}
String age = request.getParameter("txtAge");
if (age == null) {
age = defaultAge;
}
// on affiche le formulaire
- 41 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.println(
"<html>"+
"<head>"+
"<title>Personne - formulaire</title>"+
"</head>"+
"<body>"+
"<center>"+
"<h2>Personne - formulaire</h2>"+
"<hr>"+
"<form action='' method='post'>"+
"<table>"+
"<tr>"+
"<td>Nom</td>"+
"<td><input name='txtNom' value='"+nom+"' type='text' size='20'></td>"+
"</tr>"+
"<tr>"+
"<td>Age</td>"+
"<td><input name='txtAge' value='"+ age +"' type='text' size='3'></td>"+
"</tr>"+
"</table>"+
"<table>"+
"<tr>"+
"<td><input type='submit' value='Envoyer'></td>"+
"<td><input type='reset' value='Rétablir'></td>"+
"<td><input type='button' value='Effacer'></td>"+
"</tr>"+
"</table>"+
"</form>"+
"</center>"+
"</body>"+
"</html>"
);
}
/**
* @param request la requête HTTP du client
* @param response la réponse HTTP qu'on va construire
*/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException,
ServletException {
// on passe la main au GET
doGet(request, response);
}
}
A la simple lecture de la servlet, on peut constater tout de suite qu'elle est beaucoup plus complexe
que la page JSP correspondante. C'est une généralité : une servlet n'est pas adaptée pour générer du
code HTML. Ce sont les pages JSP qui sont faites pour cela. Nous aurons l'occasion d'y revenir.
Explicitons quelques points importants de la servlet ci-dessus :

lorsqu'une servlet est appelée pour la 1ère fois, sa méthode init est appelée. C'est le seul cas où
elle est appelée.

si la servlet a été appelée par la méthode HTTP GET, la méthode doGet est appelée pour traiter
la requête du client.

si la servlet a été appelée par la méthode HTTP POST, la méthode doPost est appelée pour
traiter la requête du client.
La méthode init sert ici à récupérer des valeurs appelées defaultNom et defaultAge. Pour l'instant, on
ne sait pas où elle les récupère. Ce sont des valeurs de configuration de la servlet qui ne changent
- 42 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
pas au fil des cycles requête-réponse. La méthode init exécutée au chargement initial de la servlet est
donc le bon endroit pour les récupérer.
La méthode doPost renvoie à la méthode doGet. Cela signifie que le client pourra envoyer
indifféremment ses paramètres par un POST ou un GET.
La méthode doGet :

reçoit deux paramètres request et response. request est un objet représentant la totalité de la
requête du client. Elle est de type HttpServletRequest qui est une interface. response est de type
HttpServletResponse qui est également une interface. L'objet response sert à envoyer une
réponse au client.

request.getparameter("param") sert à récupérer dans la requête du client la valeur du paramètre
de nom param.

response.getWriter() sert à obtenir un flux d'écriture vers le client

response.setContentType(String) sert à fixer la valeur de l'entête HTTP Content-type. On
rappelle que cet entête indique au client la nature du document qu'il va recevoir. Le type
text/html indique un document HTML.
La compilation de cette servlet va produire un fichier .class dans le dossier [WEB-INF/classes] :
Le lecteur est invité à consulter l'aide Java sur les servlets. On pourra pour cela s'aider de Tomcat.
Sur la page d'entrée de Tomcat 5, on a un lien [Documentation] :
Ce lien mène à une page que le lecteur est invité à explorer. Le lien sur la documentation des servlets
est le suivant :?
- 43 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
I.9.3 - Déploiement de la servlet dans Tomcat
Une fois la servlet précédente correctement compilée par Eclipse, il faut la faire prendre en compte
par le serveur Tomcat. Pour cela, il nous faut écrire le fichier de configuration [] de
l'application. Ce fichier est à placer dans le dossier WEB-INF de l'application :
Pour le construire, nous allons utiliser un assistant. Nous cliquons droit sur le dossier [WEB-INF] et
prenons l'option [New/Other] pour arriver à la première page d'un assistant :
- 44 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
Nous prenons l'option [XML/XML Document] puis les options suivantes :
- 45 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
La plupart des options prises ci-dessus sont les options proposées par défaut. Le fichier []
généré par l'assistant est le suivant :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app SYSTEM "">
<web-app>
</web-app>
Le fichier reprend ce qui a été positionné dans l'assistant. Aussi la plupart du temps, peut-on se
contenter de créer un fichier [] par copier/coller. L'icône associée au fichier [] indique
que son contenu est pris en charge par le plugin [XmlBuddy] :
Le contenu d'un fichier XML est le plus souvent contrôlé par un document appelé une DTD (Document
Type Definition) qui définit les balises que peut contenir le document ainsi que la hiérarchie de
celles-ci
à
l'intérieur
du
document.
Ici
la
DTD
utilisée
se
trouve
à
l'url
[] comme l'indique l'entête [DOCTYPE] du fichier []
précédent. Afin que XMlBuddy ait accès à cette DTD, le poste doit avoir accès au réseau. Dans les
salles de l'ISTIA, les postes n'ont un accès HTTP au réseau Internet que via une machine proxy de
nom [] et le port [3128]. Il faut s'assurer que le proxy d'Eclipse est correctement
positionné. Pour cela, on utilise l'option [Window/Preferences/Install-Update] :
Ceci fait, XmlBuddy va pouvoir signaler les erreurs dans []. C'est une aide indispensable car il
est facile de faire des erreurs telles que celle d'oublier de fermer une balise. Le fichier  de
notre application personne sera le suivant :
<?xml version="1.0" encoding="UTF-8"?>
- 46 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
<!DOCTYPE web-app SYSTEM "">
<web-app>
<servlet>
<servlet-name>formulairepersonne</servlet-name>
<servlet-class>.servlets.personne.ServletFormulaire</servlet-class>
<init-param>
<param-name>defaultNom</param-name>
<param-value>inconnu</param-value>
</init-param>
<init-param>
<param-name>defaultAge</param-name>
<param-value>XXX</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>formulairepersonne</servlet-name>
<url-pattern>/formulaire</url-pattern>
</servlet-mapping>
</web-app>
Les points principaux de ce fichier de configuration sont les suivants :

ce qui précède la balise <web-app> est à reprendre intégralement dans tout fichier de
configuration

la configuration se fait entre les balises <web-app> et </web-app>

la configuration d'une servlet se fait entre les balises <servlet> et </servlet>. Une application
peut
comporter
plusieurs
servlets
et
donc
autant
de
sections
de
configuration
<servlet> </servlet>.

la balise <servlet-name> fixe un nom à la servlet - peut être quelconque

la balise <servlet-class> donne le nom complet de la classe correspondant à la servlet. Vous
donnerez le nom exact de votre classe qui sera sans doute différent de celui déclaré ci-dessus.
Tomcat ira chercher cette classe dans le dossier [WEBINF/ classes] de l'application :

la balise <init-param> sert à passer des paramètres de configuration à la servlet. Ceux-ci sont
généralement lus dans la méthode init de la servlet car les paramètres de configuration de
celle-ci doivent être connus dès son premier chargement.

la balise <param-name> fixe le nom du paramètre et <param-value> sa valeur.

la balise <servlet-mapping> sert à associer une servlet (servlet-name) à un modèle d'URL
(url-pattern). Ici le modèle est simple. Il dit qu'à chaque fois qu'une URL aura la forme
/formulaire,
il
faudra
utiliser
la
servlet
formulairepersonne,
c.a.d.
la
classe
[.servlets.ServletFormulaire].
I.9.4 - Test de la servlet
Nous en savons assez pour faire un test. Lançons le serveur Tomcat si besoin est. S'il était déjà
lancé, les modifications faites au fichier [] ont du l'amener à recharger le contexte de
l'application. Ce point est affiché dans les logs :
- 47 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
4 nov. 2004 10:57:14 .StandardContext reload
Le rechargement de ce contexte a démarré
4 nov. 2004 10:59:56 org.apache.catalina.startup.HostConfig restartContext
INFO: restartContext(/personne)!
Demandons l'URL [http://localhost:8080/personne/formulaire] avec un navigateur. Nous demandons
ici la ressource [/formulaire] du contexte [/personne]. Le fichier [] de ce contexte indique que la
ressource [/formulaire] est assurée par la servlet de nom [/formulairePersonne]. Dans le même fichier,
il est indiqué que cette servlet est la classe [.servlets.ServletFormulaire]. C'est donc à cette
classe que Tomcat va confier le traitement de la requête client. Si la classe n'était pas déjà chargée,
elle le sera. Elle restera alors en mémoire pour les futures requêtes.P
L'url [http://localhost:8080/personne/formulaire] donne le résultat suivant :
Nous obtenons les valeurs par défaut du nom et de l'âge. Demandons maintenant l'URL
[http://localhost:8080/personne/formulaire?txtNom=tintin&txtAge=30] :
- 48 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
Nous obtenons bien les paramètres passés dans la requête.
- 49 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
I.10 - Coopération servlets et pages JSP
I.10.1 - La servlet
Nous avons vu que la servlet était mal adaptée pour générer du code HTML alors que la page JSP
elle, était bien adaptée. Par la suite, nous construirons nos applications de la façon suivante :

les pages renvoyées en réponses aux demandes des clients seront générées uniquement par
des documents JSP. Ceux-ci seront paramétrés, ce qui leur donnera leur aspect dynamique.

la logique de traitement des requêtes du client et le calcul des paramètres nécessaires à
l'affichage des réponses sera assuré par une ou plusieurs servlets.
Pour exemple, reprenons l'exemple de la servlet précédente [ServletFormulaire] et enlevons-lui toute
la génération du code HTML de la réponse. Appelons cette nouvelle servlet ServletFormulaire2. Elle
sera construite dans le même projet [personne] que précédemment ainsi que toutes les servlets à
venir. Son code est le suivant :
package .servlets.personne;
import .IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import .HttpServlet;
import .HttpServletRequest;
import .HttpServletResponse;
public class ServletFormulaire2 extends HttpServlet {
// paramètres d'instance
private String defaultNom = null;
private String defaultAge = null;
//init
public void init() {
// on récupère les paramètres d'initialisation de la servlet
ServletConfig config = getServletConfig();
defaultNom = config.getInitParameter("defaultNom");
if(defaultNom==null) defaultNom="NNNNNNNNNNNNNNN";
defaultAge = config.getInitParameter("defaultAge");
if(defaultAge==null) defaultAge="AAA";
}
//GET
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException,
ServletException {
// on récupère les paramètres du formulaire
String nom = request.getParameter("txtNom");
if (nom == null) {
nom = defaultNom;
}
String age = request.getParameter("txtAge");
if (age == null) {
age = defaultAge;
}
// on affiche le formulaire
request.setAttribute("nom",nom);
request.setAttribute("age",age);
getServletContext().getRequestDispatcher("").forward(request,response);
} //GET
//POST
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException,
ServletException {
- 50 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
// on passe la main au GET
doGet(request, response);
}
}
Seule la partie génération de la réponse a changé :
// on affiche le formulaire
request.setAttribute("nom",nom);
request.setAttribute("age",age);
getServletContext().getRequestDispatcher("").forward(request,response);
La réponse est confiée à la page JSP . Celle-ci a deux paramètres nom et age. La
servlet met ces deux valeurs dans la requête à l'aide de la méthode setAttribute et la passe à la page
.
Construire la classe [ServletFormulaire2] en suivant le même cheminement que pour la classe
[ServletFormulaire]. Une fois la compilation de la classe réussie, une nouvelle classe apparaît dans
[WEB-INF/classes] :
I.10.2 - La page JSP
La page JSP  est la suivante :
<%
String nom=(String)request.getAttribute("nom");
String age=(String)request.getAttribute("age");
%>
<html>
<head>
<title>Personne - formulaire</title>
</head>
<body>
<center>
<h2>Personne - formulaire</h2>
<hr>
<form action="" method="post">
<table>
<tr>
<td>Nom</td>
<td><input name="txtNom" value="<%= nom %>" type="text" size="20"></td>
</tr>
<tr>
<td>Age</td>
<td><input name="txtAge" value="<%= age %>" type="text" size="3"></td>
</tr>
- 51 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
</table>
<table>
<tr>
<td><input type="submit" value="Envoyer"></td>
<td><input type="reset" value="Rétablir"></td>
<td><input type="button" value="Effacer"></td>
</tr>
</table>
</form>
</center>
</body>
</html>
On voit que la page JSP commence par récupérer les deux attributs dont elle a besoin pour s'afficher :
nom et age. Une fois qu'elle les a, la réponse au client est envoyée. Construisez cette page JSP et
mettez là sous le dossier <personne> :
I.10.3 - Déploiement de l'application
Le fichier de configuration [] est modifié de la façon suivante :
<?xml version="1.0" encoding="UTF-8"?>
DOCTYPE web-app SYSTEM "">
<web-app>
<servlet>
<servlet-name>formulairepersonne</servlet-name>
<servlet-class>.servlets.personne.ServletFormulaire</servlet-class>
<init-param>
<param-name>defaultNom</param-name>
<param-value>inconnu</param-value>
</init-param>
<init-param>
<param-name>defaultAge</param-name>
<param-value>XXX</param-value>
</init-param>
</servlet>
- 52 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
<servlet>
<servlet-name>formulairepersonne2</servlet-name>
<servlet-class>.servlets.personne.ServletFormulaire2</servlet-class>
<init-param>
<param-name>defaultNom</param-name>
<param-value>inconnu</param-value>
</init-param>
<init-param>
<param-name>defaultAge</param-name>
<param-value>XXX</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>formulairepersonne</servlet-name>
<url-pattern>/formulaire</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>formulairepersonne2</servlet-name>
<url-pattern>/formulaire2</url-pattern>
</servlet-mapping>
</web-app>
Nous avons conservé l'existant et ajouté :

une section <servlet> pour définir la nouvelle servlet ServletFormulaire2

une section <servlet-mapping> pour lui associer l'URL /formulaire2
Lancez le serveur Tomcat si besoin est. S'il était déjà actif, l'ajout de nouvelles classes ainsi que la
modification du fichier [] a du provoquer le rechargement du contexte <personne>. Nous
sommes
maintenant
prêts
pour
les
tests.
Nous
demandons
l'URL
http://localhost:8080/personne/formulaire2?txtNom=milou&txtAge=10 :
- 53 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
Nous obtenons le même résultat que précédemment mais la structure de notre application est plus
claire : une servlet qui contient de la logique applicative et délègue à une page JSP l'envoi de la
réponse au client. Nous procèderons désormais toujours de cette façon.
- 54 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
I.11 - Une application multi-pages
I.11.1 - Introduction
Nous allons construire une application autour du formulaire [nom, âge] précédent. L'application sera
composée :

d'une servlet main1. C'est elle qui assurera toute la logique de l'application.

de trois pages JSP : , , 
Le
fonctionnement
de
l'application
est
le
suivant.
Elle
est
accessible
via
l'URL
http://localhost:8080/personne/main1. A cette url, on obtient un formulaire fourni par la page
 :
L'utilisateur remplit le formulaire et appuie sur le bouton [Envoyer] de type submit. Le bouton [Rétablir]
est de type reset, c.a.d. qu'il remet le document dans l'état où il a été reçu. Le bouton [Effacer] est de
type button. Nous verrons son rôle ultérieurement. L'utilisateur doit fournir un nom et un âge valides.
Si ce n'est pas le cas, une page d'erreurs lui est envoyée au moyen de la page JSP
. Voici des exemples :
- 55 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
formulaire envoyé
réponse reçue
I.11.2 - Configuration
Le fichier  de l'application /personne est complété par les sections suivantes :
- 56 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
<servlet>
<servlet-name>personne1</servlet-name>
<servlet-class>.servlets.personne.ServletPersonne1</servlet-class>
<init-param>
<param-name>urlMain</param-name>
<param-value>/personne/main1</param-value>
</init-param>
<init-param>
<param-name>urlReponse</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>urlErreurs</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>urlFormulaire</param-name>
<param-value></param-value>
</init-param>
</servlet>
.
<servlet-mapping>
<servlet-name>personne1</servlet-name>
<url-pattern>/main1</url-pattern>
</servlet-mapping>
Les deux sections <servlet> et <servlet-mapping> précédentes ne sont pas l'une à la suite de l'autre.
La section <servletmapping> est avec les autres sections <servlet-mapping> derrière toutes les
sections <servlet>.
Que dit ce fichier de configuration ?

l'URL de la servlet et celles des trois pages JSP font l'objet chacune d'un paramètre de
configuration. Cela permet de changer leurs noms sans avoir à recompiler l'application.

l'application appelée personne1 est accessible via l'URL /main1 (servlet-mapping)
I.11.3 - Les codes
La servlet principale est la classe ServletPersonne1 suivante :
package .servlets.personne;
import .IOException;
import .ArrayList;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import .HttpServlet;
import .HttpServletRequest;
import .HttpServletResponse;
public class ServletPersonne1
extends HttpServlet {
// paramètres d'instance
String urlMain = null;
String urlFormulaire = null;
String urlReponse = null;
String urlErreurs = null;
ArrayList erreurs = new ArrayList();
//init
public void init() {
// on récupère les paramètres d'initialisation de la servlet
- 57 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
La servlet principale est la classe ServletPersonne1 suivante :
ServletConfig config = getServletConfig();
urlMain = config.getInitParameter("urlMain");
if (urlMain == null) {
("Le paramètre [urlMain] n'a pas été initialisé");
}
urlFormulaire = config.getInitParameter("urlFormulaire");
if (urlFormulaire == null) {
("Le paramètre [urlFormulaire] n'a pas été initialisé");
}
urlReponse = config.getInitParameter("urlReponse");
if (urlReponse == null) {
("Le paramètre [urlReponse] n'a pas été initialisé");
}
urlErreurs = config.getInitParameter("urlErreurs");
}
/**
* @param request requête du client
* @param response réponse à construire
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException,
ServletException {
// on vérifie comment s'est passée l'initialisation de la servlet
if(urlErreurs==null) throw new ServletException("Le paramètre [urlErreurs] n'a pas été initialisé");
if(()!=0){
// on passe la main à la page d'erreurs
request.setAttribute("erreurs",erreurs);
getServletContext().getRequestDispatcher(urlErreurs).forward(request,response);
//fin
return;
}
// on récupère les paramètres
String nom=request.getParameter("txtNom");
String age=request.getParameter("txtAge");
// des paramètres ?
if(nom==null || age==null){
// on envoie le formulaire
request.setAttribute("nom","");
request.setAttribute("age","");
request.setAttribute("urlAction",urlMain);
getServletContext().getRequestDispatcher(urlFormulaire).forward(request,response);
return;
}//
// vérification des paramètres
ArrayList erreursAppel=new ArrayList();
();
if(nom.equals("")) ("Le champ [nom] n'a pas été rempli");
if(! age.matches("^\\s*\\d+\\s*$")) ("Le champ [age] est erroné");
if(()!=0){
// on envoie la page d'erreurs
request.setAttribute("erreurs",erreursAppel);
getServletContext().getRequestDispatcher(urlErreurs).forward(request,response);
return;
}//if
// les paramètres sont corrects - on envoie la page réponse
request.setAttribute("nom",nom);
request.setAttribute("age",age);
getServletContext().getRequestDispatcher(urlReponse).forward(request,response);
return;
}
/**
* @param request requête du client
* @param response réponse à construire
*/
- 58 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
La servlet principale est la classe ServletPersonne1 suivante :
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException,
ServletException {
// on passe la main au GET
doGet(request, response);
}
}
La page 
<%
String nom=(String)request.getAttribute("nom");
String age=(String)request.getAttribute("age");
String urlAction=(String)request.getAttribute("urlAction");
%>
<html>
<head>
<title>Personne - formulaire</title>
</head>
<body>
<center>
<h2>Personne - formulaire</h2>
<hr>
<form action="<%= urlAction %>" method="post">
<table>
<tr>
<td>Nom</td>
<td><input name="txtNom" value="<%= nom %>" type="text" size="20"></td>
</tr>
<tr>
<td>Age</td>
<td><input name="txtAge" value="<%= age %>" type="text" size="3"></td>
</tr>
<tr>
</table>
<table>
<tr>
<td><input type="submit" value="Envoyer"></td>
<td><input type="reset" value="Rétablir"></td>
<td><input type="button" value="Effacer"></td>
</tr>
</table>
</form>
</center>
</body>
</html>
La page 
<%
String nom=(String)request.getAttribute("nom");
String age=(String)request.getAttribute("age");
if(nom==null) nom="inconnu";
if(age==null) age="inconnu";
%>
<html>
<head>
<title>Personne</title>
</head>
<body>
<h2>Personne - réponse</h2>
<hr>
<table>
<tr>
- 59 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
La page 
<td>Nom</td>
<td><%= nom %>
</tr>
<tr>
<td>Age</td>
<td><%= age %>
</tr>
</table>
</body>
</html>
La page 
<%@ page import=".ArrayList" %>
<%
ArrayList erreurs=(ArrayList)request.getAttribute("erreurs");
%>
<html>
<head>
<title>Personne</title>
</head>
<body>
<h2>Les erreurs suivantes se sont produites</h2>
<ul>
<%
for(int i=0;i<();i++){
out.println("<li>" + (String) (i) + "</li>\n");
}//for
%>
</ul>
</body>
</html>
Les points principaux de la servlet sont les suivants :

la méthode init de la servlet essaie de récupérer les quatre URL du fichier de configuration
(urlMain, urlReponse, urlFormulaire, urlErreurs). Pour chacune des trois premières, si elle
échoue un message d'erreur est ajouté à une liste d'erreurs (ArrayList). Cette liste d'erreurs sera
fournie ultérieurement à la page . Si on échoue à récupérer la valeur du
paramètre urlErreurs, cette variable prend la valeur null.

les méthodes doPost et doGet font la même chose

la méthode doGet commence par vérifier s'il y a eu des erreurs à l'initialisation :

elle vérifie si urlErreurs est resté à null. Si oui, une exception est lancée. En effet, cette
erreur ne peut être signalée normalement au client puisqu'on n'a pas de page pour
l'afficher.

si urlErreurs est non null et la liste des autres erreurs non vide alors celle-ci est affichée par
la page JSP urlErreurs.

s'il n'y a pas d'erreurs d'initialisation, doGet vérifie s'il y a les paramètres attendus (txtNom,
txtAge) dans la requête. Si ce n'est pas le cas, le formulaire est affiché au moyen de la
page JSP urlFormulaire. On lui transmet un nom et un age vides ainsi que l'URL (urlAction)
à laquelle devront être renvoyés les valeurs du formulaire lorsque l'utilisateur appuiera sur
le bouton [Envoyer].

s'il y a des paramètres, leur validité est vérifiée au moyen d'expression régulières. Si des
erreurs sont détectées, leur liste est transmise à la page JSP urlErreurs.

s'il n'y a pas d'erreurs, le nom et l'âge récupérés sont transmis à la page JSP urlReponse.

la méthode doGet sert aussi bien à fournir le formulaire vide qu'à traiter ses valeurs lorsque
- 60 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
l'utilisateur appuie sur le bouton [Envoyer].
Les points principaux de la page  sont les suivants :

la page reçoit en atribut la valeur urlAction qui est l'URL à laquelle seront envoyées les valeurs
du formulaire lorsque l'utilisateur appuiera sur le bouton [Envoyer]. urlAction pointe sur la servlet
principale. Celle-ci sert donc à la fois à fournir le formulaire vide et à en traiter les valeurs.
Les points principaux de la page  sont les suivants :

la page reçoit sous la forme d'un objet ArrayList la valeur erreurs qui est la liste des erreurs à
afficher.

pour afficher celles-ci, on est amené à écrire du code Java dans le corps HTML de la page. On
doit toujours viser à réduire celui-ci au minimum pour ne pas polluer le code HTML. Nous
verrons ultérieurement qu'il existe des solution permettant du zéro Java dans les pages JSP.
I.11.4 - Déploiement
Le déploiement de l'application est celui devenu maintenant habituel :
I.11.5 - Tests
- 61 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
Si Tomcat était actif lorsque vous avez fait les modifications précédentes (classes et ), il a du
recharger le contexte <personne> et le signaler dans ses logs :
7 nov. 2004 10:28:18 org.apache.catalina.startup.HostConfig restartContext
INFO: restartContext(/personne)
7 nov. 2004 10:28:18 .StandardContext reload
INFO: Le rechargement de ce contexte a démarré
Au besoin, rechargez manuellement le contexte [clic droit sur projet/Projet Tomcat/Recharger le
contexte] ou relancez Tomcat. Ceci fait, on pourra reprendre les tests montrés en exemple au début
de cette section. On pourra en rajouter. On pourra par exemple supprimer la présence d'un des quatre
paramètres de configuration urlXXX dans  et voir le résultat.
- 62 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
I.12 - Gestion d'une session
I.12.1 - Introduction
Nous nous proposons maintenant d'ajouter à notre application une gestion de session. Rappelons les
points suivants :

le dialogue HTTP client-serveur est une suite de séquences demande-réponse déconnectées
entre elles

la session sert de mémoire entre différentes séquences demande-réponse d'un même
utilisateur. S'il y a N utilisateurs, il y a N sessions.
La séquence d'écran suivante montre ce qui est maintenant désiré dans le fonctionnement de
l'application :
Echange n° 1
La nouveauté vient du lien de retour au formulaire qui a été rajouté dans la page d'erreurs.
- 63 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
Echange n° 2
Dans l'échange n° 1, l'utilisateur a donné pour le couple (nom,âge) les valeurs (xx,yy). Si au cours de
l'échange, le serveur a eu connaissance de ces valeurs, à la fin de l'échange il les "oublie". Or on peut
constater que lors de l'échange n° 2 il est capable de réafficher leurs valeurs dans sa réponse. C'est
la notion de session qui permet au serveur web de mémoriser des données au fil des échanges
successifs client-serveur. Au cours de l'échange n°1, le serveur doit mémoriser dans la session le
couple (nom,age) que le client lui a envoyé afin d'être capable de l'afficher au cours de l'échange n° 2.
Voici un autre exemple de mise en oeuvre de la session entre deux échanges :
Echange n° 1
- 64 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
La nouveauté vient du lien de retour au formulaire qui a été rajouté dans la page de la réponse.
Echange n° 2
- 65 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
I.12.2 - Configuration
Le fichier  de l'application /personne est complété par les sections suivantes :
<servlet>
<servlet-name>personne2</servlet-name>
<servlet-class>.servlets.personne.ServletPersonne2</servlet-class>
<init-param>
<param-name>urlMain</param-name>
<param-value>/personne/main2</param-value>
</init-param>
<init-param>
<param-name>urlReponse</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>urlErreurs</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>urlFormulaire</param-name>
<param-value></param-value>
</init-param>
</servlet>
.
<servlet-mapping>
<servlet-name>personne2</servlet-name>
<url-pattern>/main2</url-pattern>
</servlet-mapping>
La nouvelle application appelée personne2 est accessible via l'URL /main2 (servlet-mapping)
I.12.3 - Les codes
La servlet principale est la classe ServletPersonne2. Elle ne diffère de la classe ServletPersonne1 que
par sa méthode doGet et l'ajout de l'import de la classe HttpSession :
- 66 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
package .servlets.personne;
import .IOException;
import .ArrayList;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import .HttpServlet;
import .HttpServletRequest;
import .HttpServletResponse;
import .HttpSession;
public class ServletPersonne2
extends HttpServlet {

/**
* @param request requête du client
* @param response réponse à construire
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException,
ServletException {
// on vérifie comment s'est passée l'initialisation de la servlet
if(urlErreurs==null) throw new ServletException("Le paramètre [urlErreurs] n'a pas été initialisé");
if(()!=0){
// on passe la main à la page d'erreurs
request.setAttribute("erreurs",erreurs);
getServletContext().getRequestDispatcher(urlErreurs).forward(request,response);
//fin
return;
}
// on récupère les paramètres
String nom=request.getParameter("txtNom");
String age=request.getParameter("txtAge");
// des paramètres ?
if(nom==null || age==null){
// on envoie le formulaire
request.setAttribute("urlAction",urlMain);
getServletContext().getRequestDispatcher(urlFormulaire).forward(request,response);
return;
}//
// on mémorise les deux données dans la session
HttpSession session=request.getSession();
session.setAttribute("nom",nom);
session.setAttribute("age",age);
// vérification des paramètres
ArrayList erreursAppel=new ArrayList();
();
if(nom.equals("")) ("Le champ [nom] n'a pas été rempli");
if(! age.matches("^\\s*\\d+\\s*$")) ("Le champ [age] est erroné");
if(()!=0){
// on envoie la page d'erreurs
request.setAttribute("erreurs",erreursAppel);
request.setAttribute("urlRetour",urlMain);
getServletContext().getRequestDispatcher(urlErreurs).forward(request,response);
return;
}//if
// les paramètres sont corrects - on envoie la page réponse
request.setAttribute("nom",nom);
request.setAttribute("age",age);
request.setAttribute("urlRetour",urlMain);
getServletContext().getRequestDispatcher(urlReponse).forward(request,response);
return;
}

Les points à noter :
- 67 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé

les paramètres [nom] et [age], s'ils existent, sont enregistrés dans la session courante. Ils y
seront disponibles pour le formulaire .

un nouvel attribut urlRetour est transmis aux pages urlErreurs et urlReponse. Il servira à générer
le lien de retour vers le formulaire. Ce lien de retour pointe vers la servlet principale
/personne/main2. Cette servlet recevant une requête sans paramètres la transmettra au
formulaire qui lui récupèrera dans la session le couple (nom,age) s'il y a été placé auparavant.
La page  est identique à la page , si ce n'est qu'elle
récupère ses paramètres [nom] et [age] dans la session plutôt que dans la requête.
<%
// on récupère les paramètres nom et age dans la session
String nom=(String)session.getAttribute("nom");
if(nom==null) nom="";
String age=(String)session.getAttribute("age");
if(age==null) age="";
// l'attribut urlAction est lui récupéré dans la requête
String urlAction=(String)request.getAttribute("urlAction");
%>
<html>
.
</html>
La page  est identique à la page  à quelques détails
près :

un nouvel attribut urlRetour est récupéré dans la requête

cet attribut est utilisé pour générer le lien de bas de page
<%
String nom=(String)request.getAttribute("nom");
String age=(String)request.getAttribute("age");
String urlRetour=(String)request.getAttribute("urlRetour");
%>
<html>
<head>
<title>Personne</title>
</head>
<body>
<h2>Personne - réponse</h2>
<hr>
<table>
<tr>
<td>Nom</td>
<td><%= nom %>
</tr>
<tr>
<td>Age</td>
<td><%= age %>
</tr>
</table>
<br>
<a href="<%= urlRetour %>">Retour au formulaire</a>
</body>
</html>
- 68 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
La page  est identique à la page  aux détails près suivants
:

l'attribut urlRetour est récupéré dans la requête

puis il est utilisé pour générer le lien de bas de page
<%@ page import=".ArrayList" %>
<%
ArrayList erreurs=(ArrayList)request.getAttribute("erreurs");
String urlRetour=(String)request.getAttribute("urlRetour");
%>
<html>
<head>
<title>Personne</title>
</head>
<body>
<h2>Les erreurs suivantes se sont produites</h2>
<ul>
<%
for(int i=0;i<();i++){
out.println("<li>" + (String) (i) + "</li>\n");
}//for
%>
</ul>
<br>
<a href="<%= urlRetour %>">Retour au formulaire</a>
</body>
</html>
I.12.4 - Déploiement
- 69 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
I.12.5 - Tests
On pourra reproduire les tests présentés au début de cette nouvelle version.
- 70 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
I.13 - Scripts côté navigateur
I.13.1 - Le nouveau formulaire
Notre application vérifie côté serveur la validité des paramètres nom et âge du formulaire. Il doit
toujours en être ainsi. Une application web ne doit jamais faire l'hypothèse que ses clients vérifient les
données qu'ils lui envoient. Elle doit au contraire toujours supposer qu'on peut lui envoyer des
données erronées parfois volontairement.
Lorsque le client est un navigateur, on peut inclure dans la page HTML qu'on envoie à celui-ci des
scripts qui vérifieront les données à envoyer au serveur avant de les envoyer réellement. Si celles-ci
s'avèrent invalides, elles ne sont alors pas envoyées au serveur et les erreurs sont signalées à
l'utilisateur du navigateur. On a ainsi gagné un aller-retour client-serveur inutile.
Dans notre application personne la seule page JSP où il est utile de placer des scripts est celle du
formulaire. La page appelée maintenant  devient la suivante :
<%
String nom=(String)session.getAttribute("nom");
if(nom==null) nom="";
String age=(String)session.
if(age==null) age="";
String urlAction=(String)request.getAttribute("urlAction");
%>
<html>
<head>
<title>Personne - formulaire</title>
<script language="javascript">
// -------------------------------
function effacer(){
// on efface les champs de saisie
with(document.frmPersonne){
txtNom.value="";
txtAge.value="";
}//with
}//effacer
// -------------------------------
function envoyer(){
// vérification des paramètres avant de les envoyer
with(document.frmPersonne){
// le nom ne doit pas être vide
champs=/^\s*$/.exec(txtNom.value);
if(champs!=null){
// le nom est vide
alert("Vous devez indiquer un nom");
txtNom.value="";
txtNom.focus();
// retour à l'interface visuelle
return;
}//if
// l'âge doit être un entier positif
champs=/^\s*\d+\s*$/.exec(txtAge.value);
if(champs==null){
// l'âge est incorrect
alert("Age incorrect");
txtAge.focus();
// retour à l'interface visuelle
- 71 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
return;
}//if
// les paramètres sont corrects - on les envoie au serveur
submit();
}//with
}//envoyer
</script>
</head>
<body>
<center>
<h2>Personne - formulaire</h2>
<hr>
<form action="<%= urlAction %>" method="post" name="frmPersonne">
<table>
<tr>
<td>Nom</td>
<td><input name="txtNom" value="<%= nom %>" type="text" size="20"></td>
</tr>
<tr>
<td>Age</td>
<td><input name="txtAge" value="<%= age %>" type="text" size="3"></td>
</tr>
<tr>
</table>
<table>
<tr>
<td><input type="button" value="Envoyer" onclick="envoyer()"></td>
<td><input type="reset" value="Rétablir"></td>
<td><input type="button" value="Effacer" onclick="effacer()"></td>
</tr>
</table>
</form>
</center>
</body>
</html>
Les points importants :

un nom a été donné au formulaire : <form   name="frmPersonne">. Ce nom est utilisé dans les
scripts côté navigateur

le bouton [Envoyer] autrefois de type submit est devenu de type button. Lorsqu'on clique dessus,
la fonction javascript envoyer() est appelée.

de même lorsqu'on clique sur le bouton [Effacer] lui aussi de type button, la fonction javascript
effacer() est appelée.

les fonctions javascript envoyer() et effacer() ont été placées entre les balises <script> et
</script> du document HTML. Le lecteur est invité à lire le chapitre 9 du polycopié pour une
première introduction à Javascript et notamment à ses expressions régulières.
I.13.2 - Configuration et déploiement
Les sections suivantes sont ajoutées au fichier  :
<servlet>
<servlet-name>personne3</servlet-name>
<servlet-class>.servlets.personne.ServletPersonne2</servlet-class>
<init-param>
<param-name>urlMain</param-name>
<param-value>/personne/main3</param-value>
- 72 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
</init-param>
<init-param>
<param-name>urlReponse</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>urlErreurs</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>urlFormulaire</param-name>
<param-value></param-value>
</init-param>
</servlet>

<servlet-mapping>
<servlet-name>personne3</servlet-name>
<url-pattern>/main3</url-pattern>
</servlet-mapping>
Les changements apportés sont les suivants :

la page JSP du formuaire s'appelle désormais .

l'application s'appelle personne3 et est disponible via l'URL /personne/main3.
Rien d'autre ne change.
On suivra la méthode de déploiement des cas précédents pour déployer cette nouvelle application.
I.13.3 - Tests
- 73 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
I.14 - Utiliser des bibliothèques de balises
Considérons la vue [] qui affiche une liste d'erreurs :
Il y a plusieurs façons d'écrire une telle page. Nous ne nous intéressons ici qu'à la partie affichage des
erreurs. Une première solution est d'utiliser du code Java comme il a été fait :
<%@ page import=".ArrayList" %>0
<%
ArrayList erreurs=(ArrayList)request.getAttribute("erreurs");
String urlRetour=(String)request.getAttribute("urlRetour");
%>
<html>
<head>
<title>Personne</title>
</head>
<body>
<h2>Les erreurs suivantes se sont produites</h2>
<ul>
<%
for(int i=0;i<();i++){
out.println("<li>" + (String) (i) + "</li>\n");
}//for
%>
</ul>
<br>
<a href="<%= urlRetour %>">Retour au formulaire</a>
</body>
</html>
La page JSP récupère la liste des erreurs dans la requête et l'affiche à l'aide d'une boucle. La page
mélange code HTML et code Java, ce qui peut être problématique si la page doit être maintenue par
un infographiste qui en général ne comprendra pas le code Java. Pour éviter ce mélange, on utilise
des bibliothèques de balises qui vont apporter des possibilités nouvelles aux pages JSP. Avec la
bibliothèque de balises JSTL, la vue précédente devient la suivante :
<%@ taglib uri="" prefix="c" %>
<html>
<head>
- 74 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
<title>Personne</title>
</head>
<body>
<h2>Les erreurs suivantes se sont produites</h2>
<ul>
<c:forEach var="erreur" items="${erreurs}">
<li><c:out value="${erreur}"/></li>
</c:forEach>
</ul>
<br>
<a href="<c:url value="${urlRetour}"/>">Retour au formulaire</a>
</body>
</html>
La balise
<%@ taglib uri="" prefix="c" %>
signale l'utilisation d'une bibliothèque de balises dont la définition se trouve dans le fichier
[]. Ces balises seront utilisées dans le code de la page, préfixées du mot c (prefix="c").
On peut utiliser tout préfixe de son choix. Ici c signifie [core]. Les préfixes permettent d'utiliser
plusieurs bibliothèques de balises qui pourraient avoir les mêmes noms pour certaines balises.
L'utilisation du préfixe lève l'ambiguïté. La nouvelle page n'a plus de code Java. La boucle d'affichage
des erreurs a été remplacée par le texte suivant :
<c:forEach var="erreur" items="${erreurs}">
<li><c:out value="${erreur}"/></li>
</c:forEach>

la balise <forEach> sert à délimiter une boucle

la balise <c:out  > sert à écrire une valeur
La balise <forEach> a ici deux attributs :

items="${erreurs}" indique la collection d'objets sur laquelle il faut itérer. Ici, la collection est
l'objet erreurs. Où celui-ci est-il trouvé ? La page JSP va chercher un attribut s'appelant "erreurs"
successivement et dans l'ordre dans :

l'objet
[request]
qui
représente
la
requête
transmise
par
le
contrôleur
:
request.getAttribute("erreurs")

l'objet [session] qui représente la session du client : session.getAttribute("erreurs")

l'objet
[context]
qui
représente
le
contexte
de
l'application
web
:
context.getAttribute("erreurs")
La collection désignée par l'attribut items peut avoir diverses formes : tableau, ArrayList, objet
implémentant l'interface List, 

var="erreur" sert à donner un nom à l'élément courant de la collection en cours de traitement. La
boucle <forEach> va être exécutée successivement pour chaque élément de la collection items.
A l'intérieur de la boucle, l'élément de la collection en cours de traitement sera donc désigné ici
par erreur.
- 75 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
La balise <c:out value=" "/> sert à écrire la valeur désignée par l'attribut value. L'opération <c:out
value="${erreur}"/> insère la valeur de la variable erreur dans le texte. Cette variable n'est pas
nécessairement une chaîne de caractères. La balise utilise la méthode erreur.toString() pour insérer
l'objet erreur.©
Pour en revenir à notre exemple d'affichage des erreurs :

le contrôleur mettra dans la requête transmise à la page JSP un ArrayList de messages
d'erreurs, donc un ArrayList d'objets String : request.setAttribute("erreurs",erreurs) où erreurs est
le ArrayList ;

à cause de l'attribut items="${erreurs}", la page JSP va chercher un attribut appelé erreurs,
successivement dans la requête, la session, le contexte. Elle va le trouver dans la requête :
request.getAttribute("erreurs") va rendre le ArrayList placé dans la requête par le contrôleur ;

la variable erreur de l'attribut var="erreur" va donc désigner l'élément courant du ArrayList, donc
un objet String. La méthode erreur.toString() va insérer la valeur de ce String, ici un message
d'erreur, dans le flux HTML de la page.
Les objets de la collection traitée par la balise <forEach> peuvent être plus complexes que de simples
chaînes de caractères. Prenons l'exemple d'une page JSP qui affiche une liste d'articles :
<c:forEach var="article" items="${listarticles}">
<tr>
<td><c:out value="${}"/></td>
<td><c:out value="${}"/></td>
<td><a href="<c:url value="?action=infos&id=${}"/>">Infos</a></td>
</tr>
</c:forEach>
Ici, [listarticles] est un ArrayList d'objets de type [Article]. Celui-ci est un Javabean avec les champs
[id, nom, prix, stockActuel, stockMinimum]. Chacun de ces champs est accompagné de ses méthodes
get et set. L'objet [listarticles] a été placé dans la requête par le contrôleur. La page JSP précédente
va le récupérer dans l'attribut items de la balise forEach. L'objet courant article (var="article") désigne
donc un objet de type [Article]. Considérons la balise d'écriture suivante :
<c:out value="${}"/>
Que signifie ${} ? En fait diverses choses selon la nature de l'objet article. Pour obtenir la
valeur de , la page JSP va essayer deux choses :
1
article.getNom() - on notera l'orthographe getNom pour récupérer le champ nom (norme
Javabean)
2
("nom")
On voit donc que l'objet [article] peut être un bean avec un champ nom, ou un dictionnaire avec une
clé nom. Il n'y a pas de limites à la hiérarchie de l'objet traité. Ainsi la balise
<c:out value="${individu.enfants[1].nom}"/>
permet de traiter un objet [individu] de type suivant :
- 76 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
class Individu{
private String nom;
private String prénom;
private Individu[] enfants;
// méthodes de la norme Javabean
public String getNom(){ return nom;}
public String getPrénom(){ return prénom;}
public Individu getEnfants(int i){ return enfants[i];}
}
Pour obtenir la valeur de ${individu.enfants[1].nom}, la page JSP va essayer diverses méthodes dont
celle-ci qui réussira : individu.getEnfants(1).getNom() où individu désigne un objet de type Individu.
La page JSP d'erreurs utilise une balise JSTL également pour afficher le lien de retour vers le
formulaire de l'application :
<a href="<c:url value="${urlRetour}"/>">Retour au formulaire</a>
Si [/personne] est le contexte de l'application et [main3] la valeur de la variable [urlRetour], le texte
HTML généré par le code cidessus sera le suivant :
<a href="/personne/main3"/>">Retour au formulaire</a>
La balise <c:url ..> préfixe toute url par le contexte de l'application, ici [/personne]. Cela permet de
gérer des url indépendamment du contexte. C'est important car le nom d'un contexte peut être amené
à changer.
L'utilisation de la bibliothèque de balises JSTL dans les vues JSP de notre application nécessite :

la présence du fichier c.tld dans l'arborescence de l'application web. Ici, nous l'avons placé dans
le dossier [WEBINF] :

la présence des archives des classes utilisées par la bibliothèque JSTL :  et .
Ces deux archives sont placées dans [WEB-INF/lib] :

la présence de la directive suivante dans toutes les pages JSP utilisant la bibliothèque :
- 77 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
<%@ taglib uri="" prefix="c" %>
Une nouvelle application utilisant la bibliothèque JSTL dans les vues amène les modifications
suivantes :

<servlet>
<servlet-name>personne4</servlet-name>
<servlet-class>.servlets.personne.ServletPersonne2</servlet-class>
<init-param>
<param-name>urlMain</param-name>
<param-value>/main4</param-value>
</init-param>
<init-param>
<param-name>urlReponse</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>urlErreurs</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>urlFormulaire</param-name>
<param-value></param-value>
</init-param>
</servlet>

<servlet-mapping>
<servlet-name>personne4</servlet-name>
<url-pattern>/main4</url-pattern>
</servlet-mapping>
En-dehors des noms d'url qui changent, la princiaple différence vient de la valeur du paramètre
[urlMain]. Celle-ci ne contient plus le nom du contexte /personne, ceci grâce à l'utilisation de la balise
JSTL <c:url  > dans les vues.
Vue 
<%@ taglib uri="" prefix="c" %>
<html>
<head>
<title>Personne - formulaire</title>
<script language="javascript">
. (idem version précédente)
</script>
</head>
<body>
<center>
<h2>Personne - formulaire</h2>
<hr>
<form method="post" name="frmPersonne" action="<c:url value="${urlAction}"/>">
<table>
<tr>
<td>Nom</td>
<td><input name="txtNom" value="<c:out value="${nom}"/>" type="text" size="20"></td>
</tr>
<tr>
- 78 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
Vue 
<td>Age</td>
<td><input name="txtAge" value="<c:out value="${age}"/>" type="text" size="3"></td>
</tr>
<tr>
</table>
<table>
<tr>
<td><input type="submit" value="Submit"></td>
<td><input type="button" value="Envoyer" onclick="envoyer()"></td>
<td><input type="reset" value="Rétablir"></td>
<td><input type="button" value="Effacer" onclick="effacer()"></td>
</tr>
</table>
</form>
</center>
</body>
</html>
Nous avons rajouté un bouton de type [submit] au formulaire afin de pouvoir court-circuiter la
vérification des données faites par le navigateur lors de l'utilisation du bouton [Envoyer] et d'avoir ainsi
accès à la page [].
Vue 
<%@ taglib uri="" prefix="c" %>
<html>
<head>
<title>Personne</title>
</head>
<body>
<h2>Personne - réponse</h2>
<hr>
<table>
<tr>
<td>Nom</td>
<td><c:out value="${nom}"/></td>
</tr>
<tr>
<td>Age</td>
<td><c:out value="${age}"/></td
</tr>
</table>
<br>
- 79 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
Vue 
<a href="<c:url value="${urlRetour}"/>">Retour au formulaire</a>
</body>
</html>
Vue 
<%@ taglib uri="" prefix="c" %>
<html>
<head>
<title>Personne</title>
</head>
<body>
<h2>Les erreurs suivantes se sont produites</h2>
<ul>
<c:forEach var="erreur" items="${erreurs}">
<li><c:out value="${erreur}"/></li>
</c:forEach>
</ul>
<br>
<a href="<c:url value="${urlRetour}"/>">Retour au formulaire</a>
</body>
</html>
Déploiement
- 80 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
- 81 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
I.15 - Créer une page d'accueil
Lorsque nous demandons l'url [http://localhost:8080/personne/], nous obtenons actuellement le
résultat suivant (vue partielle) :i
Nous obtenons le contenu du dossier de l'aplication. Ce n'est pas une bonne chose. Ici, un internaute
peut obtenir le contenu du fichier [] et de façon générale de tous les fichiers qui
seront exposés dans la vue ci-dessus. Il est possible d'éviter cela au moins de deux façons :

configurer Tomcat pour qu'il n'affiche pas le contenu du dossier

faire en sorte que lorsque le contexte est demandé, on affiche une page dite d'accueil plutôt que
la liste ci-dessus.
Nous développons ici la deuxième solution. On ajoute au fichier [] une nouvelle balise :
..
<welcome-file-list>
<welcome-file></welcome-file>
</welcome-file-list>
</web-app>
La balise <welcome-file-list> sert à définir la liste des vues à présenter lorsqu'un client demande le
- 82 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
contexte de l'application. Il peut y avoir plusieurs vues. La première trouvée est présentée au client. Ici
nous n'en avons qu'une []. Celle-ci se contente de redirger le client vers une autre URL :
<%@ taglib uri="" prefix="c" %>
<c:redirect url="/main4"/>
La redirection se fait au moyen de la balise JSTL <c:redirect  />. Le lecteur est invité à tester cette
nouvelle version lui-même car ici les copies d'écran ne peuvent montrer la redirection à l'oeuvre.
- 83 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
I.16 - Développement MVC
I.16.1 - Introduction
Dans le développement logiciel en général et dans le développement web en particulier, on cherche à
séparer nettement les couches présentation, traitement et accès aux données. L'architecture d'une
application web est ainsi souvent la suivante :
Une telle architecture, appelée 3-tiers ou à 3 niveaux cherche à respecter le modèle MVC (Model
View Controller) :

l'interface utilisateur contient le V (la vue) et le C (le contrôleur)

les couches métier et d'accès aux données forment le M (Modèle)
Pour une architecture web J2EE, le schéma à trois couches peut être détaillé de la façon suivante :
L'interface utilisateur est ici un navigateur web mais cela pourrait être également une application
autonome qui via le réseau enverrait des requêtes HTTP au service web et mettrait en forme les
résultats que celui-ci lui envoie. La logique applicative est constituée des scripts traitant les demandes
de l'utilisateur, ici la servlet Java. La source de données est souvent une base de données mais cela
peut être aussi un annuaire LDAP ou un service web distant. Dans les exemples développés
précédemment, il n'y avait que la seule couche [Interface utilisateur].
Le développeur a intérêt à maintenir une grande indépendance entre ces trois entités afin que si l'une
d'elles change, les deux autres n'aient pas à changer ou peu.

On mettra la logique métier de l'application dans des classes Java séparées de la servlet qui
contrôle le dialogue demanderéponse. Ainsi le bloc [Logique applicative] ci-dessus sera
constitué des éléments suivants :
- 84 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
Dans le bloc [Logique Applicative], on pourra distinguer

le bloc [IE=Interface d'Entrée] qui est la porte d'entrée de l'application. Elle est la même quelque
soit le type de client.

le bloc [Classes métier] qui regroupe des classes Java nécessaires à la logique de l'application.
Elles sont indépendantes du client.

le bloc des générateurs des pages réponse [IS1 IS2   IS=Interface de Sortie]. Chaque
générateur est chargé de mettre en forme les résultats fournis par la logique applicative pour un
type de client donné : code HTML pour un navigateur ou un téléphone WAP, code XML pour une
application autonome,   Ce modèle assure une bonne indépendance vis à vis des clients. Que
le client change ou qu'on veuille faire évoluer sa façon de présenter les résultats, ce sont les
générateurs de sortie [IS] qu'il faudra créer ou adapter.

Dans une application web, l'indépendance entre la couche présentation et la couche traitement
peut être améliorée par l'utilisation de feuilles de style. Celles-ci gouvernent la présentation d'une
page Web au sein d'un navigateur. Pour changer cette présentation, il suffit de changer la feuille
de style associée. Il n'y a pas à toucher à la logique de traitement.

Dans le diagramme ci-dessus, les classes métier passent par des classes intermédiaires pour
accéder aux données. Ainsi les classes métier forment le noyau dur de l'application insensible
aux changements de présentation ou d'accès aux données.
Dans les cas simples, la logique applicative est souvent réduite à deux classes :

la servlet assurant le dialogue client-serveur : traitement de la requête, génération des diverses
réponses

la classe métier qui reçoit de la servlet des données à traiter et lui fournit en retour des résultats.
- 85 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
I.16.2 - Une démarche de développement MVC en Java!
Nous proposons ici une démarche possible pour le développement d'applications web java selon le
modèle MVC précédent :

on commencera par définir toutes les vues de l'application. Celles-ci sont les pages Web
présentées à l'utilisateur. On se placera donc du point de vue de celui-ci pour dessiner les vues.
On distingue trois types de vues :

le formulaire de saisie qui vise à obtenir des informations de l'utilisateur. Celui-ci dispose en
général d'un bouton pour envoyer les informations saisies au serveur.

la page de réponse qui ne sert qu'à donner de l'information à l'utilisateur. Celle-ci dispose
souvent d'un lien permettant à l'utilisateur de poursuivre l'application avec une autre page.

la page mixte : la servlet a envoyé au client une page contenant des informations qu'elle a
générées. Cette même page va servir au client pour fournir à la servlet d'autres
informations.

Chaque vue donnera naissance à une page JSP. Pour chacune de celles-ci :

on dessinera l'aspect de la page

on déterminera quelles sont les parties dynamiques de celle-ci :

les informations à destination de l'utilisateur qui devront être fournies par la servlet en
paramètres à la vue JSP

les données de saisie qui devront être transmises à la servlet pour traitement.
Celles-ci devront faire partie d'un formulaire HTML.

On pourra schématiser les E/S de chaque vue

les entrées sont les données que devra fournir la servlet à la page JSP soit dans la requête
(request) ou la session (session).

les sorties sont les données que devra fournir la page JSP à la servlet. Elles font partie d'un
formulaire HTML et la servlet les récupèrera par une opération du type
- 86 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
request.getparameter( ).

On écrira le code Java/JSP de chaque vue. Il aura le plus souvent la forme suivante :
<%@ page   %> // importations de classes le plus souvent
<%!
// variables d'instance de la page JSP (=globales)
// nécessaire que si la page JSP a des méthodes partageant des variables (rare)

%>
<%
// récupération des données envoyées par la servlet
// soit dans la requête (request) soit dans la session (session)

%>
<html>

// on cherchera ici à minimiser le code java
</html>

On peut alors passer aux premiers tests. La méthode de déploiement expliquée ci-dessous est
propre au serveur Tomcat :

le contexte de l'application doit être créé dans le fichier  de Tomcat. On pourra
commencer par tester ce contexte. Soit C ce contexte et DC le dossier associé à celui-ci.
On construira un fichier statique  qu'on placera dans le dossier DC. Après avoir
lancé Tomcat, on demandera avec un navigateur l'URL .

chaque page JSP peut être testée. Si une page JSP s'appelle , on
demandera avec un navigateur l'URL . La page JSP
attend des valeurs de la servlet qui l'appelle. Ici on l'appelle directement donc elle ne
recevra pas les paramètres attendus. Afin que les tests soient néanmoins possibles on
initialisera soi-même dans la page JSP les paramètres attendus avec des constantes. Ces
premiers tests permettent de vérifier que les pages JSP sont syntaxiquement correctes.

On écrit ensuite le code de la servlet. Celle-ci a deux méthodes bien distinctes :

la méthode init qui sert à :

récupérer les paramètres de configuration de l'application dans le fichier  de
celle-ci

éventuellement créer des instances de classes métier qu'elle sera amenée à utiliser
ensuite

gérer une éventuelle liste d'erreurs d'initialisation qui sera renvoyée aux futurs
utilisateurs de l'application. Cette gestion d'erreurs peut aller jusqu'à l'envoi d'un mél à
l'administrateur de l'application afin de le prévenir d'un dysfonctionnement

la méthode doGet ou doPost selon la façon dont la servlet reçoit ses paramètres de ses
clients. Si la servlet gère plusieurs formulaires, il est bon que chacun d'entre-eux envoie
une information qui l'identifie de façon unique. Cela peut se faire au moyen d'un attribut
caché dans le formulaire du type <input type="hidden" name="action" value=" ">. La
servlet peut commencer par lire la valeur de ce paramètre puis déléguer le traitement de la
requête à une méthode privée interne chargée de traiter ce type de requête.

On évitera au maximum de mettre du code métier dans la servlet. Elle n'est pas faite pour
cela. La servlet est une sorte de chef d'équipe (contrôleur) qui reçoit des demandes de ses
clients (clients web) et qui les fait exécuter par les personnes les plus appropriées (les
- 87 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé
classes métier). Lors de l'écriture de la servlet, on déterminera l'interface des classes
métier à écrire (constructeurs, méthodes). Cela si ces classes métier sont à construire. Si
elles existent déjà, alors la servlet doit s'adapter à l'interface existante.

le code de la servlet sera compilé.

On écrira le squelette des classes métier nécessaires à la servlet. Par exemple, si la servlet
utilise un objet de type proxyArticles et que cette classe doit avoir une méthode getCodes
rendant une liste (ArrayList) de chaînes de caractères, on peut se contenter dans un premier
temps d'écrire :
public ArrayList getCodes(){
String[] codes= {"code1","code2","code3"};
ArrayList aCodes=new ArrayList();
for(int i=0;i<codes.length;i++){
(codes[i]);
}
return aCodes;
}

On peut alors passer aux tests de la servlet.

le fichier de configuration  de l'application doit être créé. Il doit contenir toutes les
informations attendues par la méthode init de la servlet (<init-param>). Par ailleurs, on fixe
l'URL au travers de laquelle sera atteinte la servlet principale (<servlet-mapping>).

toutes
les
classes
nécessaires
(servlet,
classes
métier)
sont
placées
dans
WEB-INF/classes.

toutes les bibliothèques de classes (.jar) nécesaires sont placées dans WEB-INF/lib. Ces
bibliothèques peuvent contenir des classes métier, des pilotes JDBC,  .

les vues JSP sont placées sous la racine de l'application ou un dossier propre. On fait de
même pour les autres ressources (html, images, son, vidéos,  )

ceci fait, l'application est testée et les premières erreurs corrigées. A la fin de cette phase,
l'architecture de l'application est opérationnelle. Cette phase de test peut être délicate
sachant qu'on n'a pas d'outil de débogage avec Tomcat. Il faudrait pour cela que Tomcat
soit lui-même intégré dans un outil de développement (Jbuilder Developer, Sun One
Studio,  ). On pourra s'aider d'instructions .println(" .") qui écrivent dans la
fenêtre de Tomcat. La première chose à vérifier est que la méthode init récupère bien
toutes les données provenant du fichier . On pourra pour cela écrire la valeur de
celles-ci dans la fenêtre de Tomcat. On vérifiera de la même façon que les méthodes
doGet et doPost récupèrent correctement les paramètres des différents formulaires HTML
de l'application.

On écrit les classes métier dont a besoin la servlet. On a là en général le développement
classique d'une classe Java le plus souvent indépendante de toute application web. Elle sera
tout d'abord testée en dehors de cet environnement avec une application console par exemple.
Lorsqu'une classe métier a été écrite, on peut l'intégrer dans l'architecture de déploiement de
l'application web et tester sa correcte intégration dans celui-ci. On procèdera ainsi pour chaque
classe métier.
I.16.3 - Pour approfondir le développement web MVC
- 88 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Développement web en Java avec Eclipse et Tomcat par Serge Tahé

Struts - c'est l'outil le plus connu. La plupart des développements MVC en java sont faits
actuellement avec la démarche et les bibliothèques Struts.

Spring - c'est un outil plus récent qui ne se limite pas au développement MVC. Son intérêt
principal est qu'il apporte une aide dans les trois couches [web - métier - dao], du
développement web. Struts lui se cantonne à la seule couche web.
I.16.4 - Téléchargements
Article au format HTML/ZIP
Article au format PDF Article au format PDF (version originale)
- 89 -
Les sources présentés sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page
de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2005Serge
Tahé . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000
E de domages et intérets.

Document Outline

  • Objectifs
  • Les outils
  • Le conteneur de servlets Tomcat 5
  • Déploiement d'une application web au sein du serveur Tomcat
  • Installation de plugins Eclipse
  • Lancer-Arrêter Tomcat depuis Eclipse
  • Développement d'une application web avec Eclipse/Tomcat
    • Création du contexte de l'application
    • Création d'un document HTML
  • Une page JSP
  • Une servlet
    • Configuration de Eclipse
    • Ecriture de la servlet
    • Déploiement de la servlet dans Tomcat
    • Test de la servlet
  • Coopération servlets et pages JSP
    • La servlet
    • La page JSP
    • Déploiement de l'application
  • Une application multi-pages
    • Introduction
    • Configuration
    • Les codes
    • Déploiement
    • Tests
  • Gestion d'une session
    • Introduction
    • Configuration
    • Les codes
    • Déploiement
    • Tests
  • Scripts côté navigateur
    • Le nouveau formulaire
    • Configuration et déploiement
    • Tests
  • Utiliser des bibliothèques de balises
  • Créer une page d'accueil
  • Développement MVC
    • Introduction
    • Une démarche de développement MVC en Java!
    • Pour approfondir le développement web MVC
    • Téléchargements


1