Il s'agit dans ce TP de mettre en œuvre une application Web standard, de type CRUD (Create/Read/Update/Delete) en reprenant la gestion des sports des précédents TP.
Avant de commencer le TP, vous allez télécharger Apache Tomcat. Il s'agit d'un serveur HTTP capable d'exécuter du code Java. Il existe une version plus complète compatible avec tout Java/Jakarta EE, Apache Geronimo, mais la version Tomcat suffit pour le TP.
Téléchargez Apache Tomcat dans sa dernière version 10.0.27 sur cette page : https://archive.apache.org/dist/tomcat/tomcat-10/v10.0.27/bin/ . Pour Windows, téléchargez le fichier "apache-tomcat-10.0.27-windows-x64.zip". Décompressez cette archive quelque part sur votre disque.
La version d'Eclipse installée sur les machines des salles de TP est un peu ancienne et on ne peut pas prendre un Tomcat de version supérieure à 10.0.X. Les dernières versions stables sont 10.1.X que vous trouverez sur cette page : https://tomcat.apache.org/download-10.cgi
Comme pour le TP précédent avec JPA, il y a deux solutions : soit utiliser Maven pour gérer les dépendances, soit passer par un projet classique en rajoutant les librairies (fichiers .jar) à la main. Utilisez Maven si cela avait bien fonctionné pour le précédent TP, sinon utilisez l'autre version.
Le début de la création du projet est commun :
<body>
. Ce fichier est celui qui est
affiché au lancement de votre serveur Web.Quelques explications sur l'arborescence du projet :
src/main/java
. C'est là qu'est placé tout le code
Java de votre application Web : les Servlets et toutes les autres
classes comme celles permettant l'accès en JPA à la BDD ou le code
métier.src/main/java/META-INF
, vous
trouvez le fichier "persistence.xml" qui est le fichier de
configuration JPA comme dans le TP précédent.src/main/java/webapp
. C'est dans ce
répertoire que sont placés les fichiers HTML, JSP et feuilles de style
CSS.WEB-INF
qui contient un fichier "web.xml" qui
décrit la liste des Servlets de l'application Web (avec l'URL associée
à la classe Java de chaque Servlet) ainsi qu'un répertoire "lib" qui
contiendra les librairies que l'on veut déployer sur l'application Web
(facultatif si on passe par Maven).Il faut maintenant rajouter les librairies Java pour gérer l'accès JPA comme dans le premier TP ainsi que les librairies de composants Web. C'est là où vous choisissez entre la version Maven ou l'ajout à la main des fichiers JAR.
Faites un clic droit sur le projet : Configure -> Convert to Maven Project et remplissez les champs comme dans le TP sur JPA. Notez au passage que Maven vous propose le type de package "war" : il s'agit d'une Web ARchive qui est le fichier de déploiement d'une application Web en Java.
Dans le fichier "pom.xml", rajoutez les dépendances du TP sur JPA et ensuite celles-ci :
<dependency>
<groupId>jakarta.servlet.jsp.jstl</groupId>
<artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jakarta.servlet.jsp.jstl</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-jstlel</artifactId>
<version>1.2.5</version>
</dependency>
Décompressez l'archive jars-Web.zip et créez une librairie (nommée par exemple "Web-JSTL") dans votre projet comme dans le TP sur JPA.
En addition de la création de cette librairie, il faut
explicitement rajouter les fichiers JAR dans le
répertoire src/main/java/webapp/WEB-INF/lib
. Pour cela,
ouvrez un explorateur de fichiers Windows, placez-vous dans le
répertoire où sont les JAR, sélectionnez les tous et faites un copier
(Ctrl-C). Ensuite revenez sous Eclipse, sélectionnez le
répertoire lib
dans l'arborescence et faites un coller
(Paste après un clic droit ou Ctrl-V) pour y copier les
fichiers. Placez également les fichiers JAR de l'archive du TP sur
JPA.
Si tout s'est bien passé, vous avez un projet Web fonctionnel ne faisant rien et dont il faut encore configurer l'accès JPA par rapport à votre base de données et ensuite vérifier avec du code Java (Servlet/JSP avec du JSTL) que l'on arrive à générer des pages HTML avec du contenu obtenu à partir de la base de données.
webapp
. Modifiez le fichier pour que les
noms des attributs correspondent au contenu de vos POJO :
Sport
dans une discipline.Pour sauvegarder le fichier "afficheSportifs.jsp", faites un clic-droit sur le lien puis Sauvegarder sous. Ne l'ouvrez pas en cliquant dessus pour le sauvegarder ensuite, votre navigateur pourrait l'ouvrir comme une page HTML et en modifier le contenu à la sauvegarde ensuite.
Assurez-vous également que les getters et les setters ont un nom qui est cohérent avec celui des attributs dans vos POJO. Quand JSTL accède à un attribut "sport" dans une discipline, en pratique, il appelle la méthode "getSport()". Si vous aviez modifié vos POJO au niveau des noms des attributs mais sans modifier le nom des getters associés, vous aurez une erreur avec JSTL.
<p><a href="Sports?operation=listeSportif">Afficher tous les sportifs</a></p>
Si tout fonctionne, au prochain lancement du serveur, cocher la case Always use this server when running this project pour ne plus voir apparaitre la fenêtre de sélection du serveur HTTP à utiliser.
Il s'agit maintenant de rajouter des pages HTML, JSP et Servlets permettant de lire et de modifier le contenu de la base de données :
Pour réaliser les accès aux données, vous pouvez réutiliser votre
code du package sportsDAO
du précédent projet. Recopiez
le dans votre projet Web. Créez d'autres classes avec des méthodes
pour faire le lien entre les Servlets/JSP et la BDD pour éviter de
mettre trop de code Java notamment directement dans les pages JSP.
Eric Cariou, dernière modification : 26/12/23