Développement d'applications wen en JAVA

Le projet BetaBoutique Java EE
Tout au long du guide, un projet de boutique en ligne est utilisé afin de tester et de mettre en application les parties théoriques et les exemples.
Le développement d'une boutique permet :
- De gérer des utilisateurs/personnes pour les clients, les commandes, les administrateurs (création, modification, suppression, authentification)
- De gérer des articles/produits (création, modification, suppression, tri...).
- De gérer un panier dynamique (création, modification, suppression, session, listes...).
- De gérer des commandes et réservations (transactions, mails, tri, autoincrement...).
- De gérer des langues (articles en plusieurs langues).
- De manipuler le stock d'articles/produits avec un client lourd (application JWS).

Le projet betaboutiquejavaee.war a été réalisé (à l'aide du livre : Java EE guide de développement d'applications web en Java) par Anthony Brissonnet lors de son projet d'étude de fin d'année Java EE sous la direction de Jérôme Lafosse enseignant responsable de la matière



Tester l'application en ligne
testerapplicationVous pouvez tester l'application directement en ligne avec cette plate-forme
L'accès public (frontoffice) de type visiteur ne nécessite pas d'authentification.
L'accès public (frontoffice) de type client nécessite une authentification.
authentification
Pour cela vous pouvez utiliser les coordonnées suivantes :
use case
Identifiant : jlafosse
Mot de passe : jerome

L'accès privé (backoffice) de type administrateur nécessite une authentification. Si vous souhaitez utiliser cette interface vous pouvez envoyer un mail par l'intermédiaire du formulaire de contact pour recevoir l'identifiant et le mot de passe.



Télécharger les sources du projet
use caseTélécharger le projet complet.
use caseTélécharger le fichier de configuration de l'application (web.xml).



Expression des besoins
L'entreprise fictive BetaBoutique vend des articles en rapport avec le cinéma. Elle exerce son métier avec des fiches papier, des commandes par fax et par chèque courrier puis envoie la commande au client. Dès que le chèque est encaissé, elle utilise les services de La Poste pour expédier les colis. La société BetaBoutique n'arrive plus à gérer manuellement son expansion et souhaite utiliser un système d'information pour lui permettre de répondre à cette croissance. Elle attend plusieurs services du SI comme la vente en ligne, la gestion du catalogue d'articles (essentiellement des DVD) et la base de données des clients.

Pour l'expression des besoins de la société BetaBoutique, nous allons utiliser le modèle UML (Unified Modeling Language). Dans un premier temps, le diagramme des cas d'utilisation qui permet de représenter les fonctionnalités du système du point de vue utilisateur sera présenté.
Le diagramme de cas d'utilisation se compose :
- D'acteurs (entités externes humaines ou robot/matériel qui utilisent le système).
- De cas d'utilisation (fonctionnalités proposées par le système).
use case



Découpage utilisé
La boutique BetaBoutique sera découpée selon le modèle suivant avec un entête, un menu de navigation et un pied de page. Les fichiers .jspf sont des pages JSP qui sont utilisées pour définir des fragments de pages et qui sont inclus dans d'autres pages (comme pour les menus, entêtes...).
maquette



Services proposés
- Catalogue des articles : La page de catalogue des articles, permet d'afficher la liste paginée des produits par catégorie.
- Fiche article : La fiche article permet d'afficher le détail du produit avec le nom, la note, la description, le prix et un bouton pour ajouter cet article au panier.
- Rechercher un article : La zone de saisie présente en haut à droite du site permet de rechercher un article à partir de son nom ou de sa description. Les visiteurs peuvent ainsi rechercher des articles à partir d'une chaîne de caractères. La recherche ne tient pas compte de la casse (Majuscules/Minuscules). Si aucun article ne correspond à la recherche, un message informatif est affiché en consèquence.
- Authentification : Cette page permet au client de se connecter et se déconnecter du système. Le client doit avoir créé un compte auparavant. Il saisit alors son identifiant et son mot de passe. Si l'authentification est correcte, l'utilisateur est redirigé sur la page d'accueil et un message d'invitation est alors affiché sur la totalité des pages du site jusqu'à la prochaine déconnexion. Lorsque le client se déconnecte, il redevient Internaute/visiteur simple.
- Créer un compte : Cette page permet au visiteur de se créer un compte dans le système et de devenir ainsi un client. Pour créer un compte, l'Internaute doit saisir un identifiant et un mot de passe avec une confirmation. L'identifiant doit être unique dans le système. Si ce n'est pas le cas, l'Internaute doit être averti et doit recommencer sa saisie avec un autre identifiant. Les deux mots de passe (mot de passe et la confirmation) doivent être identiques. Si les informations sont correctes, le visiteur est alors invité à compléter ses informations personnelles (nom, prénom, email, adresse...).
- Gérer le compte client : Chaque client peut consulter et mettre à jour ses informations personnelles au sein du système. Pour cela, le client doit se connecter au système et cliquer sur le lien Mon compte (après authentification). La page affiche en consultation ses données et permet de passer en mode édition.
- Acheter des articles : Les clients (visiteurs authentifiés) peuvent acheter des articles dans le système. Le client visualise le catalogue par catégorie ou réalise une recherche. Lorsqu'il est intéressé par un article, il clique sur le lien adapté pour l'ajouter à son panier. Le client a ensuite la possibilité de modifier la quantité désirée pour chaque article ou supprimer un ou plusieurs articles. Le client peut visualiser le contenu de son panier pendant toutes la durée de sa session quand bon lui semble. Lorsque le caddie est vide, un message informatif est affiché. Le panier affiche la liste des articles avec le nom, la photo, la quantité, le prix unitaire et le soustotal (prix*quantité). Le montant total du panier est également affiché en bas du panier. Lorsque le client est satisfait et qu'il souhaite valider sa commande, il peut alors saisir les informations de sa carte bancaire ainsi que son adresse de livraison. Une fois toutes les données validées, un bon de commande est créé et le panier électronique est automatiquement vidé.
- Gérer les commandes : Les employés de la société BetaBoutique peuvent visualiser et supprimer les commandes dans le système. Pour chaque commande, les employés peuvent visualiser le contenu et les articles associés.
- Gérer les articles : Les employés de la société BetaBoutique peuvent visualiser et supprimer les articles dans le système.



