Vous êtes sur la page 1sur 7

SERVLET

ET BASE DE DONNES MYSQL (MARIA DB)


4ime anne - Cours Java EE M .Messan


Ralisation dune mini application CRUD de gestion dutilisateurs

Lacronyme anglais CRUD (Create Read Update Delete) consiste en la ralisation dun projet
mettant en relief les quatre actions principales quon peut effectuer au sein dune base de
donnes.

On suppose quun utilisateur est caractris par les paramtres suivants :
- Son CIN
- Son Nom
- Son prnom
- Son Tlphone
- Son Email
- Son mot de passe
Dans un premier temps nous allons crer une base de donnes en MySQL
nomme :Gestionutilisateur
On suppose que cette base de donnes est utilis par un utilisateur ayant les coordonns
suivants :
Pseudo : admin_user
Mot de passe :Admin123

Nous utiliserons ici la mthode de programmation MVC (Modle vue Contrleur) qui permet
de subdiviser notre projet en trois couches.

La couche Modle qui gre laccs la base donnes.
La couche Vue qui soccupe de laffichage
La couche Controleur qui gre toutes les actions ou requtes lances par lutilisateur.

Dans notre projet nous allons crer diffrents packages qui vont reprsenter chaque
couche du modle MVC.
Premier package crer : net.epsiel.model
Dans le package model nous allons donc crer 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 ;
}

}

Deuxime package : net.epsiel.connection
Ce package contiendra la classe qui va assurer la connexion la base de donnes (Mysql
dans notre cas).Il est noter que le langage Java dispose dun API (JDBC) de connexion aux
diffrents systmes de gestion de base de donnes qui existent sur le march.
Pour tablir la connexion une base de donnes lAPI a donc besoin dun pilote de la base de
donnes.
Dans notre cas nous avons donc besoin de tlcharger le pilote Mysql Database Connector
qui est un fichier jar que nous devons ajouter dans les bibliothques de notre projet.

Nous allons donc crer 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 donnes 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 donnes.

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;

public class DbConnection {


//Cration de lobjet de connection

private static Connection connection = null;
//Mthode de connection
public static Connection getConnection() {
if (connection != null)
return connection;
else {
try {
Properties prop = new Properties();
//Rcupration des paramtres 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 donnes Mysql
Class.forName(driver);
//Instanciation de la mthode 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;
}

}
}


Cration du package net.epsiel.dao

DAO signifie en anglais Data Access Object. Nous allons donc crer ici la classe qui se chargera
deffectuer les diffrentes actions au niveau de la base de donnes

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;

import net.epsiel.model.Utilisateur;
import net.epsiel.connection.DBConnection;

public class UtilisateurDao {

private Connection connection;

public UtilisateurDao() {
//Rcupration dun 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 paramtres dbutent avec le numro 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 paramtres dbutent avec lindice 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());




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();


}


return u;
}
}


Cration du package net.epsiel.controller

A lintrieur de ce package se trouve le controleur(servlet) qui soccupera de la gestion de
toutes les actions au sein de lapplication.

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);

} 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);
}
}