IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

[Session] HttpSessionListener pb


Sujet :

Servlets/JSP Java

  1. #1
    Membre expérimenté
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2007
    Messages : 197
    Par défaut [Session] HttpSessionListener pb
    bonjour,
    Je suis en train d'implémenter la gestion de la fin de session et j'ai quelques soucis avec mon listener HttpSessionListener, en effet je voudrait faire une redirection vers ma page d'accueil:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    package commons;
     
    import java.io.IOException;
     
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpSessionEvent;
    import javax.servlet.http.HttpSessionListener;
     
    public class MySessionListener implements HttpSessionListener {
     
    	/* (non-Javadoc)
    	 * @see javax.servlet.http.HttpSessionListener#sessionCreated(javax.servlet.http.HttpSessionEvent)
    	 */
    	public void sessionCreated(HttpSessionEvent arg0) {
    		// TODO Auto-generated method stub
     
    	}
     
    	/* (non-Javadoc)
    	 * @see javax.servlet.http.HttpSessionListener#sessionDestroyed(javax.servlet.http.HttpSessionEvent)
    	 */
    	public void sessionDestroyed(HttpSessionEvent arg0) {
    		// TODO Auto-generated method stub
    		System.out.println("fin de session...");
    		ServletRequest req=null;
    		ServletResponse res=null;
    		try {
    			arg0.getSession().getServletContext().getRequestDispatcher("/commons/pages/error.jsp").forward(req, res);
    		}
    		catch (ServletException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
     
    	}
     
    }
    sauf que je ne vois pas comment récupérer la requete et la réponse.

    Je dois sûrement mal m'y prendre.
    Merci d'avance.

    Ps: d'habitude j'utilisais dans mes actions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(!request.isRequestedSessionIdValid()){
    			//
    }
    mais avec une applis lourdes je souhaiterais bien éviter de rajoutter ce code à chaques fois... => d'où mon choix de vouloir utiliser 'HttpSessionListener'

  2. #2
    Membre confirmé Avatar de fisico
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 98
    Par défaut
    Personnellement, je trouve que ce que tu essaye de faire n'est pas normal dans le sens où ce n'est pas le but d'un listener de venir s'occuper de la navigation de tes pages, même si c'est un cas particulier. Le listener est juste appelé pour éxécuter des actions sur la session elle-même. Je me trompe?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2006
    Messages : 27
    Par défaut !
    Si j'ai bien compris, tu veux afficher une page d'erreur quand la session http est morte?

    Si c'est le cas, je te conseille d'utiliser un filtre et ça sera à partir de ce dernier que tu testeras si la session est valide ou non.
    Dans le cas où la session ne l'est plus, tu pourras rediriger l'utilisateur vers une autre page, plus d'info via google ou encore avec javaworld:
    http://www.javaworld.com/javaworld/j...2-filters.html

    L'utilisation de l'évenement sur la session n'arrangera pas ton problème car tu ne sauras pas si la session sera invalidée suite à la fermeture du browser ou suite à un timeout.

  4. #4
    Membre confirmé Avatar de fisico
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 98
    Par défaut
    Oui mais bon l'utilisation d'un filtre ne va t-elle pas pâtir les performances?

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Il est certain que ton listener ne pourra pas servir à rediriger vers ta page d'accueil, d'un autre côté, tu peux faire ça beaucoup plus simplement...

    Si tu utilises tiles, tu peux mettre dans ta page modèle un simple test sur une valeur sauvegardée en session (un objet utilisateur par exemple, qui serait placé dans la phase de login ok).
    Si la variable n'est pas trouvée, c'est que :
    - on est dans le cas d'une nouvelle session
    - la session a expirée
    et là, tu pourras rediriger vers ce que tu veux...

    Maintenant, sans tiles (ou sans include commun à toutes tes pages), il faudra faire ce test dans toutes les pages...

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2007
    Messages : 197
    Par défaut
    merci de vos réponse, je pense que je vais utiliser les filtres.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Servlets - JSP] Problème de session
    Par the java lover dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 28/11/2011, 09h54
  2. [JSP][session] perte de session et sendRedirect
    Par blaz dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 30/03/2007, 09h32
  3. Réponses: 12
    Dernier message: 24/09/2003, 15h26
  4. [XMLRAD] session
    Par jml dans le forum XMLRAD
    Réponses: 4
    Dernier message: 17/12/2002, 09h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo