14
TROISIEME R Collaborat Parta Parta Travaux Pr Encadré Par : M Mohamed NAYA Préparé Soukain Soukain RAPPORT EN JAVA tion de Servlets age d’information age de contrôle ratique é par : na NAJIHI na BOUJADI A EE

Rapport tp3 j2ee

Embed Size (px)

DESCRIPTION

Rapport TP3 J2EE

Citation preview

Page 1: Rapport tp3 j2ee

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

Page 2: Rapport tp3 j2ee

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

Page 3: Rapport tp3 j2ee

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

Page 4: Rapport tp3 j2ee

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

Page 5: Rapport tp3 j2ee

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

Page 6: Rapport tp3 j2ee

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é

Page 7: Rapport tp3 j2ee

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);

}

}

Page 8: Rapport tp3 j2ee

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() );

}

}

Page 9: Rapport tp3 j2ee

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>

Page 10: Rapport tp3 j2ee

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

Page 11: Rapport tp3 j2ee

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

Page 12: Rapport tp3 j2ee

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

Page 13: Rapport tp3 j2ee

TROISIEME RAPPORT EN JAVA EE13

Lecture des attributs

TROISIEME RAPPORT EN JAVA EE

Page 14: Rapport tp3 j2ee

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.