SlideShare une entreprise Scribd logo
1  sur  13
HttpSession
(JEE)
Pr Abderrahim Marzouk
Département de Mathématiques et
Informatique
Master RSI 2019-2020
1
HTTP: un protocole non connecté
Le protocole HTTP est non connecté, c’est-à-dire qu’il
ne garde aucune information/trace concernant un
utilisateur entre deux requêtes.
Cela signifie que chaque requête est traitée
indépendamment des autres.
Comment faire alors le lien entre plusieurs requêtes
envoyées par un même utilisateur?
2
HttpSession
La session HTTP (classe HttpSession) est un moyen qui
permet de reconnaître les requêtes provenant d’un
même utilisateur pour une période limitée : la durée de
vie de la session.
- L’objet HttpSession peut être simplement considéré
comme un ensemble de requêtes/réponses
associées à un utilisateur donné.
- Une session permet de faire le lien entre les requêtes
d’un même utilisateur.
3
Fonctionnement des sessions
Lorsqu’un utilisateur accède pour la première fois à une
application web, le serveur Tomcat lui créé un nouvel
objet HttpSession avec un identifiant unique.
Cet identifiant va servir à Tomcat pour retrouver cet
objet HttpSession lors des requêtes suivantes
effectuées par cet utilisateur qui doivent
obligatoirement comporter cet identifiant.
4
Une session http est propre à chaque client du serveur
car elle est identifiée par un ID unique
Fonctionnement des sessions(suite)
5
L’objet HttpSession réside dans le serveur web et il est
dédié à un seul client.
Comment obtenir une session?
L’objet HttpSession s'obtient grâce à la
méthode getSession() de l'objet request argument des
méthodes doGet/Post(request, response):
HttpSession session=request.getSession()
La méthode getSession() retourne la session courante
associée à l’utilisateur effectuant la requête. Si
L’utilisateur n’a pas de session valide, cette méthode
demande la création d’une session si nécessaire.
6
Utilisation d’une session
Une session fonctionne comme une HashMap<String, Object>
 Stocker des objets dans une session:
session.setAttribute(String clé, Object valeur)
(si la clé existe déjà, la valeur existante est remplacée
par la nouvelle).
 Obtenir des objets d'une session
Object session.getAttribute(String clé)
(retourne l’objet associé à la clé ou la valeur null si la
clé n’existe pas).
7
Durée de vie d’une session
• Une session ne dure pas indéfiniment. Elle expire
après un certain temps paramétrable (un timeout).
• Par défaut, si l’utilisateur n’a effectué aucune
requête sur l’application web pendant 30 mn, alors le
serveur peut détruire sa session et également les
objets qu’elle contient.
8
Configuration du délai d'expiration de
la session HTTP
Le délai d'expiration (timeout) de la session en cours
peut être:
- Soit configuré dans le descripteur de déploiement
(web.xml) en ajoutant les balises :
<session-config>
<session-timeout>120</session-timeout>
</session-config>
- Soit être spécifié de façon programmatique :
HttpSession session=request.getSession();
session. setMaxInactiveInterval(120*60);
Contrairement à l' élément <session-timeout> qui avait une valeur en minutes,
la méthode setMaxInactiveInterval accepte une valeur en secondes .
9
Exemple d’utilisation
Considérons un site (simpliste) qui permet à un client de faire ses
courses en ligne. Il choisit des produits dans le formulaire suivant
et les transmet à un servlet pour qu'il les ajoute à son panier. Le
servlet va affecter un panier vide à chaque client quand il envoie
sa première requête.
10
Exemple d’utilisation (1)
- A chaque requête, le client sélectionne des produits et les
envoie au servlet pour les déposer dans son panier.
- Le servlet va faire ensuite une redirection vers une page JSP qui
affiche alors les produits sélectionnés par l’utilisateur et lui
permet grâce à un lien de retourner au formulaire pour en
ajouter d’autres à son panier.
11
Exemple d’utilisation (3)
On va d’abord stocker un panier dans l’objet request :
request.setAttribute("panier", panier)
Puis dans l’objet HttpSession:
session.setAttribute("panier", panier)
12
Exemple d’utilisation (4)
• Dans le premier cas, après chaque requête du
client, le container lui envoie une réponse et
détruit l’objet request avec les objets qu’il
contient. Donc le panier sera détruit et le
client perd ses produits sélectionnés entre
deux requêtes successives.
• Dans le deuxième cas, le panier reste
sauvegardé pendant une certaine durée dans
la session associée au client.
13

Contenu connexe

Tendances

ENIB cours CAI Web - Séance 3 - JSP/Servlet - Cours
ENIB cours CAI Web - Séance 3 - JSP/Servlet - CoursENIB cours CAI Web - Séance 3 - JSP/Servlet - Cours
ENIB cours CAI Web - Séance 3 - JSP/Servlet - Cours
Horacio Gonzalez
 
