Escolar Documentos
Profissional Documentos
Cultura Documentos
Sessions c
Copyright
Eliana Coelho 1 Sessions c
Copyright
Eliana Coelho 2
IFT1149 IFT1149
Gestion de Session
Par défaut, toutes les pages JSP sont
associées à une session. Beans et Sessions
Si nous utilisons la directive:
Si nous ne voulons pas de session associée à <%@ page session="false" %>
Sessions c
Copyright
Eliana Coelho 3 Sessions c
Copyright
Eliana Coelho 4
Gestion de Session
Gestion de Session
Une session est associée à l’objet implicite
session et cet objet est accessible dans les La méthode setAttribut permet d’enregistrer
scriptlets: un objet dans une session; il faut passer
<%@ page session="true" %> comme argument une chaı̂ne de caractères
<% qui va permettre d’identifier l’objet et l’objet
String nomForm = request.getParameter( "nomUsager" );
session.setAttribute( "nom", nomForm ); qui doit être enregistré.
%>
...
<body> L’objet est maintenant accessible à toutes les
<a href="recupereSession.jsp">Continue</a>
pages JSP qui appartiennent à la même
</body>
</html> session.
Sessions c
Copyright
Eliana Coelho 5 Sessions c
Copyright
Eliana Coelho 6
IFT1149 IFT1149
Gestion de Session
La méthode getAttribute permet de récupérer
un objet associé à une session en fournissant
Gestion de Session
le nom d’identification de l’objet:
<%@ page session="true" %> Parce que les nombres et les autres valeurs
<%
primitifs ne sont pas des objets, nous ne
String nomUsager = (String) session.getAttribute("nom");
%> pouvons pas les enregistrer directement dans
<html> l’objet session avec la méthode setAttribute.
<head>
<title> Page de récupération de variable </title>
</head>
<body>
Il faut donc les convertir en objets avant de
Salut, <%= nomUsager %> les enregistrer dans la session, en utilisant les
</body>
classes enveloppes (wrappers).
</html>
Sessions c
Copyright
Eliana Coelho 7 Sessions c
Copyright
Eliana Coelho 8
Java - Wrappers
Gestion de Session
Java offre des classes enveloppes (wrappers)
pour toutes les valeurs primitifs; donc nous <%@ page session="true" %>
pouvons convertir les valeurs en objets: <%
int compteur;
Integer compteurInteger =
Integer objetInteger = new Integer(0); (Integer) session.getAttribute("compteur");
Double objetDouble = new Double(29.95); compteur = (compteurInteger != null)
? compteurInteger.intValue(): 0;
compteur++;
Nous pouvons faire la conversion dans le sens session.setAttribute("compteur",new Integer(compteur));
inverse: %>
....
Nombre de fois que cette page a ete visitée.
int valueInteger = objetInteger.intValue(); <%= compteur %>
double valueDouble = objetDouble.doubleValue();
Sessions c
Copyright
Eliana Coelho 9 Sessions c
Copyright
Eliana Coelho 10
IFT1149 IFT1149
Gestion de Session
Autres méthodes associées à l’objet implicite
session: Gestion de Session
Sessions c
Copyright
Eliana Coelho 11 Sessions c
Copyright
Eliana Coelho 12
Gestion de Session
Exemple d’utilisation d’autres méthodes
associées à l’objet implicite session:
<% // Obtention des valeurs
String sessionId = session.getId();
long creation = session.getCreationTime();
long dernierAccess = session.getLastAccessedTime();
int maxInterInactif = session.getMaxInactiveInterval(); Gestion de Session
// Formattage des dates Si nous explicitons que nous ne voulons pas
Date dateCreation = new Date(creation);
de session associée à une page JSP avec
DateFormat fmtDateCreation =
new SimpleDateFormat("d/M/yyyy H:mm:ss"); l’utilisation de l’attribut session=”false” de
Date dateDernierAccess = new Date(dernierAccess); la directive page, l’objet session n’existe pas;
DateFormat fmtDateDernierAccess =
new SimpleDateFormat("d/M/yyyy H:mm:ss"); son utilisation dans la page produira une
%> erreur.
...
Identification de la session
<%= sessionId %>
Date de création
<%= fmtDateCreation.format(dateCreation) %>
Date du dernier accèss</th>
<%= fmtDateDernierAccess.format(dateDernierAccess) %>
Temps pendant que la session peut rester inactive
<%= maxInterInactif/ 60 + " minutes" %>
Sessions c
Copyright
Eliana Coelho 13 Sessions c
Copyright
Eliana Coelho 14
IFT1149 IFT1149
Gestion de Session
Gestion de Session Nous pouvons indiquer aussi dans le fichier
web.xml de l’application le temps par défaut
Il n’y a pas de limite par rapport au nombre
d’existence d’une session:
d’objets dans une session:
<session-config>
• le temps défaut d’existence d’une session <session-timeout>15</session-timeout>
</session-config>
est de 30 minutes
• ce temps peut être modifié par le Cela définit que la session durera par défaut
programmeur des pages JSP (la méthode 15 minutes.
setMaxInvalidationInterval(int secondes)
de l’objet session)
Cette balise doit venir après la balise
context-param.
Sessions c
Copyright
Eliana Coelho 15 Sessions c
Copyright
Eliana Coelho 16
Gestion de Session
Même si le conteneur JSP fait la gestion des Gestion de Sessions
sessions automatiquement, il faut tenir en En arrière-plan, il y a trois possibilités pour
compte qu’une dégradation dans la faire la gestion d’une session:
performance peut se produire
• Cookies
• si les objets dans la session sont très
grands • Réécriture de l’URL
Sessions c
Copyright
Eliana Coelho 17 Sessions c
Copyright
Eliana Coelho 18
IFT1149 IFT1149
Gestion de Sessions
Réécriture d’URL (URL Rewriting):
Gestion de Sessions • il faut ajouter des données extra à la fin
Les cookies peuvent être utilisés pour faire la de chaque URL qui identifie la session
gestion d’une session et c’est la solution la • le serveur peut associer l’identificateur de
plus utilisée: session avec les données stockées sur la
• un cookie est crée avec une valeur qui session
peut identifier uniquement la session La réécriture d’URL fonctionne même quand
• c’est la valeur de ce cookie qui va les cookies ne sont pas permis dans
permettre de faire la liaison logique entre l’ordinateur du client, cependant:
les requêtes qui viennent d’un même • il faut faire très attention de façon que
navigateur tous les URLs retournés au client ont
Cependant, les cookies peuvent ne pas être l’information extra ajoutée
permis dans l’ordinateur du client. • si le client quitte la session et revient
après via un lien ou un bookmark,
l’information extra peut être perdue
Sessions c
Copyright
Eliana Coelho 19 Sessions c
Copyright
Eliana Coelho 20
Gestion de Session
Dans les pages JSP, la gestion de session est
Gestion de Sessions
faite automatiquement est le programmeur ne
Nous pouvons ajouter un champ caché à un doit pas se préoccuper avec les détails de la
formulaire, où la valeur identifie la session: gestion de session, qui est fait en arrière des
<input type="hidden" name="session" value="..."> scènes en utilisant les cookies ou la réécriture
De cette façon, quand le formulaire est de l’URL.
soumis, le champ session et sa valeur sont
inclus dans les données GET ou POST. Le programmeur n’a pas à manipuler
explicitement le cookie pour identifier la
session ou ajouter cet identificateur aux
URLs.
Sessions c
Copyright
Eliana Coelho 21 Sessions c
Copyright
Eliana Coelho 22
IFT1149 IFT1149
"person"
• le serveur recevra l’identificateur de
person_obj
session et il saura que c’est la
"items" items_obj
continuation d’une session existante
... ....
Sessions c
Copyright
Eliana Coelho 23 Sessions c
Copyright
Eliana Coelho 24
Gestion de Session Gestion de Session
Sessions c
Copyright
Eliana Coelho 25 Sessions c
Copyright
Eliana Coelho 26
IFT1149 IFT1149
Sessions c
Copyright
Eliana Coelho 27 Sessions c
Copyright
Eliana Coelho 28
Sessions - Sans Cookies Sessions - Sans Cookies
Pour encoder un URL qui va être passé à la
La méthode sendRedirect de l’objet méthode encodeRedirectURL:
implicite response envoie une réponse au <%@ page session="true" %>
navigateur en indiquant un URL alternatif oú <%
session.setAttribute("nom","Eliana");
la requête doit être redirigée:
String url =
String url; "http://localhost:8080/ift1149/Sessions/pageRedirigee.jsp";
url = String urlEncode = response.encodeRedirectURL(url);
"http://localhost:8080/ift1149/Sessions/pageRedirigee.jsp"; response.sendRedirect(urlEncode);
response.sendRedirect(url); %>
Sessions c
Copyright
Eliana Coelho 29 Sessions c
Copyright
Eliana Coelho 30