servlet et mysql

7
SERVLET ET BASE DE DONNES MYSQL (MARIA DB) 4 ième année Cours Java EE – M .Messan Réalisation d’une mini application CRUD de gestion d’utilisateurs L’acronyme anglais CRUD (Create Read Update Delete) consiste en la réalisation d’un projet mettant en relief les quatre actions principales qu’on peut effectuer au sein d’une base de données. On suppose qu’un utilisateur est caractérisé par les paramètres suivants : Son CIN Son Nom Son prénom Son Téléphone Son Email Son mot de passe Dans un premier temps nous allons créer une base de données en MySQL nommée :Gestionutilisateur On suppose que cette base de données est utilisé par un utilisateur ayant les coordonnés suivants : Pseudo : admin_user Mot de passe :Admin123 Nous utiliserons ici la méthode de programmation MVC (Modèle vue Contrôleur) qui permet de subdiviser notre projet en trois couches. La couche Modèle qui gère l’accès à la base données. La couche Vue qui s’occupe de l’affichage La couche Controleur qui gère toutes les actions ou requêtes lancées par l’utilisateur.

Upload: prince-ba

Post on 19-Dec-2015

227 views

Category:

Documents


5 download

DESCRIPTION

Servlet & Mysql

TRANSCRIPT

Page 1: Servlet Et Mysql

SERVLET  ET  BASE  DE  DONNES  MYSQL  (MARIA  DB)  4ième  année    -­‐  Cours  Java  EE  –  M  .Messan  

   

Réalisation  d’une  mini  application  CRUD  de  gestion  d’utilisateurs    

L’acronyme  anglais  CRUD  (Create  Read  Update  Delete)  consiste  en  la  réalisation  d’un  projet  mettant  en  relief  les  quatre  actions  principales  qu’on  peut  effectuer  au  sein  d’une  base  de  données.    On  suppose  qu’un  utilisateur  est  caractérisé  par  les  paramètres  suivants  :  

-­‐ Son  CIN  -­‐ Son  Nom  -­‐ Son  prénom  -­‐ Son  Téléphone  -­‐ Son  Email  -­‐ Son  mot  de  passe  

Dans    un  premier  temps    nous    allons    créer  une  base  de  données  en  MySQL  nommée  :Gestionutilisateur    On  suppose  que  cette  base  de  données  est    utilisé  par    un  utilisateur  ayant  les  coordonnés  suivants  :  Pseudo  :                      admin_user  Mot  de  passe  :Admin123      Nous  utiliserons    ici  la  méthode  de  programmation  MVC  (Modèle  vue  Contrôleur)  qui  permet  de  subdiviser  notre  projet  en  trois  couches.    La  couche    Modèle  qui  gère  l’accès  à  la  base  données.  La  couche    Vue  qui  s’occupe  de  l’affichage  La  couche    Controleur  qui  gère    toutes  les  actions  ou  requêtes  lancées  par  l’utilisateur.    

   

Page 2: Servlet Et Mysql

Dans    notre    projet  nous  allons  créer    différents  packages  qui  vont  représenter  chaque    couche  du  modèle  MVC.  Premier  package  à  créer  :  net.epsiel.model  Dans  le  package  model  nous  allons  donc  créer    la  classe  Utilisateur  .    public  class  Utilisateur{      private  String  Nom  ;  private  String  Prenom  ;  private  String  Telephone  ;  private  String  Email  ;  private  String  Password  ;    public  Utilisateur  (String  Nom,String  Prenom,String  Telephone,String  Email,String  Password){  this.Nom=Nom  ;  this.Prenom=Prenom  ;  this.Telephone=Telephone  ;  this.Email  =Email  ;  this.Password=Password  ;  }    }    Deuxième  package  :  net.epsiel.connection  Ce  package  contiendra     la  classe  qui  va  assurer     la  connexion  à   la  base  de  données  (Mysql  dans  notre  cas).Il  est  à  noter  que  le  langage  Java  dispose  d’un  API  (JDBC)  de  connexion  aux  différents  systèmes  de  gestion  de  base  de  données  qui  existent  sur  le  marché.  Pour  établir  la  connexion  à  une  base  de  données  l’API  a  donc  besoin  d’un  pilote  de  la  base  de  données.    Dans  notre  cas  nous  avons  donc  besoin  de  télécharger  le  pilote  Mysql  Database  Connector    qui  est    un  fichier  jar  que  nous  devons  ajouter  dans  les  bibliothèques  de  notre    projet.    Nous  allons  donc  créer  dans    le  package    net.epsiel.connection  la  classe  DBConnection  qui  va  assurer  la  connexion    à  la  base.Afin  de  rendre    le  travail  modulaire    nous  allons  stocker  les    informations   de   connexion   à   la   base   de   données   dans     un   fichier       que   nous   nommerons  db.properties  qui  contiendra  les  lignes  suivantes  :    

