Les FAQs Java :
FAQ JAVA FAQ Java EE FAQ Java ME FAQ Java XML FAQ JavaFX FAQ Java GUI FAQ Struts FAQ JSF FAQ JDBC JDO FAQ Hibernate FAQ Spring FAQ Eclipse FAQ NetBeans FAQ JCreator FAQ Maven 2

La FAQ Java EEConsultez toutes les FAQ

Nombre d'auteurs : 27, nombre de questions : 83, dernière mise à jour : 26 avril 2013 

 
OuvrirSommaireServletsSession

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 intéractions pouvant intervenir entre un client et le serveur

Créé le 16 février 2005  par Stessy

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

 
Sélectionnez
HttpSession getSession()

et

 
Sélectionnez
HttpSession getSession(boolean)

Voici un petit exemple permettant de comprendre la différence entre ces 2 méthodes

 
Sélectionnez
// Si la session existe, ces 2 méthodes renvoient la session existante, sinon ces 2 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);
Créé le 16 février 2005  par Stessy

Il existe 3 moyens de gérer les sessions :

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

Cookies

A 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.

 
Sélectionnez
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 2è solution qui consiste en la réécriture d'URL

Réécriture d'URL

Par cette technique le serveur ajoute l'dentificateur 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.
2 méthodes existent pour individualiser les URL:

 
Sélectionnez
encodeURL(String)

et

 
Sélectionnez
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 2è méthode est utilisée lorsque la servlet utilise la méthode

 
Sélectionnez
sendRedirect(String)

Exemple :

 
Sélectionnez
response.sendRedirect(response.encodeRedirectURL("maServlet");

Les Sessions SSL en HTTPS

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

  • Session ID (l'dentifiant 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 un clé de 48 octets partagée entre le client et le serveur.
  • Is resumable (le drapeau) :
    c'est un flag qui indique si il est possible d'ouvrir de nouvelles connexions sur la session en question.
Créé le 16 février 2005  par Stessy
  

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 © 2003 - 2013 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.