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

Struts 1 Java Discussion :

[ STRUTS ] [ SESSION ] Pb gestion de sessions


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2003
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 105
    Par défaut [ STRUTS ] [ SESSION ] Pb gestion de sessions
    Salut,

    Je voudrais essayer de gérer les sessions dans mon appli struts...
    avant je me prenais pas la tete et je faisais ds chaque traitement (mes classes Action)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    request.getSession()
    qui me renvoie la session courante ou une nouvelle session si celle-ci est expiré...

    Maintenant je voudrais que, si ma session courante a expiré...que je renvoie l'utilisateur sur la page de connexion avec un message qui va bien...

    dans ma page connexion j'ai fait (lorsque j'attribue une session pour l'utilisateur qui se connecte) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    HttpSession session = request.getSession();
    session.setMaxInactiveInterval(60);
    J'ai mis un intervalle a 1 minute pour pouvoir tester

    et dans une autre page (méthode execute d'une classe Action) je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    session = request.getSession(false);
    System.out.println("SESSION = " + session);	
    //Session expirée
       if(session == null){
            System.out.println("log - Fin de Session - RepriseProvisionAction : La session a expiré" );
            request.setAttribute("errFonc","Votre session a expiré \nVeuillez vous reconnecter.");	
            return mapping.findForward("finSession");		
    }
    j'attends un p'tit moment mais le request.getSession(false) doit normalement me renvoyer null (d'apres la doc java) si ma session courante est invalide
    or, il me renvoit qd meme une session (différente) mais jamais null

    comment je fais donc pour savoir si ma session courante a expiré?

    dois-je comparer les id de sessions?

    merci pour votre aide

  2. #2
    Membre éprouvé
    Avatar de dtateur
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Par défaut
    plusieurs methodes s'offre à toi pour savoir si ta session à expiré.

    - Tu declares un Listener de session (classe implementant l'interface HttpSessionListener) qui te permet de savoir quand une session est créé et quand elle est detruit.

    - ou tu mets un objet en session quand ton user s'authentifie (par ex. le nom de ton user) et si la session te renvoie null quand tu lui demandes ton user alors soit la session à expirer ou soit ton user essaie d'acceder à une page sans s'être authentifié.

    Voilou !!!

  3. #3
    Membre expérimenté
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Par défaut
    Attention dans tes tests !!!
    Si tu as fermé ton navigateur entre temps. Tu as forcément changé de session.
    C un comportement normal.
    Normalement cela marche relativement bien.
    Sinon tu peux utiliser :

    Pour vérifier si c'est une nouvelle session ou non !!

  4. #4
    Membre éclairé
    Inscrit en
    Décembre 2003
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 105
    Par défaut
    Alors, je n'ai pas fermé le navigateur (j'ai bien fait attention)

    Pour le getSession(false) c'est qu'il me renvoit toujours une session nouvelle qd ma session courante a expiré alors qu'il devrait me renvoyer null...
    Mais bon, tant pis...je vais essayer le isNew()

    Par contre je vais laisse tomber la suggestion du sessionListener, ca m'a l'air bien compliqué....

    Merci je vous tiens au courant...

  5. #5
    Membre éclairé
    Inscrit en
    Décembre 2003
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 105
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    session = request.getSession();
    System.out.println("SESSION = " + session);	
    //Session expirée
    if(session.getAttribute("currentLogin")==null){
     
     request.setAttribute("errFonc","Votre session a expiré. Veuillez vous  reconnecter.");	
     return mapping.findForward("finSession");			
    }
    ....traitement
    Ca marche nickel...
    quand ma session n'est plus valide, ca me renvoie a ma page connexion ("finSession")
    avec le message d'alerte

    Merci!!

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/09/2009, 16h20
  2. Gestion des sessions sous Struts
    Par evan32 dans le forum Struts 1
    Réponses: 2
    Dernier message: 04/09/2009, 17h41
  3. gestion des sessions avec le controller struts
    Par don'de dans le forum Struts 1
    Réponses: 4
    Dernier message: 18/12/2006, 18h21
  4. [Struts][JSP]gestion des session en JSP
    Par zola dans le forum Struts 1
    Réponses: 6
    Dernier message: 27/04/2006, 16h23
  5. [Struts] Gestion de session
    Par Nuncyco dans le forum Struts 1
    Réponses: 3
    Dernier message: 24/06/2004, 11h11

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