2009-12-18 5 views
1

J'ai défini le délai d'expiration de la session à 5 minutes dans le fichier web.xml. Et une fois la session expirée, sessionDestroyed() sera exécutée. Mais je veux que la session soit vivante tant que la fenêtre du navigateur est toujours là. Donc, dans chaque page JSP, il y a un morceau de code JavaScript qui visite une image sur le serveur toutes les 100 secondes. L'idée de base concernant cette partie peut être trouvée à http://www.intelliproject.net/articles/showArticle/index/js_session_expiredQuand la session sera-t-elle expirée?

Cependant, le sessionDestroyed() sera toujours exécuté dans 5 minutes. Voici ma question, pourquoi l'événement sessionTimeout est déclenché même si je continue à le visiter toutes les 100 secondes?

+0

À quoi ressemble votre fichier web.xml? J'utilise un mécanisme similaire sur un site, et cela fonctionne exactement comme vous le décrivez. –

Répondre

3

En utilisant firebug, ouvrez l'onglet net et observez la demande javascript. Vous devriez recevoir HTTP 200 pour chaque image GET, et chaque URL devrait avoir des nombres aléatoires ajoutés à la fin. Vous devriez probablement utiliser un horodatage, plutôt que des nombres aléatoires, car des nombres aléatoires pourraient éventuellement se répéter et déconnecter l'utilisateur.

Avez-vous un exemple de page où cela se produit?

+0

Merci pour votre réponse. J'ai fait cette page de test pour vous: http://secure10.olemiss.edu/hdstore/test.jsp Mais je ne pense pas que ça aide. – lonelyloner

+0

Vérifiez le contenu web.xml ici: http://secure10.olemiss.edu/hdstore/test.jsp – lonelyloner

2
  1. assurez-vous que votre appel js exécute - il n'y a aucune erreur js (voir la console d'erreur), et que 200 est retourné
  2. Ne pas utiliser le paramètre aléatoire à la fin de l'image - ce n'est pas garanti by-pass le cache. Istead définir les en-têtes Expires/Cache-Control de la ressource accédée
  3. N'utilisez pas d'image, utilisez un fichier de texte vide (jsp). Vous pouvez également définir manuellement les en-têtes ici.
+0

Merci. Pourriez-vous me dire comment vérifier «200 est retourné»? – lonelyloner

+0

Comme Stefan Kendall conseillé - utiliser firebug – Bozho

+0

Je l'ai testé et 304 est retourné. Faire usage d'un filtre ou d'une page JSP factice qui a les bons en-têtes de réponse pour désactiver la mise en cache de la requête. – BalusC

Questions connexes