Académique Documents
Professionnel Documents
Culture Documents
TP-MVC-Gestion-factures PDF
TP-MVC-Gestion-factures PDF
M.Youssfi
Premire partie :
1- Crer la base de donnes et saisir quelques exemples de clients.
2- Crer le modle (Couche mtier) savoir :
a. Client.java : classe persistante reprsente par un java bean.
b. Utilitaire.java : classe qui retourne un singleton Connection, en utilisant la
mthode statique getConnection() ;
c. Operateur.java : Classe non persistante qui contient une mthode qui permet
de retourner un vecteur de client sachant un mot cl.
d. Tester votre modle en utilisant une simple application.
3- Crer la couche prsentation en utilisant une seule page JSP : Clients1.jsp.
4- Crer une deuxime version de la couche prsentation en respectant le modle MVC.
M.Youssfi
2- Modle
a- Client.java
package mod.fact;
public class Client {
private int idClient;
private String nom;
private String email;
private String tel;
private String ville;
public String getEmail() { return email;
this.nom = nom; }
return tel;}
this.tel = tel; }
M.Youssfi
b- Utilitaire.java
package mod.fact;
import java.sql.*;
public class Utilitaire {
private static Connection conn;
static{
try {
// Pour JDBC ODBC
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn=DriverManager.getConnection("jdbc:odbc:dsnFact","","");
// pour Mysql Driver :
//Class.forName("com.mysql.jdbc.Driver");
//conn=DriverManager.getConnection
//
("jdbc:mysql://localhost:3306/NOM_BASE", "root", "" );
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static Connection getConnection(){ return conn; }
}
c- Operateur.java
package mod.fact;
import java.sql.*;
import java.util.*;
public class Operateur {
public Vector chercheClientsParMotCles(String motCle){
Vector lesClients=new Vector();
Connection conn=Utilitaire.getConnection();
try {
PreparedStatement ps=conn.prepareStatement("select * from
CLIENTS where NOM LIKE ?");
ps.setString(1,"%"+motCle+"%");
ResultSet rs=ps.executeQuery();
while(rs.next()){
Client c=new Client();
c.setIdClient(rs.getInt("ID_CLIENT"));
c.setNom(rs.getString("NOM"));
c.setEmail(rs.getString("EMAIL"));
c.setTel(rs.getString("TEL"));
c.setVille(rs.getString("VILLE"));
lesClients.add(c);
}
rs.close();
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
return lesClients;
}
}
M.Youssfi
3- Couche prsentation
Clients1.jsp
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<%@ page import="mod.fact.*" %>
<%
String mot=request.getParameter("motCle");
if(mot==null) mot="";
Operateur op=new Operateur();
Iterator itCli=op.chercheClientsParMotCles(mot).iterator();
%>
<html>
<head>
<title>Clients</title>
</head>
<body bgcolor="#FFFFFF">
<center>
<form method="post" action="Clients1.jsp">
Client:<input type="text" name="motCle" value="<%=mot%>">
<input name="chercher" type="submit" id="chercher"
value="Chercher">
</form>
M.Youssfi
Serveur
Client
Navigateur :
Aperu de la
vue
Rep
Vue
JSP
JDBC
3
Req1
SGBD
Form
Bean
Modle
Java beans
ou EJB
Contrleur
Une servlet
M.Youssfi
Reviennent notre problme notre page JSP sera divise en trois parties :
package form.beans;
import java.util.Vector;
public class ClientForm {
private String motCle="";
private Vector lesClients=new Vector();
public Vector getLesClients() {
return lesClients;
}
public void setLesClients(Vector lesClients) {
this.lesClients = lesClients;
}
public String getMotCle() {
return motCle;
}
public void setMotCle(String motCle) {
this.motCle = motCle;
}
}
b- Contrleur : ControleurServlet.java
import java.io.IOException;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import form.beans.ClientForm;
import mod.fact.Operateur;
public class ControleurServlet extends HttpServlet {
public void dopost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
M.Youssfi
d- La vue : Clients2.jsp
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<%@ page import="mod.fact.*" %>
<%@ page import="form.beans.*" %>
<%
ClientForm cf=(ClientForm)session.getAttribute("cf");
if(cf==null) cf=new ClientForm();
Iterator itCli=cf.getLesClients().iterator();
%>
<html>
<head>
<title>Clients</title>
</head>
M.Youssfi
<body bgcolor="#FFFFFF">
<center>
<form method="post" action="clients">
Client:<input type="text" name="motCle"
value="<%=cf.getMotCle()%>">
<input name="chercher" type="submit" id="chercher"
value="Chercher">
</form>
M.Youssfi
Deuxime Partie
Un abonnement est dfini par :
- Le numro dabonnement
- Le nom de labonnement
- Date dabonnement
- Le solde de labonnement qui reprsente le montant qui reste consommer de cet
abonnement.
- Le propritaire de cet abonnement reprsent par un attribut de type Client.
Un abonnement GSM est un abonnement qui contient en plus
- Le nombre de points fidlo qui reprsente des points obtenus en fonction du
montant consomm.
Un abonnement FIXE est abonnement qui est caractris par
Un dbit
Une facture est caractrise par :
Le numro de facture
Date facture
Montant de facture
Une proprit qui indique si la facture est rgle ou non
Travail demand :
1. Etablir un diagramme de classe complet
2. Crer la base de donnes correspondante ce diagramme de classes
3. Complter la couche mtier :
a. Crer les classes Facture, Abonnement, AbFixe et AbGSM
b. Ajouter la classe Operateur les mthodes suivantes :
i. Une mthode qui permet retourner un objet de type Abonnement
sachant son numro, en chargeant dans cet objet Abonnement son
propritaire ainsi que toutes les factures.
ii. Une mthode qui permet dajouter un nouveau client.
iii. Une mthode qui permet de rgler une facture sachant son numro.
c. Tester nouveau le modle
4. Crer une application web en utilisant STRUTS qui permet lutilisateur de :
a. Saisir le numro dabonnement dans un formulaire
b. En validant, afficher, dans la mme page,
i. Les caractristiques de cet abonnement
ii. Le nom du propritaire de cet abonnement
iii. La liste des factures de cet abonnement, en affichant une case cocher
qui devrait permettre de rgler une facture.