Le cookie JSESSIONID est créé / envoyé lors de la création de la session. La session est créée lorsque votre code appelle request.getSession()
ou request.getSession(true)
pour la première fois. Si vous voulez simplement obtenir la session, mais pas la créer si elle n'existe pas, utilisez request.getSession(false)
- cela vous renverra une session ou null
. Dans ce cas, aucune nouvelle session n'est créée et le cookie JSESSIONID n'est pas envoyé. (Cela signifie également que la session n'est pas nécessairement créée à la première demande ... vous et votre code êtes en contrôle lorsque la session est créée)
Les sessions sont par contexte:
Portée de la session SRV.7.3
Les objets HttpSession doivent être étendus au niveau de l'application (ou du contexte de servlet). Le mécanisme sous-jacent, tel que le cookie utilisé pour établir la session, peut être le même pour différents contextes, mais l'objet référencé, y compris les attributs de cet objet, ne doit jamais être partagé entre les contextes par le conteneur.
( Spécification Servlet 2.4 )
Mise à jour: chaque appel à la page JSP crée implicitement une nouvelle session s'il n'y a pas encore de session. Cela peut être désactivé avec la session='false'
directive page, auquel cas la variable de session n'est pas du tout disponible sur la page JSP.
request.getSession()
ourequest.getSession(true)
, vous obtenez une session existante ou nouvelle. Cependant, si votre code appellerequest.getSession(false)
, vous obtenez la session existante ou null, si aucune session n'existe.Voici quelques informations sur une autre source du
JSESSIONID
cookie:Je déboguais juste du code Java qui s'exécute sur un serveur tomcat. Je n'appelais pas
request.getSession()
explicitement n'importe où dans mon code mais j'ai remarqué qu'unJSESSIONID
cookie était toujours en cours de création.J'ai finalement jeté un œil au code Java généré correspondant à un JSP dans le répertoire de travail sous Tomcat.
Il semble que, que cela vous plaise ou non, si vous invoquez un JSP à partir d'un servlet, il
JSESSIONID
sera créé!Ajouté: Je viens de découvrir cela en ajoutant la directive JSP suivante:
vous pouvez désactiver le réglage de
JSESSIONID
par un JSP.la source
CORRECTION: Veuillez voter pour la réponse de Peter Štibraný - elle est plus correcte et complète!
Un "JSESSIONID" est l'identifiant unique de la session http - voir le javadoc ici . Vous y trouverez la phrase suivante
Ainsi, lorsque vous accédez pour la première fois à un site, une nouvelle session est créée et liée au SevletContext. Si vous déployez plusieurs applications, la session n'est pas partagée.
Vous pouvez également invalider la session en cours et donc en créer une nouvelle. Par exemple, lorsque vous passez de http à https (après la connexion), c'est une très bonne idée de créer une nouvelle session.
J'espère que ça répond à ta question.
la source
Attention si votre page contient d'autres .jsp ou .jspf (fragment)! Si vous ne définissez pas
sur eux également, la page parent finira par démarrer une nouvelle session et définir le cookie JSESSIONID.
Pour les pages .jspf en particulier, cela se produit si vous avez configuré votre web.xml avec un tel extrait:
afin d'activer les scriptlets à l'intérieur.
la source
Pour les liens générés dans une JSP avec des balises personnalisées, j'ai dû utiliser
dans le JSP
ET
dans l'action Struts
la source