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