Introductions Aux Servlets
Introductions Aux ServletsIntroductions Aux Servlets
Introductions Aux Servlets
François Charoy
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJS
Abdoulaye Dieng
 
Webserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas docWebserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas doc
Winslo Nwan
 

Tendances (20)

les servlets-java EE
les  servlets-java EEles  servlets-java EE
les servlets-java EE
 
Jquery - introduction au langage
Jquery - introduction au langageJquery - introduction au langage
Jquery - introduction au langage
 
Rapport tp2 j2ee
Rapport tp2 j2eeRapport tp2 j2ee
Rapport tp2 j2ee
 
Rapport tp3 j2ee
Rapport tp3 j2eeRapport tp3 j2ee
Rapport tp3 j2ee
 
jQuery
jQueryjQuery
jQuery
 
Introduction a jQuery
Introduction a jQueryIntroduction a jQuery
Introduction a jQuery
 
Les Servlets et JSP
Les Servlets et JSPLes Servlets et JSP
Les Servlets et JSP
 
Jboss Seam
Jboss SeamJboss Seam
Jboss Seam
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
 
JQuery
JQueryJQuery
JQuery
 
ENIB cours CAI Web - Séance 3 - JSP/Servlet - Cours
ENIB cours CAI Web - Séance 3 - JSP/Servlet - CoursENIB cours CAI Web - Séance 3 - JSP/Servlet - Cours
ENIB cours CAI Web - Séance 3 - JSP/Servlet - Cours
 
Introductions Aux Servlets
Introductions Aux ServletsIntroductions Aux Servlets
Introductions Aux Servlets
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJS
 
Manualjquery
ManualjqueryManualjquery
Manualjquery
 
Servlets et JSP
Servlets et JSPServlets et JSP
Servlets et JSP
 
Cours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateurCours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateur
 
Jquery : les bases
Jquery : les basesJquery : les bases
Jquery : les bases
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 
Tp java ee.pptx
Tp java ee.pptxTp java ee.pptx
Tp java ee.pptx
 
Webserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas docWebserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas doc
 

Similaire à Marzouk-HTTP-SESSION-JEE

ajqxè_àànndkllllllllllllllllllllllllllllllllllllllllll
ajqxè_àànndkllllllllllllllllllllllllllllllllllllllllllajqxè_àànndkllllllllllllllllllllllllllllllllllllllllll
ajqxè_àànndkllllllllllllllllllllllllllllllllllllllllll
Elalami8
 
BordeauxJUG : Portails &amp; Portlets Java
BordeauxJUG : Portails &amp; Portlets JavaBordeauxJUG : Portails &amp; Portlets Java
BordeauxJUG : Portails &amp; Portlets Java
Camblor Frédéric
 

Similaire à Marzouk-HTTP-SESSION-JEE (20)

Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
Requêtes HTTP synchrones et asynchrones
Requêtes HTTPsynchrones et asynchronesRequêtes HTTPsynchrones et asynchrones
Requêtes HTTP synchrones et asynchrones
 
cours web developpement statique AJAX 2024
cours web developpement statique AJAX  2024cours web developpement statique AJAX  2024
cours web developpement statique AJAX 2024
 
Advanced html5
Advanced html5Advanced html5
Advanced html5
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
 
Tp2 - WS avec JAXRS
Tp2 - WS avec JAXRSTp2 - WS avec JAXRS
Tp2 - WS avec JAXRS
 
ajqxè_àànndkllllllllllllllllllllllllllllllllllllllllll
ajqxè_àànndkllllllllllllllllllllllllllllllllllllllllllajqxè_àànndkllllllllllllllllllllllllllllllllllllllllll
ajqxè_àànndkllllllllllllllllllllllllllllllllllllllllll
 
Soap
SoapSoap
Soap
 
0554-programmation-web-ajax programmation web ajax
0554-programmation-web-ajax programmation web ajax0554-programmation-web-ajax programmation web ajax
0554-programmation-web-ajax programmation web ajax
 
ajax.pdf
ajax.pdfajax.pdf
ajax.pdf
 
4 asynch task_services_thread
4 asynch task_services_thread4 asynch task_services_thread
4 asynch task_services_thread
 
Cours design pattern m youssfi partie 6 proxy
Cours design pattern m youssfi partie 6 proxyCours design pattern m youssfi partie 6 proxy
Cours design pattern m youssfi partie 6 proxy
 
Crud+tutorial+fr
Crud+tutorial+frCrud+tutorial+fr
Crud+tutorial+fr
 
Chapitre 1.pdf
Chapitre 1.pdfChapitre 1.pdf
Chapitre 1.pdf
 
Controller_Rest.pptx
Controller_Rest.pptxController_Rest.pptx
Controller_Rest.pptx
 
