2010-02-04 5 views
1

Je suis en train de le délai d'attente de session dans web.xml d'application commemessage d'affichage après expiration de la session

<session-config> 
    <session-timeout> 1 </session-timeout> 
</session-config> 

Alors maintenant, après la session expire si l'utilisateur essaie de faire une opération que je veux montrer un message disant "Session expirée relogin". Comment faire en Java?

Répondre

1

Je trouve un certain nombre de solutions à ce problème en entrant ce qui suit dans Google:

"session de Java a expiré message"

est ici une solution copiée à partir du Web:

Créer un filtre SessionTimeout.java et affectez au filtre un modèle /app/*.jsp dans le fichier web.xml. Ce provoquera l'appel de mon filtre à chaque demande (c'est-à-dire lorsque l'utilisateur tape au bout de 30 minutes). Exclure la page principale (login/login.jsp) de ce filtre afin qu'une nouvelle session puisse être établie. Le code pour le filtre est très simple:

public class SessionTimeout implements Filter{ 
    RequestDispatcher rd = null; 

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) 
    throws IOException, ServletException{ 
     HttpServletRequest req = (HttpServletRequest)request; 
     HttpSession session = req.getSession(); 

    // New Session so forward to login.jsp 
    if (session.isNew()){ 
    requestDispatcher = request.getRequestDispatcher("/login/login.jsp"); 
    requestDispatcher.forward(request, response); 
    } 

    // Not a new session so continue to the requested resource 
    else{ 
     filterChain.doFilter(request, response); 
    } 
} 

public void init(filterConfig arg) throws ServletException{} 
public void destroy(){} 

} 
Questions connexes