Vous êtes sur la page 1sur 8

FACULTE DES SCIENCES ECONOMIQUES 2019/2020

ET DE GESTION DE TUNIS
---------§§§§§---------
Correction Série 3
---------§§§§§---------
Exercice 0 : Servlet , JSP ,JSTL, MYSQL et MVC
Dans cet exercice , on souhaite de réaliser une application web JEE qui permet d’afficher les
Etudiants en saisissant le nom ou une partie du nom de l’étudiant. On souhaite de respecter le
MVC
La vue « EtudiantsVue.jsp » qu’on souhaite réaliser est la suivante

On proposera de créer une base de données nommée « db_gestion » et de créer la table


(Etudiant) en utilisant MySQL (Exemple WampServer) et de peupler la base par des instance
Le projet est composé par 3 couches (métier, web, vue)
La couche métier se compose de :
• La classe « Etudiant » est caractérisée par un Id de type Integer et nom et prénom de
type String , Getters et Setters de chaque propriété et un constructeur. On vous demande
de créer cette classe.
package metier;
public class Etudiant {
private int id;
private String nom;
private String prenom;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public String getPrenom() {
return prenom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}
public Etudiant(String nom, String prenom) {

this.nom = nom;
this.prenom = prenom;
}

• Une classe Connection qui contient une méthode getConnection qui retourne un objet
Connection unique vers la base de données, quel que soit le nombre de machines
connecté au serveur. On vous demande de créer cette classe.

package metier;
import java.sql.Connection;
import java.sql.DriverManager;
public class ConnectionDB {
private static Connection connection;
static {
try {
Class.forName("com.mysql.jdbc.Driver");
connection
=DriverManager.getConnection("jdbc:mysql://localhos
t:3306/db_gestion","root","");
}catch(Exception e) {
e.printStackTrace();
}

}
public static Connection getConnection() {
return connection;
}

• Une classe EtudiantImpl qui contient une méthode qui permet de retourner une Liste de
Etudiant sachant un mot clé. Cette classe peut implémenter l’interface « IEtudiant ». On
vous demande de développer cette classe et l’interface.
public interface IEtudiant {
public List <Etudiant> Chercher_Etudiant(String
mot);
}

package metier;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class EtudiantImpl implements IEtudiant {

@Override
public List<Etudiant> Chercher_Etudiant(String
nom) {

List <Etudiant> etud= new


ArrayList<Etudiant>();
Connection
conn=ConnectionDB.getConnection();
try {
PreparedStatement
ps=conn.prepareStatement(" select * from etudiant
where nom like ?");
ps.setString(1,"%"+nom+"%" );
ResultSet rs=ps.executeQuery();
while(rs.next()) {
Etudiant e= new Etudiant();
e.setId(rs.getInt("id"));
e.setNom(rs.getString("nom"));

e.setPrenom(rs.getString("prenom"));
etud.add(e);
}

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return etud;
}

• On vous demande de développer la classe Test

package metier;

import java.util.List;

public class Test {

public static void main(String[] args) {


// TODO Auto-generated method stub

EtudiantImpl e=new EtudiantImpl();


List<Etudiant>
etudiants=e.Chercher_Etudiant("h");
for(Etudiant ee:etudiants)
System.out.println(ee.getNom());
}

}
La couche web est définie par :
• Le modèle qui permet de stocker les données qu’on va saisir (nom) et le résultat à
afficher (List<Etudiant>). Le reste étant les Getters et Setters
On vous demande de développer cette classe.
package web;
import java.util.ArrayList;
import java.util.List;

import metier.Etudiant;

public class EtudiantModele {


private String mot;
private List<Etudiant> etudiants= new
ArrayList<>();
public String getMot() {
return mot;
}
public void setMot(String mot) {
this.mot = mot;
}
public List<Etudiant> getEtudiants() {
return etudiants;
}
public void setEtudiants(List<Etudiant>
etudiants) {
this.etudiants = etudiants;
}

}
• Le contrôleur qui est un servlet qui va se charger de:
o Créer un objet du modèle
o Stocker les données de la requête (nom) dans ce modèle
o Récupérer les résultats de la couche métier
o Stocker ces résultats dans le modèle
o Faire appel à la vue JSP.
On vous demande de développer le servlet
Partie web
package web;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import metier.Etudiant;
import metier.EtudiantImpl;
import metier.IEtudiant;
@WebServlet(name= "cs",urlPatterns={"*.php"})
public class ControleurServlet extends HttpServlet
{

private EtudiantImpl etudiantmetier;


public void init() throws ServletException {
etudiantmetier= new EtudiantImpl();

}
@Override
protected void doPost(HttpServletRequest
request, HttpServletResponse response) throws
ServletException, IOException {
String
nom_chercher=request.getParameter("nomchercher");
EtudiantModele e_modele = new
EtudiantModele();
e_modele.setMot(nom_chercher);
List <Etudiant>
etuds=etudiantmetier.Chercher_Etudiant(nom_chercher
);
e_modele.setEtudiants(etuds);
request.setAttribute("modele", e_modele);

request.getRequestDispatcher("EtudiantsVue.jsp"
).forward(request, response);
}

• La vue (EtudiantsVue.jsp ) qui va se charger de récupérer le modèle et d’afficher les


résultats. On vous demande de développer la page JSP

Partie Vue
<%@ page language="java" contentType="text/html;
charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib
uri="http://java.sun.com/jsp/jstl/core" prefix="c"
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="controleur.php" method ="post">
Chercher: <input type="text" name="nomchercher"
value="">
<input type="submit" value="ok">
</form>
<table border="2" width="50%">
<tr>
<th> ID </th> <th> Nom </th> <th> Prénom
</th>
</tr>
<c:forEach items="${modele.etudiants}" var="e">
<tr>
<td>${e.id}</td>
<td>${e.nom}</td>
<td>${e.prenom}</td>
</tr>

</c:forEach>
</table>
</body>
</html>

Vous aimerez peut-être aussi