BordeauxJUG : Portails &amp; Portlets Java
BordeauxJUG : Portails &amp; Portlets JavaBordeauxJUG : Portails &amp; Portlets Java
BordeauxJUG : Portails &amp; Portlets Java
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API REST
 
Introduction à Hibernate p.1
Introduction à Hibernate p.1Introduction à Hibernate p.1
Introduction à Hibernate p.1
 
Patron de conception Chain of Responsibility
Patron de conception Chain of ResponsibilityPatron de conception Chain of Responsibility
Patron de conception Chain of Responsibility
 

Marzouk-HTTP-SESSION-JEE

  • 1. HttpSession (JEE) Pr Abderrahim Marzouk Département de Mathématiques et Informatique Master RSI 2019-2020 1
  • 2. HTTP: un protocole non connecté Le protocole HTTP est non connecté, c’est-à-dire qu’il ne garde aucune information/trace concernant un utilisateur entre deux requêtes. Cela signifie que chaque requête est traitée indépendamment des autres. Comment faire alors le lien entre plusieurs requêtes envoyées par un même utilisateur? 2
  • 3. HttpSession La session HTTP (classe HttpSession) est un moyen qui permet de reconnaître les requêtes provenant d’un même utilisateur pour une période limitée : la durée de vie de la session. - L’objet HttpSession peut être simplement considéré comme un ensemble de requêtes/réponses associées à un utilisateur donné. - Une session permet de faire le lien entre les requêtes d’un même utilisateur. 3
  • 4. Fonctionnement des sessions Lorsqu’un utilisateur accède pour la première fois à une application web, le serveur Tomcat lui créé un nouvel objet HttpSession avec un identifiant unique. Cet identifiant va servir à Tomcat pour retrouver cet objet HttpSession lors des requêtes suivantes effectuées par cet utilisateur qui doivent obligatoirement comporter cet identifiant. 4 Une session http est propre à chaque client du serveur car elle est identifiée par un ID unique
  • 5. Fonctionnement des sessions(suite) 5 L’objet HttpSession réside dans le serveur web et il est dédié à un seul client.
  • 6. Comment obtenir une session? L’objet HttpSession s'obtient grâce à la méthode getSession() de l'objet request argument des méthodes doGet/Post(request, response): HttpSession session=request.getSession() La méthode getSession() retourne la session courante associée à l’utilisateur effectuant la requête. Si L’utilisateur n’a pas de session valide, cette méthode demande la création d’une session si nécessaire. 6
  • 7. Utilisation d’une session Une session fonctionne comme une HashMap<String, Object>  Stocker des objets dans une session: session.setAttribute(String clé, Object valeur) (si la clé existe déjà, la valeur existante est remplacée par la nouvelle).  Obtenir des objets d'une session Object session.getAttribute(String clé) (retourne l’objet associé à la clé ou la valeur null si la clé n’existe pas). 7
  • 8. Durée de vie d’une session • Une session ne dure pas indéfiniment. Elle expire après un certain temps paramétrable (un timeout). • Par défaut, si l’utilisateur n’a effectué aucune requête sur l’application web pendant 30 mn, alors le serveur peut détruire sa session et également les objets qu’elle contient. 8
  • 9. Configuration du délai d'expiration de la session HTTP Le délai d'expiration (timeout) de la session en cours peut être: - Soit configuré dans le descripteur de déploiement (web.xml) en ajoutant les balises : <session-config> <session-timeout>120</session-timeout> </session-config> - Soit être spécifié de façon programmatique : HttpSession session=request.getSession(); session. setMaxInactiveInterval(120*60); Contrairement à l' élément <session-timeout> qui avait une valeur en minutes, la méthode setMaxInactiveInterval accepte une valeur en secondes . 9
  • 10. Exemple d’utilisation Considérons un site (simpliste) qui permet à un client de faire ses courses en ligne. Il choisit des produits dans le formulaire suivant et les transmet à un servlet pour qu'il les ajoute à son panier. Le servlet va affecter un panier vide à chaque client quand il envoie sa première requête. 10
  • 11. Exemple d’utilisation (1) - A chaque requête, le client sélectionne des produits et les envoie au servlet pour les déposer dans son panier. - Le servlet va faire ensuite une redirection vers une page JSP qui affiche alors les produits sélectionnés par l’utilisateur et lui permet grâce à un lien de retourner au formulaire pour en ajouter d’autres à son panier. 11
  • 12. Exemple d’utilisation (3) On va d’abord stocker un panier dans l’objet request : request.setAttribute("panier", panier) Puis dans l’objet HttpSession: session.setAttribute("panier", panier) 12
  • 13. Exemple d’utilisation (4) • Dans le premier cas, après chaque requête du client, le container lui envoie une réponse et détruit l’objet request avec les objets qu’il contient. Donc le panier sera détruit et le client perd ses produits sélectionnés entre deux requêtes successives. • Dans le deuxième cas, le panier reste sauvegardé pendant une certaine durée dans la session associée au client. 13