2010-06-17 13 views
2

Existe-t-il un moyen de "capturer" l'événement de délai d'attente de session, de manière à extraire les données de HttpSession avant qu'elles ne soient invalidées?Un moyen d'anticiper le délai d'expiration de la session?

Nous implémentons l'interface de filtrage, et dans la méthode doFilter, l'utilisateur que nous avons stocké dans l'objet de session lors de la connexion est nul lorsque la session expire.

Merci d'avance.

+0

ce langauge, quel type de serveur, etc. Je sais que dans ASP.NET vous pouvez faire une fonction WHE n la session expire dans l'asax global –

+0

Langue? Java, struts 1.x – Tom

+0

@Bob: Un membre de l'équipe m'a dit ça. "Dans .net, vous pouvez ..." – Tom

Répondre

11

Vous devriez pouvoir enregistrer un HttpSessionListener pour votre webapp qui vous permettra d'être averti lorsqu'une session est détruite.

Il dispose de deux méthodes de rappel:

  • public void sessionCreated(HttpSessionEvent se)
  • public void sessionDestroyed(HttpSessionEvent se)

La classe HttpSessionEvent a une méthode getSession qui devrait vous permettre d'obtenir la session affectée.

La classe d'écouteur est enregistré dans le web.xml

<listener> 
    <description>My Session Listener</description> 
    <listener-class> 
    my.package.MySessionListener 
    </listener-class> 
</listener> 
+0

merci, mais serai-je capable de faire un 'session.getAttribute()' dans la méthode sessionDestroyed? – Tom

+0

HttpSessionEvent vous permet d'obtenir l'objet HttpSession, vous devriez donc pouvoir le faire. – jimr

0

Avoir l'objet utilisateur HttpSessionBindingListener mettre en œuvre, il peut voir par lui-même quand il est ajouté ou retiré de la session.

0

Vous pouvez toujours ajouter un morceau de JSP qui vérifiera si votre session est toujours active ou valide - en gros, vérifiez si une session var existe (! = Null) et si ce n'est pas le cas - redirigez l'utilisateur à une autre page -

<% 
// check for session object 
HttpSession validuser = request.getSession(); 
// check to see if session var exists 
if (validuser.getValue("auth_user") == null) { 
response.sendRedirect("admin3.jsp?access+denied"); 
} 
// if the session var is null then redirect the user 

Hope this helps Mark

Source: http://www.coderanch.com/t/279538/JSP/java/jsp-session-timeout