driver=com.mysql.jdbc.Driver  url=jdbc:mysql://localhost:3306/gestionutilisateur  user=admin_user  

                         password=  Admin12    

Classe  de    connection    à    la    base      de  données.    import  java.io.FileNotFoundException;  import  java.io.IOException;  import  java.io.InputStream;  import  java.sql.Connection;  import  java.sql.DriverManager;  import  java.sql.SQLException;  import  java.util.Properties;    

Page 3: Servlet Et Mysql

public  class  DbConnection  {  //Création  de  l’objet  de  connection     private  static  Connection  connection  =  null;  //Méthode  de  connection          public  static  Connection  getConnection()  {                  if  (connection  !=  null)                          return  connection;                  else  {                          try  {                            Properties  prop  =  new  Properties();  //Récupération  des  paramètres  de  connection                                  InputStream  inputStream  =  DbUtil.class.getClassLoader().getResourceAsStream("/db.properties");                                  prop.load(inputStream);                                  String  driver  =  prop.getProperty("driver");                                  String  url  =  prop.getProperty("url");                                  String  user  =  prop.getProperty("user");                                  String  password  =  prop.getProperty("password");  //Chargement  du  pilote  de  connection  à  la  base  de  données  Mysql                                  Class.forName(driver);  //Instanciation  de  la  méthode  de  connection                                  connection  =  DriverManager.getConnection(url,  user,  password);                          }  catch  (ClassNotFoundException  e)  {                                  e.printStackTrace();                          }  catch  (SQLException  e)  {                                  e.printStackTrace();                          }  catch  (FileNotFoundException  e)  {                                  e.printStackTrace();                          }  catch  (IOException  e)  {                                  e.printStackTrace();                          }                          return  connection;                  }            }  }      

Création  du  package  net.epsiel.dao    DAO  signifie  en  anglais  Data  Access  Object.  Nous  allons  donc  créer    ici  la  classe  qui  se  chargera  d’effectuer  les  différentes  actions  au  niveau  de  la  base  de  données    La  classe  UtilisateurDao    import  java.sql.Connection;  import  java.sql.PreparedStatement;  import  java.sql.ResultSet;  import  java.sql.SQLException;  import  java.sql.Statement;  import  java.util.ArrayList;  import  java.util.List;  

Page 4: Servlet Et Mysql

import  net.epsiel.model.Utilisateur;  import  net.epsiel.connection.DBConnection;    public  class  UtilisateurDao  {       private  Connection  connection;       public  UtilisateurDao()  {  //Récupération  d’un  objet  de  type  connection       connection  =  DbConnection.getConnection();     }       public  void  ajoutUtilisateur(Utilisateur  u)  {       try  {  PreparedStatement  preparedStatement  =  connection.prepareStatement("insert  into  utilisateur(Cin,Nom,Prenom,Telephone,Email,Password)  values  (?,  ?,  ?,  ?,  ?,  ?  )");         //  Les  paramètres  débutent  avec  le  numéro  1         preparedStatement.setString(1,  u.getCin());         preparedStatement.setString(2,  u.getNom());         preparedStatement.setString(3,u.getTelephone());         preparedStatement.setString(4,  u.getEmail());                                                              preparedStatement.setString(5,  u.getPassword());         preparedStatement.executeUpdate();         }  catch  (SQLException  e)  {         e.printStackTrace();       }     }         public  void  supprimerUtilisateur(int  id)  {       try  {         PreparedStatement  preparedStatement  =  connection             .prepareStatement("delete  from  utilisateur  where  Id=?");         //  Les  paramètres  débutent  avec  l’indice  1         preparedStatement.setInt(1,  id);         preparedStatement.executeUpdate();         }  catch  (SQLException  e)  {         e.printStackTrace();       }     }         public  void  modifierUtilisateur(Utilisateur  u)  {       try  {         PreparedStatement  preparedStatement  =  connection             .prepareStatement("update  utilisateur  set  Nom=?,  Prenom=?,  Email=?,  Password=?"  +"where  Id=?");         //  Parameters  start  with  1         preparedStatement.setString(1,  u.getNom());         preparedStatement.setString(2,  u.getPrenom());         preparedStatement.setString(3,u.getEmail());         preparedStatement.setString(4,  u.getPassword());  

Page 5: Servlet Et Mysql

        preparedStatement.setInt(5,  user.getId());         preparedStatement.executeUpdate();         }  catch  (SQLException  e)  {         e.printStackTrace();       }     }       public  List<User>  listeUtilisateurs()  {       List<Utilisateur>  liste  =  new  ArrayList<Utilisateur>();       try  {         Statement  statement  =  connection.createStatement();         ResultSet  rs  =  statement.executeQuery("select  *  from  utilisateur");         while  (rs.next())  {           Utilisateur  u  =  new  Utilisateur  ();           u.setId(rs.getInt("Id"));                                                                                        u.setCin(rs.getString("  Cin"));                                                                                  u.setNom(rs.getString("  Nom"));           u.setPrenom(rs.getString("  Preom"));                                                                                        u.setTelephone(rs.getString("  Telephone"));                                                                                  u.setEmail(rs.getString("  Email"));                                                                                        u.setPassword(rs.getString("  Password"));                                                                                  liste.add(utilisateur);         }       }  catch  (SQLException  e)  {         e.printStackTrace();       }         return  liste;     }         public  Utilisateur  getUtilisateurById(int  Id)  {       Utilisateur  u  =  new  Utilisateur();       try  {         PreparedStatement  preparedStatement  =  connection.             prepareStatement("select  *  from  utilisateur  where  Id=?");         preparedStatement.setInt(1,  Id);         ResultSet  rs  =  preparedStatement.executeQuery();                 if  (rs.next())  {           u.setId(rs.getInt("Id"));           u.setNom(rs.getString("Nom"));                                                                                        u.setPrenom(rs.getString("Prenom"));                                                                                                    u.setCin(rs.getString("Cin"));                                                                                                  u.setTelephone(rs.getString("Telephone"));                                                                                                                      u.setEmail(rs.getString("Email"));                                                                                              u.setPassword(rs.getString("Password"));                                                                         }       }  catch  (SQLException  e)  {         e.printStackTrace();  

Page 6: Servlet Et Mysql

    }         return  u;     }  }      Création  du  package  net.epsiel.controller    A  l’intérieur  de  ce  package  se  trouve  le  controleur(servlet)  qui  s’occupera  de  la  gestion  de  toutes  les  actions  au  sein  de  l’application.    import  java.io.IOException;  import  java.text.ParseException;  import  java.text.SimpleDateFormat;  import  java.util.Date;    import  javax.servlet.RequestDispatcher;  import  javax.servlet.ServletException;  import  javax.servlet.http.HttpServlet;  import  javax.servlet.http.HttpServletRequest;  import  javax.servlet.http.HttpServletResponse;    import  net.epsiel.dao.UtilisateurDao;  import  net.epsiel.model.Utilisateur;    public  class  Controleur_Utilisateur  extends  HttpServlet  {          private  static  final  long  serialVersionUID  =  1L;          private  static  String  AJOUT_MODIFICATION  =  "/utilisateur.jsp";          private  static  String  LISTE  =  "/liste_utilisateurs.jsp";          private  UtilisateurDao  dao;            public  Controleur_Utilisateur  ()  {                  super();                  dao  =  new  UtilisateurDao();          }            protected  void  doGet(HttpServletRequest  request,  HttpServletResponse  response)  throws  ServletException,  IOException  {                  String  forward="";                  String  action  =  request.getParameter("action");                    if  (action.equalsIgnoreCase("delete")){                          int  Id  =  Integer.parseInt(request.getParameter("Id"));                          dao.Utilisateur(int  id);                          forward  =  LISTE;                          request.setAttribute("utilisateurs",  dao.  listeUtilisateurs());                          }  else  if  (action.equalsIgnoreCase("edit")){                          forward  =  AJOUT_MODIFICATION;                          int  Id  =  Integer.parseInt(request.getParameter("Id"));                          Utilisateur  u  =  dao.getUtilisateurById  (Id);                          request.setAttribute("utilisateur",  u);  

Page 7: Servlet Et Mysql

               }  else  if  (action.equalsIgnoreCase("liste")){                          forward  =  LISTE;                          request.setAttribute("liste_utilisateurs",  dao.listeUtilisateurs())  ;                  }  else  {                          forward  =  AJOUT_MODIFICATION;                  }                    RequestDispatcher  view  =  request.getRequestDispatcher(forward);                  view.forward(request,  response);          }            protected  void  doPost(HttpServletRequest  request,  HttpServletResponse  response)  throws  ServletException,  IOException  {                  Utilisateur  u  =  new  Utilisateur();  u.setNom(request.getParameter("nom"))  ;  u.setPrenom(request.getParameter("prenom"))  ;  u.setTelephone(request.getParameter("telephone"))  ;  u.setEmail(request.getParameter("email"))  ;  u.setPassword(request.getParameter("password"))  ;                      String  id  =  request.getParameter("id");                  if(id  ==  null  ||  id.isEmpty())                  {                          dao.ajoutUtilisateur  (u);                  }                  else                  {                          u.setId(Integer.parseInt(id));                          dao.  modifierUtilisateur  (u);                  }                  RequestDispatcher  view  =  request.getRequestDispatcher(LISTE);                  request.setAttribute("liste_utilisateurs",  dao.listeUtilisateurs())  ;                      view.forward(request,  response);          }  }