TP3 : Jsp / JSTL / EL / Servlets et architecture en couches

De $1

Version de 14:46, 7 Mai 2024

cette version.

Revenir à liste des archives.

Voir la version actuelle

Introduction

Dans ce TP vous devrez travailler avc netbeans 6.8 et glassfish V3 car nous utilisons quelques particularités de Java EE 6 (qui n'est pas supporté par Tomcat).

Travail à faire

Etudier le projet existant, son architecture, etc.

Récupérez ce projet netbeans : TPJsp.zip. Il s'agit d'un serveur permettant de gérer des utilisateur.

Dézippez le, ouvrez-le avec netbeans, regardez les sources :

On trouve une architecture en couche avec :

  • Le package utilisateurs.modeles qui contient une classe décrivant un modèle d'utilisateur. La classe est annotée à l'aide d'annotations de code de la librairie de sérialisation/désérialization JAXB (standard dans le JDK),
  • Le package utilisateurs.gestionnaires qui contient un gestionnaire d'utilisateur, c'est-à-dire un objet métier proposant des opérations sur les Utilisateurs comme "créer un utilisateur", "lister tous les utilisateurs", "chercher un utilisateur", etc.
  • un package utilisateurs contenant des fonctions utilitaires permettant de gérer les données dans des fichiers XML (pour le moment on n'utilise pas de base de données pour ne pas compliquer le TP).
  • Un package servlets qui contient les servlets du projet, qui font office de "controlleur web",
  • un répertoire "web pages" qui contient les pages html et JSP du projet.

 

Dans le code de la servlet, figure une ligne qui déclare des paramètres d'initialisation :

@WebServlet(name = "ServletUsers",
     urlPatterns = {"/ServletUsers"},
     initParams = {
         @WebInitParam(name = "ressourceDir", value = "C:\\Users\\michel\\Documents\\NetBeansProjects\\plarpebu 1.0 release sourceforge\\TPJsp")
     }
)

Mettez comme valeur pour le "ressourceDir" le chemin où se trouve la racine de votre projet. Sinon, cela ne pourra pas fonctionner ! Remplacez la valeur que j'ai mise dans le source qui correspond à mon emplacement sur mon disque dur !

Exécutez-le projet. Une fenêtre semblable à celle-ci doit apparaitre (en cas de soucis, vous vous êtes trompés en entrant le chemin ci-dessus, ou bien vous avez un jdk < 6_13, ou un vieux netbeans)

Seule la fonctionnalité permettant de liste les utilisateurs est implémentée dans sa partie "controlleur web".

Snap2.jpg

Etude de la servlet fournie

Regardez le code de la servlet. Elle sert d'interface HTTP entre le service de gestion des utilisateurs et le client web (le navigateur), le code de gestion des utilisateurs n'a rien à voir avec une application web.

Remarquez les annotations de code dans la servlet permettant d'initialiser des paramètres, comme l'URL de la servlet, des paramètres initiaux. Ne vous y trompez pas, le chemin où se trouve le fichier de ressources n'est pas "codé en dur", il figure dans une annotation de code, et cela est plus pratique que de le voir dans un fichier web.xml comme cela aurait du être le cas auparavant. Si vous exécutez le projet, regardez en réalité où s'exécute l'application ! Pas du tout dans le répertoire où se trouve le projet !

Notez aussi comment on gère les actions possibles et comment on "passe la main" à une JSP qui va s'occuper d'afficher l'interface utilisateur. Regardez comment on passe en paramètre la liste des utilisateurs.

Etude de la page JSP fournie

Ici on a affaire à une JSP très simple qui utilise la librairie JSTL pour effectuer des actions conditionnelles (y-a-t il un paramètre "message" si oui je l'affiche par ex.), et le langage EL pour accèder aux attributs de variables situées dans un des "scopes" (ici la requête HTTP).

 

Implémenter les fonctionnalités manquantes !

A vous de jouer ! Dans la page JSP figurent 4 autres fonctionnalités qui ne sont pas implémentées dans la Servlet (mais dont les services sont disponibles dans le gestionnaire de compte). N'oubliez pas qu'à chaque fois la Servlet doit repasser la main à la JSP en mettant à jour les données à afficher, en envoyant un message, etc.