Le Lean sur une ligne de production : Formation et mise en application directe
Rapport tp3 j2ee
1. TROISIEME RAPPORT EN JAVA EE
Collaboration de Servlets
Partage d’information
Partage de contrôle
Travaux Pratique
Encadré Par :
M Mohamed NAYA
Préparé par
Soukaina NAJIHI
Soukaina BOUJADI
ratique
:
2. 2 TROISIEME RAPPORT EN JAVA EE
Sommaire :
Remerciements..………………………………………………………..….……3
Objectifs...…….…………………………………………………………..…..…4
Collaboration des servlets ……………………….………………………..…...5
Partage d’information…………………………….…………………….......….5
Principe ……………………………………………………….………..…5
Démarche à suivre………………………………………….…………..…6
Exemple………………………………………………………………..….7
Partage de contrôle………………………………………………………..........10
Principe ………………………………………………………………....10
Exemple…………………………………………..……………….......…11
Travaux Pratique ……………………………...………………………………..12
Enoncé …………………………………………………………….…....12
Solution ………………………………………………………………....12
Récapitulations …………………………………………………….…...……14
3. 3 TROISIEME RAPPORT EN JAVA EE
Remerciement
Au terme de ce travail, Nous tenons à remercier notre
Cher professeur Monsieur Mohamed NAYA , pour
ses précieuses directives et son suivi continu et pour tous les
efforts qu'il a fournis en classe et qui ont porté leur fruits, et
surtout pour son soutien continue et inconditionnel.
Du fond du coeur, merci
4. 4 TROISIEME RAPPORT EN JAVA EE
Objectifs
Des servlets qui s'exécutent dans le même serveur peuvent
communiquer les unes avec les autres
Elles peuvent partager de l'information :
– un état (état des ventes, des achats, des clients, ...)
– une ressource (connexion BD, un fichier statique, ...)
Elles peuvent partager le contrôle d'une même requête :
– la requête reçue par une servlet peut être traitée en partie par une
autre servlet
5. 5 TROISIEME RAPPORT EN JAVA EE
Les servlets qui s’exécutent dans le même serveur ont plusieurs
moyens de communiquer les unes avec les autres. Il existe deux principaux
styles de collaboration entre les servlets :
1-Partage d’informations :
Cela implique deux servlets ou plus partageant un état ou une ressource. Par
exemple, un ensemble de servlets gérant un magasin en ligne pourrait
partager les informations sur le stock des produits ou une connexion à la base
de données. Le suivi de session est un cas spécial de partage d’informations.
A toute application web est associé un contexte auquel les servlets ont
accès
Un contexte d'application web est représenté par une instance de la
classe.
ServletContext ()
Les servlets accèdent au contexte courant par la méthode
getServletContext()
ServletContext context = getServletContext();
Les éléments du contexte se présentent comme des couples(nom,objet )
Chaque application web possède son propre contexte
Pour partager des informations avec une autre application web (située
sur le même serveur), il faut accéder à un autre contexte
6. 6 TROISIEME RAPPORT EN JAVA EE
Les accesseurs aux éléments du contexte sont :
void setAttribute(String name, Object
sous le nom
Object getAttribute(String name) : retrouve l’objet sous le
nom indiqué.
indiqué
Enumeration getAttributeNames() : retourne l’ensemble
des noms de tous les attributs liés
void removeAttribute(String name) : supprime
sous le nom indiqué
Démarche à suivre
o) : lie un objet
indiqué .
liés.
l’objet lié
.
// accès au contexte courant
ServletContext contexteCourant = getServletContext();
// accès à un autre contexte
ServletContext contexteExterieur =
getServletContext("/autreAppli/index.jsp");
// récupération d’un attribut externe
String qte = contexteExterieur.getAttribute("quantite");
7. 7 TROISIEME RAPPORT EN JAVA EE
Exemple
2 servlets partagent une même information : un vecteur contenant
le nom de personnes.
Cette information est enregistrée sous la forme d’un attribut dans
le contexte de l’application.
La servlet Inscription enregistre des participants à une réunion
Un autre servlet Invites accède à la composition de la réunion et
affiche la liste des inscrits.
public class Inscription extends HttpServlet {
private String nom;
private Vector invites = new Vector();
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException {
res.setContentType( "text/html" );
PrintWriter out = res.getWriter();
ServletContext contexte = getServletContext();
out.println("<FORM ACTION='/reunion/Inscription'
METHOD='get'>");
out.println("<INPUT NAME='nom' TYPE='text'/>");
out.println("<INPUT TYPE='submit' VALUE='nouvel
inscrit'/>" );
out.println("</FORM>");
invites.add(req.getParameter("nom"));
contexte.setAttribute("invites",invites);
}
}
8. 8 TROISIEME RAPPORT EN JAVA EE
public class Invites extends HttpServlet {
public void doGet( HttpServletRequest req, HttpServletResponse res )
throws IOException, ServletException {
res.setContentType( "text/plain" );
PrintWriter out = res.getWriter();
ServletContext contexte = getServletContext();
Vector invites = (Vector)contexte.getAttribute( "invites" );
Enumeration e = invites.elements();
out.println( "liste des inscrits : " );
while ( e.hasMoreElements() )
out.println( e.nextElement() );
}
}
9. 9 TROISIEME RAPPORT EN JAVA EE
Fichier web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app SYSTEM "http://java.sun.com/dtd/web-app_
2_3.dtd">
<web-app>
<servlet><servlet-name>Inscription</servlet-name>
<servlet-class>reunion.Inscription</servlet-class>
</servlet>
<servlet><servlet-name>Invites</servlet-name>
<servlet-class>reunion.Invites</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Inscription</servlet-name>
<url-pattern>/Inscription</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Invites</servlet-name>
<url-pattern>/Invites</url-pattern>
</servlet-mapping>
</web-app>
10. 10 TROISIEME RAPPORT EN JAVA EE
Servlet Inscription
ervlet Servlet ervlet Invites
2-Partage du contrôle
Cela implique deux servlets ou plus partageant le contrôle d’une requête.
Par exemple, une servlet peut recevoir la requête et laisser à l’autre servlet
une partie ou toute la responsabilité du traitement de la requête.
Une Servlet peut laisser à une autre Servlet de la même application tout
ou partie du traitement. Utilisé souvent
avec une servlet contrôleur et des servlets spécialisées.
pour structurer une application
Plus précisément une Servlet peut déléguer une requête entière ou
inclure la réponse d’un autre programme.
Pour déléguer une requête, il faut obtenir un objet
Request
RequestDispatcher.
On peut ensuite ‘forwarder’ la requête vers une autre servlet (ou le plus
souvent vers une page JSP). Le contrôle ne revien
revient t plus à la servlet
d’origine. Des données peuvent être passées par l’URL ou par le
ServletContext.
11. 11 TROISIEME RAPPORT EN JAVA EE
Exemple
La méthode include()
ressource dans la réponse courante.
RequestDispatcher dispat = req.
dispat.include(req,res);
La différence avec un
de RequestDispatcher inclut le contenu d’une
– la Servlet appelante garde le contrôle de la réponse,
– elle peut inclure du contenu avant et après le contenu inclus.
Il y a également possibilité de transmettre des informations lors de
l’inclusion
– dans l’URL,
– par setAttribute().
getRequestDispatcher("/index.html")
;
forward() est :
html");
12. 12 TROISIEME RAPPORT EN JAVA EE
Le partage du
pas le transfert d’attributs objet autres que des chaînes de
caractères . Il faut alors utiliser un objet RequestDispatcher et
l’objet implicite
3-TP :
Enoncé :
contrôle par des balises actions ne permettent
Request.
Servlets qui définis la date d'annivesaire d
dans ce jours .
finis d'aujourd'hui et précise qui le fête
'aujourd'hui Solution :
Création de deux attributs : nom et date
14. 14 TROISIEME RAPPORT EN JAVA EE
IL existe deux cadres de collaboration inter-servlets.
Le premier permet le partage de ressources communes (Des
valeurs) .
Le deuxième le partage de contrôle.
Dans le premier cas c'est en récupérant le contexte d'exécution de la
servlet et en créant un nouvel attribut que l'on rend disponible une
ressource pour les autres servlets. Il est possible de collaborer avec
une servlet d'un autre contexte.
Dans le deuxième cas une première servlet effectuera une tâche et la
deuxième, si besoin est en effectuera une autre. La première servlet
passe le relais à l'autre en lui communiquant des informations.