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 1.3] Gestion de sessions au sein d'un formulaire


Sujet :

Struts 1 Java

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2009
    Messages : 11
    Par défaut [Struts 1.3] Gestion de sessions au sein d'un formulaire
    Bonjour,

    Je rencontre actuellement un soucis assez embêtant au sein de mon application web. Celui-ci se porte sur la gestion des sessions et plus exactement lorsque la session s'invalide.

    Actuellement, toutes les actions créées sur cette application hérite d'une classe mère permettant de faire une vérification par rapport à un objet stocké en session si l'utilisateur est connecté. (Cette classe mère hérite bien sur de Action). Jusque là, aucun problème, si les sessions s'invalide, l'utilisateur est redirigé sur une page de reconnexion. Toutefois, le problème se pose ici dans le cas suivant :
    Si l'utilisateur affiche un formulaire, reste sur cette page sans effectuer d'action, sa session va s'invalidé. Mais si après cette invalidation de session l'utilisateur valide le formulaire, l'application va d'abord exécuter la méthode validate du formulaire et donc sans passer par une Action qui va vérifier sa session. Hors dans le validation du formulaire j'ai besoin de vérifier certaines informations grâce à un objet en session qui peut donc se retrouver à null.
    Je me pose donc la question de trouver une correction propre. Existe t-il une possibilité pour que struts effectue une vérification d'existence d'un objet en session avant toute autre action ?

    Merci

    Julien

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mai 2008
    Messages : 55
    Par défaut
    Bonjour,

    une solution serait de mettre dans ton struts-config.xml validate à false pour toutes les actions qui posent problème. Ensuite tu fais une validation manuelle directement dans l'action.

    ActionErrors errors = tonForm.validate(mapping, request);
    if (errors.size() > 0) {
    this.saveErrors(request, errors);
    }

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2009
    Messages : 11
    Par défaut
    Bonjour,

    Merci pour la réponse. C'est une des solutions que j'envisageai mais cela ne me semblait pas forcément propre.
    Je vais laisser ce post ouvert quelques jours pour d'autre conseil/solutions mais je pense partir sur la solution que tu as énoncé.

    Merci encore.

  4. #4
    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
    Je ne vois pas où est ton problème...
    Dans la méthode validate(...) de l'ActionForm tu as accès à request et via request à la session
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {... }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2009
    Messages : 11
    Par défaut
    Je n'ai effectivement aucun problème pour détecter qu'il y a une session invalidée au sein du validate du formulaire.
    Toutefois, mon problème se pose plus sur la gestion du retour. Actuellement, lorsque je constate qu'une session est invalidée, alors je throw dans mon action une exception spécifique (configurée dans le struts-config.xml). Dans la fonction validate je ne peux pas effectuer un throw d'une exception et c'est là que cela me gène (A moins que je fasse une erreur de compréhension).
    Le problème vient peut être de la gestion initiale de ces sessions.

  6. #6
    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
    Autant pour moi, je me disais aussi...

    Là, c'est vrai que rien n'est prévu... il faudrait pouvoir modifier dynamiquement l'attribut "input" de la configuration de l'action mais ce n'est pas possible.

    Une solution (dégueulasse) serait d'envoyer un message particulier et l'interpréter dans la page pour faire une redirection... c'est la pire

    Une autre, plus élégante à mon avis, serait de ne pas faire le contrôle lorsque la session a expirée et de laisser le processeur d'action se charger de la redirection.
    Pour ça, il faut écrire une classe qui étend RequestProcessor et qui redéfinie la méthode process(...) et modifier le fichier struts-config.xml (bloc <controller>)

    Une autre encore, bien plus facile encore, tu créés un filtre qui se charge du contrôle de la session et qui redirige... Là, tu ne change rien à struts...

    C'est suffisant ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2009
    Messages : 11
    Par défaut
    Merci pour les solutions

    En fouinant à droite à gauche sur la toile j'ai eu vent de la solution concernant la classe qui étend RequestProcessor ainsi que l'ajout du bloc controller au sein du fichier de config struts. Juste pour information que je n'ai pas précisé, j'utilise les tiles donc je dois étendre de TilesRequestProcessor à priori.

    J'ai essayé de mettre en place cette solution et ai donc créé une classe perso étendant TilesRequestProcessor et en réécrivant la méthode processPreprocess.
    Je me suis confronté à un problème dès que je voulais accéder à ma page de login puisque, logiquement, ma session était vide donc dans tout les cas, je renvoyai faux dans cette fonction. Je n'était donc pas sur que cette solution puisse s'accorder à mon cas mais je vais revenir dessus pour voir.

    En ce qui concerne le filtre, je n'y avait pas pensé et vais donc également me penché là-dessus.

    Merci

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

Discussions similaires

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

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