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
RAPPORT EN JAVA EE
Collaboration de Servlets
Partage d’information
Partage de contrôle
ratique
Préparé par :
Soukaina NAJIHI
Soukaina BOUJADI
RAPPORT EN JAVA EE
TROISIEME RAPPORT EN JAVA EE 2
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
TROISIEME RAPPORT EN JAVA EE 3
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 cœur, merci
TROISIEME RAPPORT EN JAVA EE 4
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
TROISIEME RAPPORT EN JAVA EE 5
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
TROISIEME RAPPORT EN JAVA EE6
// 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");
Les accesseurs aux éléments du contexte sont :
void setAttribute(String name, Objectsous le nom
Object getAttribute(String name) : retrouve l’objet sous le nom 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
TROISIEME RAPPORT EN JAVA EE
// 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");
Les accesseurs aux éléments du contexte sont :
void setAttribute(String name, Object o) : lie un objet sous le nom indiqué . Object getAttribute(String name) : retrouve l’objet sous le nom indiqué. Enumeration getAttributeNames() : retourne l’ensemble des noms de tous les attributs liés. void removeAttribute(String name) : supprime l’objet lié sous le nom indiqué .
ServletContext contexteCourant = getServletContext();
String qte = contexteExterieur.getAttribute("quantite");
o) : lie un objet
Object getAttribute(String name) : retrouve l’objet sous le
Enumeration getAttributeNames() : retourne l’ensemble
l’objet lié
TROISIEME RAPPORT EN JAVA EE 7
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);
}
}
TROISIEME RAPPORT EN JAVA EE 8
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() );
}
}
TROISIEME RAPPORT EN JAVA EE 9
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>
TROISIEME RAPPORT EN JAVA EE10
Servlet Inscription
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.
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
On peut ensuite ‘forwarder’ la requête vers une autre servlet (ou le plus
souvent vers une page JSP). Le contrôle ne revien
d’origine. Des données peuvent être passées par l’URL ou par le
ServletContext.
TROISIEME RAPPORT EN JAVA EE
ervlet Inscription Servlet Invites
Cela implique deux servlets ou plus partageant le contrôle d’une requête. 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 pour structurer une application
avec une servlet contrôleur et des servlets spécialisées.
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
On peut ensuite ‘forwarder’ la requête vers une autre servlet (ou le plus
souvent vers une page JSP). Le contrôle ne revient plus à la servlet
Des données peuvent être passées par l’URL ou par le
ervlet Invites
Cela implique deux servlets ou plus partageant le contrôle d’une requête. 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
pour structurer une application
Plus précisément une Servlet peut déléguer une requête entière ou
RequestDispatcher.
On peut ensuite ‘forwarder’ la requête vers une autre servlet (ou le plus
t plus à la servlet
Des données peuvent être passées par l’URL ou par le
TROISIEME RAPPORT EN JAVA EE11
Exemple
La méthode include()ressource dans la réponse courante.
RequestDispatcher dispat = req.
dispat.include(req,res);
La différence avec un – 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().
TROISIEME RAPPORT EN JAVA EE
include() de RequestDispatcher inclut le contenu d’une ressource dans la réponse courante.
RequestDispatcher dispat = req.getRequestDispatcher("/index.html")
;
La différence avec un forward() est : 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
dans l’URL, setAttribute().
inclut le contenu d’une
getRequestDispatcher("/index.html");
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
TROISIEME RAPPORT EN JAVA EE12
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é :
Solution :
Création de deux attributs : nom et date
Servlets qui définis la date d'annivesaire ddans ce jours .
TROISIEME RAPPORT EN JAVA EE
Le partage du contrôle par des balises actions ne permettent pas le transfert d’attributs objet autres que des chaînes de
Il faut alors utiliser un objet RequestDispatcher et l’objet implicite Request.
Création de deux attributs : nom et date
finis la date d'annivesaire d'aujourd'hui et précise qui le fête
contrôle par des balises actions ne permettent pas le transfert d’attributs objet autres que des chaînes de
Il faut alors utiliser un objet RequestDispatcher et
'aujourd'hui et précise qui le fête
TROISIEME RAPPORT EN JAVA EE13
Lecture des attributs
TROISIEME RAPPORT EN JAVA EE
TROISIEME RAPPORT EN JAVA EE 14
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.