Sujet mini-projet J2EE e-commerce
Transcription
Sujet mini-projet J2EE e-commerce
Sujet mini-projet J2EE e-commerce March 3, 2008 Vous devez développer une application exploitant les technologies J2EE dans le cadre d’un site e-commerce. Cette application doit être conforme au modèle JSP 2 (Cf. MVC avec JSP pour les vues, Servlet comme contrôleur et classe Java pour le modèle). Le schéma relationnel de la base de données est le suivant : Famille (numFam, nomFam) respectivement le numéro et le nom de la famille. Produit (numPro, puProd, nomPro, famPro) resp. le numéro du produit, le prix unitaire, le nom et le numéro de la famille. Client (numCli, nomCli, prenomCli, adrCli) resp. le numéro du client, son nom, son prénom et son adresse Commande (numPro, dateCde) resp. le numéro du produit, le numéro du client passant la commande, la quantité du produit commandé et la date de la commande. ProdCde ((numPro, numCde, qteCde) resp. le numéro du produit, le numéro de la commande et la quantité du produit commandé. CdeClient (numcli, numcde) Le scénario typique d’une session est le suivant : L’utilisateur se connecte au site, il navigue parmi les familles, en sélectionne une. Il obtient alors les produits de celle-ci. Il a alors la possibilité d’acheter (placer dans le caddie) les produits, et de fixer la quantité désirée. A tout moment, il doit être possible d’accéder à son caddie virtuel et ainsi d’obtenir l’état de celui-ci. Dans cette page, il peut modifier la quantité d’un produit commandé, supprimer la commande d’un produit ou bien valider cette commande. La validation d’une commande entraı̂ne une authentification de l’utilisateur (demande d’un login et d’un mot de passe). Si celle-ci s’est correctement effectuée, l’enregistrement de la commande est réalisée dans la base de données et on demande une confirmation de l’envoi à l’adresse indiquée dans la BD pour ce client. Travail á faire : 1. implanter la base de donnés à l’aide du fichier ecom.sql 2. définir la classe permettant l’accès à la base de données. Une version très simple comportera au moins les méthodes suivantes : getConnection, getResultSet. 3. dans un premier temps développer la page d’accueil du site qui affiche la liste des familles. 1 4. puis la page affichant la liste des produits d’une famille. 5. à une solution pour la gestion du caddie. Exemple d’une page JSP avec 3 interactions possibles avec le contrôleur (lien hypertexte, formulaire avec champ caché, lien hypertexte avec paramtre dans l’URL) <html> <body> ... <ul> <% out.println("<li> <a href=\"EssaiServlet?do_this=simple\">ici</a></li>"); %> </ul> <table> <form name="getLogin" action="EssaiServlet" method="POST"> <input type="hidden" name="do_this" value="checkLogin"/> <tr><td>login</td><td><input type="text" name="login"/></td></tr> <tr><td>password</td><td><input type="password" name="password"/><br/></td></tr> <tr><td></td><td><input type="submit" name="Validate" value="Validate"/></td></tr> </form> </table> ... <a href="EssaiServlet?do_this=param&value=1">en cliquant ici</a> Exemple d’un servlet: import import import import import import import javax.servlet.RequestDispatcher; javax.servlet.ServletConfig; javax.servlet.ServletContext; javax.servlet.ServletException; javax.servlet.http.HttpServletRequest; javax.servlet.http.HttpServletResponse; javax.servlet.http.HttpSession; public class EssaiServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { public void init(ServletConfig config) throws ServletException { System.out.println("*** initializing controller servlet."); super.init(config); } public EssaiServlet() { super(); } 2 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { DBManager dbManager = new DBManager(); HttpSession session = request.getSession(true); String do_this = request.getParameter("do_this"); if(do_this.equals("simple")) { ... // definir une variable de session session.setAttribute("user", user); // definir le contexte pour une redirection sur la page index.jsp ServletContext sc = getServletContext(); RequestDispatcher rd = sc.getRequestDispatcher("/index.jsp"); rd.forward(request, response); } else if(do_this.equals("checkLogin")) { ... } else if(do_this.equals("param")) { // recuperation de la valeur du parametre value String cip = (String) request.getParameter("value"); } } } 3