Projet IGift : exemple de site de e-commerce

De $1

Introduction

Ce projet est un petit site de e-commerce. Il a été réalisé par des élèves de M2 Miage en 2010. Il a été déjà étudié par les élèves qui ont suivi le cours "applications web" de M1 Miage. Je propose cet exemple avant tout pour les étudiants qui ont rejoint le M2 Miage de Nice sans passer par le M1 Miage de Nice.

Vous allez l'installer sur votre ordinateur, le faire compiler, le déployer, le faire fonctionner, puis vous étudierez le code source pour voir comment les différentes parties ont été réalisées.

igift.jpg

Récupérer l'archive du projet et l'installer

  1. Récupérez l'archive du projet : IGift.rar (1920Ko), desarchivez-là à l'endroit où se trouvent vos projet netbeans, puis ouvrez le projet. Ne le compilez pas, le le déployez pas encore.
  2. Récupérez la base de données JavaDB que le projet utilse : igiftDB.rar (124Ko). Desarchivez son contenu dans le répertoire qui contient les Bases de JavaDB : /user/<votre user>/.netbeans-derby sous windows vista ou 7, sous $HOME§.netbeans-derby sous linux et dans users and settings/<votre user>/.netbeans-derby sous windows XP.

Maintenant vous pouvez faire "run sur votre projet".

Si vous avez des erreurs, faites bouton de droite sur le projet qui a des erreurs et regardez s'il s'agit de mauvaises références ou de serveur mal configuré. Il se peut que IGift cherche une autre version de glassfish. Dans ce cas, utilisez le menu "spécifier le serveur" ou "résoudre les références", ou appelez votre enseignant.

Choses à étudier dans ce projet

Partie back-end (EJBs)

Ce projet contient de nombreux points intéressants, commencez par le projet EJB et regardez comment les couches sont implémentées : des entity pour la couche d'accès aux données, des stateless ou staeful session beans pour la couche DAO (rappel un DAO est un gestionnaire qui fournit des services sur un seul type d'objets), des services composites (qui en utilisent d'autres), etc. Remarquez les différents packages qui permettent de différencier ces différentes couches.

Remarquez que tous les DAO ont pratiquement les mêmes fonctionnalités d'implémenter : crééer des objets, rechercher, lister, etc.

Les beans dans le package session sont légèrement différents, ils fournissent des fonctionnalités moins spécialisées et utilisent souvent d'autres beans DAO ou session. Etudiez notamment le stateful session bean CartBean.java qui implémente un panier virtuel du site de e-commerce. Regardez comment il est implémenté.

Partie front-end (archive .war, servlets, jsp, pages html, javascript, services ajax, etc)

  • La page d'accueil est celle par défaut : index.jsp, regardez comment elle redirige aussitôt vers la LoadServlet, qui va soit remplir les tables avec des données de test, soit si les tables sont déjà pleines, renvoyer deux listes : la liste des catégories et la liste des produits, ceci pour que la première page que voit l'utilisateur soit une page avec des produits affichés sur l'écran et les différentes catégories. La page d'affichage est indiquée à la fin de LoadServlet.java : c'est la page principale home.jsp
  • Regardez comment home.jsp affiche les données, comment elle utilise des jsp includes pour composer le layout des pages et afficher un bandeau en haut et un menu sur le côté droit (menu.jsp et header.jsp). Regardez comment menu.jsp affiche les catégories. Rappel : les pages inclues partagent la même session, donc menu.jsp voit bien la liste des categories qui avait été passée en paramètre par la servlet.
  • Regardez comment est gérée la session utilisateur : elle est créée par LoadServlet initialement par :  HttpSession session = request.getSession(true);,
  • Regardez comment home.jsp utilise à bon escient les tags <if> de la JSTL et les variables pour ne pas faire plusieurs fois le même travail, ou pour ne pas afficher des produits dont le stock est nul.
  • Regardez dans login.jsp et LoginServlet comment on gère le fait que l'utilisateur est bien loggué au moment où il passe la commande, comment on gère le workflow (si il n'est pas loggué on propose qu'il se loggue, ou qu'il crée un compte, si il a un compte mais n'utilise pas le bon password, on reaffiche la page de login, sinon il est loggué, etc)