Examen2021MVC Rattrapge Afdel Solution
Examen2021MVC Rattrapge Afdel Solution
Examen2021MVC Rattrapge Afdel Solution
: SMI&LP2I
Module : Java 2
Durée Epreuve: 1h30mn
Responsable : K.AFDEL
NOTE!!!: STRICTEMENT INTERDIT D'UTILISER LE DOCUMENTS.
PROBLÈME
On souhaite développer une application respectant le pattern MVC. Cette application doit être extensible et réutilisable. Un
produit est caractérisé par les attributs suivants : son ref(String), son Description(String), son Prix (float) et sa Etat
(boolean).
Figure1
Figure 2
1- Donnez la signification du pattern MVC, Expliquez l'architecture MVC;
2- Ecrire un fichier JSP nommé "SaisieProduit.jsp"présentant un formulaire de saisi des informations liées aux Produits
3- Écrire le contrôleur représenté par une servlet nommé "ProduitServlete.java" permettant d'afficher dans le navigateur
les données saisies par le formulaire "SaisieProduit.jsp"(en redéfinissant la méthode DoPost())
On souhaite que les données saisie par la servlet soient transmises au modèle représenté par une classe java Bean
nommée "ProduitBeanModel.java". Le javaBeanModel est une classe représentant les attributs de Produit décrit ci-
dessus. Le constructeur avec argument permettant de initier les attributs aux valeurs suivantes : (PC", "PC Portable",
8000,12587) les accesseur et les mutateurs.
4- Écrire le fichier testeBean.jsp permettant d'accéder à la propriété de la composantes JavaBean
"ProduitBeanModel.java" (utilisez <jsp:useBean...>, <jsp:getProperty> et <jsp:setProperty>)
5- Écrire une classe TesteProduitCollection.java permettant d'enregistre et l'affichage des objets suivants :
Produit1: ("PC", "PC Portable", 8000, 12587)
Produit2 : ("CLAVIER", "PC Portable", 200,17894)
Produit3 : ("SOURIS", "PC Portable", 80,13697)
Produit4 : ("USB", "PC Portable", 30,5897)
dans la collection HashMap avec l'attribut référence comme clé de l'objet Produit. Affichez les objets de la collection
HasMap en utilisant à la fois les clés et les valeurs.
Note !!! En utilisant les méthode get() et put () pour saisir et lires les données dans un conteur HashMap.
6- Reprendre la servlet ProduitServlet de la question 3.Nous allons la modifier de manière à créer un objet Produit1 à le
transmettre au jsp "ProduitView.jsp". pour cela il faut utiliser la méthode setAttribute() sur request ou une sur une
Session et un dispatcher :
getServletContext().getRequestDispatcher("/ProduitView.jsp").forward(req, res);
A. Quelle la différence entre une request, une session et ServletContext?
B. A quoi sert un dispatcher ?
C. Réécrire la servlet "ProduitServlete.java" en prenant en compte ces modifications
7- Ecrire le code de la vue "ProduitView.jsp" permettant d'afficher l'objet transmis par le contrôleur
ProduitServlete au JSP "ProduitView.jsp".
8- Lors de développement d’une application, on utilise les interfaces graphiques. La figure2 montre une interface
graphique d’une application. Ce dernier est composé des composants graphiques suivantes : Label, TextFiled,
List, Checkbox,Button, TextArea. Ecrire le code source java réalisant l’interface de la figure 2.
Solution
Question 2:
Question n°3
A-
package com.fsa.model;
public class Medicament {
private static final long serialVersionUID = 1L;
public Medicament (long id_medica, String Labelle, double Prix) {
super();
this.id_medica= id_medica ;
this. Labelle= Labelle;
this.Prix= prix;
}
public Medicament () {
super();
this.id_medica= id_medica ;
this. Labelle= Labelle;
this.Prix= prix;
}
private long id_medica;
private String Labelle;
private double Prix;
B- ClamoxineObj.jsp
<html>
<title>Java bean example in jsp</title>
<head>
<h1>Java bean example in jsp</h1>
<hr></hr>
</head>
<body>
<jsp:useBean id="mybeanMedica" class=" com.fsa.model.Medicament" scope="session" >
<jsp:setProperty name=" mybeanMedica " property="id_medica" value=2 />
</jsp:useBean>
<jsp:setProperty name=" mybeanMedica " property="Labelle" value="Clamoxine" />
</jsp:useBean>
<jsp:setProperty name=" mybeanMedica " property="Labelle" value="Clamoxine" />
</jsp:useBean>
<jsp:setProperty name=" mybeanMedica " property="Prix" value=5.5 />
</jsp:useBean>
</body>
</html>
Question n°3
Q-3-A
package com.fsa.controller;
import com.fsa.model.*;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class MedicamentServlet
*/
@WebServlet({ "/MedicamentServlet", "/do" })
public class MedicamentServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public EmployeServlet() {
super();
// TODO Auto-generated constructor stub
}
id_medica =request.getParameter(id_medica);
Labelle=request.getParameter("Labelle");
Prix=request.getParameter(Prix);
out.println(
"<html"
"<BODY BGCOLOR=\"#FDF5E6\">\n" +
"<H1 ALIGN=CENTER>" + title + "</H1>\n" +
"<br> Id-ref-Medicament: "+ id_medica + "</br> \n"
"<br> Labelle : "+ Matricule + "</br> \n"
"<br> Prix: "+ Prix + "</br> \n"
"</BODY"
"</html>");
}}
Q-3-B
<?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>MVC_prj</display-name>
<servlet>
<servlet-name>MedicamentServlet</servlet-name>
<servlet-class>com.fsa.controller. MedicamentServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name> MedicamentServlet </servlet-name>
<url-pattern> Medicament </url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>saisiForm.jsp</welcome-file>
</welcome-file-list>
</web-app>
Question n°4
Q-4- A
package com.fsa.model;
import java.util.HashMap;
public class MedicamentService {
HashMap<long, Medicament> MedicaHashMap=new HashMap<long, Medicament>();
Question 5
long id_medica;
String Labelle;
double Prix; out = response.getWriter();
response.setContentType("text/html");
String title = "Pharmacie";
id_medica =request.getParameter(id_medica);
Labelle=request.getParameter("Labelle");
Prix=request.getParameter(Prix);
Question-6
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import="com.fsa.model.Medicament" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h2> Medicaments Information</h2>
<% Medicament Medicament1 = (Medicament)request.getAttribute("medica1"); %>
<table border="1">
<tr>
<td><%= Medicament1. getid_medica()%></td>
<td><%= Medicament1.getPrix()%></td>
<td><%= Medicament1.getLabelle()%></td>
</tr>
</table>
</body>
</html>
import java.awt.*;
import java.awt.event.*;
class Fenetre extends Frame implements ActionListener{
private Panel p1,p2,p3,p4;
private TextField tfNom,tfPrenom;
private Label lNom,lPrenom,lCouleur,lSave;
private List lsCouleur;
private TextArea taCouleur;
private Button btSubmit;
private Checkbox chMasc, chFimi;
private CheckboxGroup rgb;
public Fenetre(String s){
super(s);
addWindowListener(new clExit());
p1=new Panel(new FlowLayout(FlowLayout.CENTER));
p3=new Panel(new FlowLayout(FlowLayout.CENTER));
p4=new Panel(new FlowLayout(FlowLayout.CENTER));
p2=new Panel(new BorderLayout());
lNom=new Label("Nom: ");
tfNom=new TextField(16);
lPrenom=new Label("Prénom: ");
tfPrenom=new TextField(16);
lCouleur=new Label("Couleur");
lsCouleur=new List(4,false);
lsCouleur.addItem("Bleu");
lsCouleur.addItem("Rouge");
lsCouleur.addItem("Blanc");
lsCouleur.addItem("Vert");
lsCouleur.addItem("Noir");
lsCouleur.addItem("Bleu ciel");
taCouleur=new TextArea ("", 4, 30,TextArea.SCROLLBARS_BOTH);
btSubmit=new Button("Submit");
btSubmit.addActionListener(this);
lSave=new Label("Sexe");
rgb=new CheckboxGroup();
chMasc=new Checkbox("Masculin",rgb,true);
chFimi=new Checkbox("Féminin",rgb,false);
p1.add(lNom);
p1.add(tfNom);
p1.add(lPrenom);
p1.add(tfPrenom);
p3.add(lCouleur);
p3.add(lsCouleur);
p3.add(taCouleur);
p4.add(btSubmit);
p4.add(lSave);
p4.add(chMasc);
p4.add(chFimi);
p2.add(BorderLayout.NORTH,p1);
p2.add(BorderLayout.CENTER,p3);
p2.add(BorderLayout.SOUTH,p4);
p2.setBackground(Color.getHSBColor(116,153,180));
add(p2);
setSize(500,300);
setVisible(true);
}
public void actionPerformed(ActionEvent e){
if(e.getSource().equals(btSubmit)){
String s=new String();
s+=tfNom.getText()+"\n"+tfPrenom.getText()+"\n"+lsCouleur.getSelectedItem()+"\
n"+rgb.getSelectedCheckbox().getLabel();
taCouleur.setText(s);
tfNom.setText("");
tfPrenom.setText("");
}
}
public static void main(String[] arg){
Fenetre F=new Fenetre("Fenetre");
}
}
import java.awt.*;
import java.awt.event.*;