Vous êtes sur la page 1sur 3

Filière : SMI&LP2I

Module : Java 2
Durée Epreuve: 2H00mn
Responsable : K. AFDEL
Note! Strictement Interdit d'utiliser les documents.

PROBLEME
Un opérateur Télécom propose à ses clients deux types Abonnement : Abonnement GSM et
Abonnement Fixe. Chaque abonnement reçoit mensuellement de factures à régler. L’application doit être
développée en respectant la séparation des couches présentation, métier et de stockage des données.
• La couche présentation est une application web basée sur les servlets et JSP en respectant
l’architecture MVC.
• La couche métier sera développée en utilisant des java-beans constitué par une classe POJO.
• La couche de données est représentée par une base de données relationnelle.
Dans la partie I, nous allons ignorer la connexion à la base des données et de s'occuper uniquement de la
gestion des Clients. Un Client de Télécom est caractérisé par les attributs suivants : son Nom, son Matricule,
E-mail et le Type d'abonnement.
1- Donnez la signification du pattern MVC, Expliquez l'architecture MVC;
2- Ecrire un fichier JSP nommé "SaisieForm.jsp"présentant un formulaire de saisi des informations liées aux
Clients de Télécom.
3- Décrire, en quelques lignes, le cycle de vie d'une servlet. Ecrire le contrôleur représenté par une servlet
nommé " ClientServlete.java" permettant d'afficher dans le navigateur les données saisies par le
formulaire "SaisieForm.jsp"(en redéfinissant la méthode doPost())
4- On souhaite que les données saisies par la servlet soient transmises au modèle représenté par une classe
nommée "ClientServices.java" et un javaBean "Client.java". Le javaBean est une classe représentant les
attributs du Client de Télécom décrit ci-dessus. Le constructeur avce argument permettant de initier les
attributs aux valeurs suivantes : (Anas, ali, "C1258", "anas@gmail.com", "GSM") alors que la classe
ClientServices.java propose des services sous forme des méthodes agissant sur l'objet Client créé à partir de
la classe Client.java. Parmi ces méthodes, on peut penser tout simplement à la méthode "Client
getClientInfos(String Matricule)" permettant d'afficher les informations du Client de Télécom à partir de
son matricule. Cette méthode retourne au contrôleur ClientServlet.java un objet Client ayant le matricule
spécifié
A. Ecrire le javabean représentant le Client;
B. Ecrire la classe ClientService.java. Cette dernière contient comme attribut un conteneur HashMap
permettant d'associer le matricule (clé) au nom (valeur) de l'employé. Le constructeur de la classe
permettant d'initier, par le constructeur sans argument, le conteneur clients aux données suivantes
: ("id_1258","ANAS"), ("id_TAHA1258","TAHA") et ("id_MOU13654","MOUSSA")
Note !!! En utilisant les méthode get() et put () pour saisir et lires les données dans un contenur
HashMap.
- Ecrire le code de la méthode Client getClientInfos(String Matricule).
5- Reprendre la servlet ClientServlete de la question 3.Nous allons la modifier de manière à créer un objet
Client ayant pour matricule la valeur "id_1258" en faisant appel à la méthode Client getClientInfos(String
Matricule). Le matricule est celui saisi à partir du jsp de présentation "SaisieForm.jsp". l'objet ainsi
retourné par la méthode getClientInfos sera transmis au jsp "ClientInfos.jsp". Pour cela, il faut utiliser la
méthode setAttribute() sur Request ou Session et un dispatcher :
RequestDispatcher dispatcher= req.getRequestDispatcher("ClientInfos.jsp");
dispatcher.forward(req, res);
A. Quelle la différence entre une Request et une Session?
B. A quoi sert un dispatcher ?
C. Réécrire la servlet "ClientServlete.java" en prenant en compte ces modifications
6- Ecrire le code de la vue "ClientInfos.jsp" permettant d'afficher l'objet transmis par le contrôleur
ClientServlete au JSP "ClientInfos.jsp".
7- Soit le fichier déploiement suivant :
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-
app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name> . . . </display-name>
<servlet>
<servlet-name> . . . </servlet-name>
<servlet-class>. . . </servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>. . . </servlet-name>
<url-pattern. . . . </url-pattern>
</servlet-mapping>
</web-app>
Modifier le fichier déploiement web.xml pour qu'on accède à la page "SaisieForm.jsp" à l'aide d'un
navigateur web après avoir lancé le Serveur Web Tomcat à l'aide d'une URL de la forme
http://localhost:8080/Prj_MVC/ SaisieForm, sachant que "Prj_MVC" est le répertoire projet Eclipse et il est
aussi le context root du projet. Que doit-on faire pour Accéder au formulaire de saisie à l'aide de l'URL
http://localhost:8080/Prj_MVC/index.jsp ?puis à l'aide de l'URL http://localhost:8080/ Prj_MVC/ ?

On souhaite ajouter une couche DAO (DataAcessObject ) pour découpler la couche métier de la couche de
stockage. La couche DAO sera présentée par une interface suivant:

import java.util.List;
public interface ClientDao {
public List< Client > getAllClients();
public Client getClient (string matricule);
public void updateClient (Client c);
public void deleteClient (Client c);
}
Avec List<Client> clients; // liste des clients de Telecom
8- Proposez une classe implémentant les méthodes de cette interface :
- La méthode public List< Client > getAllClients(); permet de retourner l'objet "clients" constitué par
la liste remplie des clients de Telecom
- La méthode public Client getClient (string matricule); permet d'obtenir le client de liste "clients"
ayant le matricule donné
- La méthode public void updateClient (Client c); permet la mise à jours des données du client c de la
liste "clients"
- La méthode public void deleteClient( Client c) ; permet de supprimer le client c de liste "clients"

9- On souhaite sauvegarder les données saisies par SaisieForm.jsp dans une base de données Mysql; Ecrire le
code de connexion de la base de données (appelé ClientDB ) dans la méthode doGet() de la servlet
ClientServlet.java

Vous aimerez peut-être aussi