FAQ Java EEConsultez toutes les FAQ

Nombre d'auteurs : 27, nombre de questions : 85, dernière mise à jour : 3 mai 2015  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums de http://www.developpez.com et de l'expérience personnelle des auteurs.

Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant rédacteur, lisez ceci.


SommaireServletsSession (3)
précédent sommaire suivant
 

La plupart des applications web utilisent le protocole HTTP. Malheureusement ce protocole est ce que l'on appelle un protocole sans état, c'est-à-dire que le serveur web ne maintient pas les informations à propos du client entre deux requêtes. De ce fait, le serveur ne sait pas déterminer si une requête ou une réponse provient du même client. C'est pour cela que les applications web utilisent le concept de session. Une session représente l'ensemble des interactions pouvant intervenir entre un client et le serveur

Mis à jour le 16 février 2005 Stessy

Il existe deux méthodes permettant de créer des sessions :

Code java : Sélectionner tout
HttpSession getSession()
et

Code java : Sélectionner tout
HttpSession getSession(boolean)
Voici un petit exemple permettant de comprendre la différence entre ces deux méthodes :

Code java : Sélectionner tout
1
2
3
4
5
// Si la session existe, ces deux méthodes renvoient la session existante, sinon ces deux méthodes créent une nouvelle session HttpSession session = request.getSession(); 
HttpSession session = request.getSession(true) 
  
// Si la session existe, cette méthode renvoie la session existante, sinon la méthode retourne la valeur null 
HttpSession session = request.getSession(false);

Mis à jour le 16 février 2005 Stessy

Il existe trois moyens de gérer les sessions :

  • à l'aide de cookies ;
  • à l'aide de la réécriture d'URL ;
  • à l'aide des sessions SSL en HTTPS.

Cookies

À chaque session créée, le serveur envoie un identificateur (sous la forme d'un cookie) correspondant au client. Ensuite, le client renverra ce cookie au serveur lors de sa prochaine requête permettant ainsi au serveur d'identifier le client.

Voici un petit exemple permettant d'ajouter un cookie dans l'entête de la réponse :

Code java : Sélectionner tout
1
2
3
javax.servlet.http.Cookie cookie = new 
javax.servlet.http.Cookie("user","abc123456"); 
response.addCookie(cookie);
Mais il arrive assez souvent que le client refuse de recevoir des cookies.
Dans ce cas il vous reste une 2e solution qui consiste en la réécriture d'URL.

Réécriture d'URL

Par cette technique le serveur ajoute l'identificateur de session à la fin de chaque URL des pages envoyées par celui-ci.
Mais malheureusement, cette technique a un coût, car le serveur doit effectuer une opération supplémentaire. Celui-ci doit personnifier l'URL en y incluant l'identifiant de session.
Deux méthodes existent pour individualiser les URL :

Code java : Sélectionner tout
encodeURL(String)
et

Code java : Sélectionner tout
encodeRedirectURL(String)
Ces méthodes réécrivent l'URL uniquement si le client n'accepte pas les cookies. Dans l'autre cas, les URL resteront inchangées.
La 2e méthode est utilisée lorsque la servlet emploie la méthode

Code java : Sélectionner tout
sendRedirect(String)
Exemple :

Code java : Sélectionner tout
response.sendRedirect(response.encodeRedirectURL("maServlet");
Les sessions SSL en HTTPS

Il nous suffit de récupérer la session courante. À cela près, qu'une session SSL est déterminée par les variables d'état suivantes :

  • Session ID (l'identifiant de session) : une séquence arbitraire de 32 octets choisie par le serveur pour identifier une session ;
  • Peer certificate (le certificat du pair) : c'est un certificat X 509 du correspondant (soit pour un serveur ou un client) ;
  • Compression method : l'algorithme de compression utilisé, NULL pour l'instant (ce champ reste vide) ;
  • Cipher spec (la suite de chiffrement) : définit les algorithmes de chiffrement et de hachage ;
  • MasterSecret : c'est une clé de 48 octets partagée entre le client et le serveur ;
  • Is resumable (le drapeau) : c'est un flag qui indique s'il est possible d'ouvrir de nouvelles connexions sur la session en question.

Mis à jour le 16 février 2005 Stessy

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2016 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Responsable bénévole de la rubrique Java Web : Mickael Baron -