Dans une application web implémentée en Java avec des JSP et des Servlets, si je stocke des informations dans la session de l'utilisateur, ces informations sont partagées par tous les onglets du même navigateur. Comment différencier les sessions dans les onglets du navigateur ? Dans cet exemple :
<%@page language="java"%>
<%
String user = request.getParameter("user");
user = (user == null ? (String)session.getAttribute("SESSIONS_USER") : user);
session.setAttribute("SESSIONS_USER",user);
%>
<html><head></head><body>
<%=user %>
<form method="post">
User:<input name="user" value="">
<input type="submit" value="send">
</form>
</body></html>
Copiez ce code dans une page jsp ( testpage.jsp
), déployer ce fichier dans un contexte existant d'une application web sur le serveur (j'utilise Apache Tomcat), puis ouvrir un navigateur (FF, IE7 ou Opera) en utilisant l'URL correcte ( localhost/context1/testpage.jsp
), tapez votre nom dans la zone de saisie et soumettez le formulaire. Ouvrez ensuite un nouvel onglet dans le même navigateur, et vous pourrez voir votre nom (obtenu lors de la session) sur le nouvel onglet. Faites attention au cache du navigateur, parfois il semble que cela n'arrive pas, mais c'est dans le cache, rafraîchissez le deuxième onglet.
Merci.
0 votes
liés : stackoverflow.com/questions/4479995/
1 votes
C'est une chose que l'utilisateur doit faire : Ouvrir IE, cliquer sur "Fichier->Nouvelle Session".
3 votes
@Quandary, votre solution n'est pas une solution générique (elle ne fonctionne pas dans d'autres navigateurs) et, surtout, elle n'est pas conviviale (les utilisateurs ne connaissent pas les sessions).
2 votes
Certaines personnes semblent incapables d'imaginer à quoi cela sert. Le domaine problématique est la plupart des situations dans lesquelles vous voulez permettre différentes "vues" de votre site Web. Une fois que l'utilisateur peut avoir plus d'une vue de votre site Web, il souhaite inévitablement (ou tente accidentellement) d'accéder à deux vues différentes en même temps. Parmi les exemples, citons : le versionnage temporel (passer à l'affichage du site Web tel qu'il existait à un certain moment dans le passé) ; le sandboxing (apporter des modifications au site Web que les autres ne peuvent pas encore voir) ; les vues basées sur le rôle (voir comment le site Web se présente pour un utilisateur moins privilégié) ; etc.