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.
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
Il existe deux méthodes permettant de créer des sessions :
Code java : | Sélectionner tout |
HttpSession getSession()
Code java : | Sélectionner tout |
HttpSession getSession(boolean)
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); |
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 | javax.servlet.http.Cookie cookie = new javax.servlet.http.Cookie("user","abc123456"); response.addCookie(cookie); |
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)
Code java : | Sélectionner tout |
encodeRedirectURL(String)
La 2e méthode est utilisée lorsque la servlet emploie la méthode
Code java : | Sélectionner tout |
sendRedirect(String)
Code java : | Sélectionner tout |
response.sendRedirect(response.encodeRedirectURL("maServlet");
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.
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 çaLes 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 © 2024 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.