Introduction au modèle MVC
Trés souvent en programmation Internet, les requêtes HTTP sont gérées par des composants Web qui reçoivent les requêtes, créent les réponses et les retournent aux clients. On a donc un seul composant responsable de la logique d'affichage, de la logique métier et de la logique de persistance. Il existe une autre architecture appelée MVC ou Modèle Vue Contrôleur qui permet de séparer clairement les trois activités des composants impliqués.

L'architecture MVC sépare la logique métier de l'affichage. Dans ce modèle, un composant est chargé de recevoir les requˆtes (Servlets), un autre traite les données (Classes) et un troisième gère l'affichage (JSP). Si l'interfaçage entre ces trois composants est clairement défini, il devient plus simple de modifier un composant sans toucher aux deux autres.

- Modèle : Le modèle englobe la logique métier et les données sur lesquelles il opère. Toute classe Java qui manipule les données peut jouer le rôle du modèle et de nombreuses applications Web utilisent uniquement des Servlets ordinaires (ou des classes avec JDBC pour manipuler les bases de données).
- Vue : Dès que la requête courante est traitée, la logique de présentation est réalisée par une vue spécifique.
- Contrôleur : Le composant (ou les composants) contrôleur reçoit les requètes des clients, les traite et les transmet aux composants chargés de traiter les données. Les Servlets sont les composants dont la structure est la plus adaptée. Une Servlet est conçue pour recevoir les requètes des clients et leur retourner une réponse, ce qui est précisément le rôle du contrôleur.

Le schéma suivant présente une structure de type MCV avec l'utilisation de Servlets et pages JSP.
mvc



Base de données et modèle MVC
La partie Modèle concerne la persistance des données.
Point de vue de l'architecture, nous aurons trois paquetages :
- betaboutique.boiteoutils.
- betaboutique.modeles.
- betaboutique.servlets.
Le premier paquetage correspond à la connexion au SGBD, aux classes statiques pour les ressources et bases de données, aux JavaBeans...
Le second paquetage correspond aux classes modèles qui possèdent uniquement des accès aux données.
Le troisième et dernier paquetage, correspond aux Servlets (Contrôleur) pour le traitement des requètes clients.

Le principe de fonctionnement du modèle MVC pour le projet betaboutique est expliqué dans le schéma ci-dessous :
mvcbetaboutique



Modèle Conceptuel des Données
Le modèle conceptuel des données propre à la méthodologie MERISE est présenté dans le schéma ci-dessous. On retrouve la table article avec sa clé primaire et ses différents champs. Ce modèle conceptuel de données est volontairement simplifié mais permet la mise en place d'un projet sans erreur.

Article
Le champ datearticle correspond à la date d'insertion de l'article dans la base de données. Le champ photoarticle correspond au chemin de l'image grand format de la pochette du DVD. Le champ vignettearticle correspond au chemin de l'image petit format (ou vignette) du DVD. Enfin, l'attribut etatarticle est positionné par défaut dans la base de données et permet de mettre en ligne ou pas l'article concerné.

Catégorie
Un article est relié à une et une seule catégorie. Une catégorie est représentée par son nom.

Commande
Une commande correspond à au moins un article ou plusieurs. On conserve la date de la commande et le total de la commande. Le prix de l'article au moment de la commande est également conservé pour l'affichage de la facture exacte.

Client
Un client peut passer plusieurs commandes, mais il peut trés bien ne rien acheter sur le site. Un client peut également noter tous les articles du site ou ne jamais noter un article. Par contre, un client ne peut donner qu'une seule note par article.

Administrateur/Rôle
Un administrateur de la plate-forme betaboutique dispose d'un identifiant et d'un mot de passe et possède un rôle unique pour l'accès. Le rôle est utilisé uniquement pour l'hentification et la gestion des droits.
mcd