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] Gestion de paramètres


Sujet :

Struts 1 Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 80
    Points : 68
    Points
    68
    Par défaut [Struts] Gestion de paramètres
    Bonjour,

    J'ai une page d'accueil contenant des liens du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    VoirForumMessage.do?id=42
    Ce lien permet d'afficher le message dont l'identifiant est 42.

    Mais pour visualiser ce message, il faut être identifié, donc s'il ne l'est pas, l'utilisateur est redirigé vers une page d'identification.
    Cette page est un formulaire avec login et mot de passe tout ce qu'il y a de plus simple et banale.
    Il est relié à une action qui redirigera vers la page demandée au départ, c'est à dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    VoirForumMessage.do?id=42
    Mon problème est le suivant, quelle est d'après vous la meilleure technique pour transmettre le paramètre id du lien d'origine dans ce formulaire car pour rediriger par la suite, je suis obligé de transmettre le paramètre id, sinon je ne saurais pas quel message afficher. Vous me suivez ?

    J'ai pensé aux champs cachés mais cela est trop statique à mon gout car il y a autre chose dont je n'ai pas parlé, il y a plusieurs pages qui peuvent demander une authentification, certaines avec des paramètres comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    VoirForumMessage.do?id=42
    qui affiche un message
    D'autres non, comme
    qui affiche les salles du forum

    Il me faudrait un système dynamique et propre qui suivant les cas transmettent des paramètres ou non par le formulaire ou non.

    J'ai aussi pensé à stocker un HashMap qui contiennent les paramètres, le stocker en session ou request (setAttribute), mais est-ce vraiment propre ?

    J'espère être clair, c'est un problème que vous avez du rencontrer si vous créez des sites qui demandent une authentification

    S'il y a un problème de conception, n'hesitez pas à me le dire afin que je refonde une partie du système si nécessaire car on prend vite de mauvaises habitudes...

    Merci d'avance pour votre aide et vive Developpez.com !

  2. #2
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 62
    Points : 58
    Points
    58
    Par défaut
    salut,
    Perso je trouve que les objets request et session sont pratique et propre à utiliser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //pour récupérer ma valeur id et la retransmettre dans l'url
    String id = (String)request.getParameter("id");
    String sPth = "/voirForumMessage.do?id="+id;

  3. #3
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 80
    Points : 68
    Points
    68
    Par défaut
    Attention, je ne pense pas que le code que tu m'as fourni peut me convenir car je passe par un formulaire ... Et la question est bien :
    Comment je peux passer proprement mes paramètres à traver le formulaire
    Alors, ok, tu me conseilles les session/request mais y'en a t-il d'autres ?

  4. #4
    Membre expérimenté
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 1 366
    Points
    1 366
    Par défaut
    Perso je mettrai l'url complete du referer en session.

    Ensuite tu fais un mecanisme de redirection silmple (requestDispatcher) qui renvois sur la page voulu, a la différence que l'utilisateur est logué

  5. #5
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 80
    Points : 68
    Points
    68
    Par défaut
    Excuse moi mais peut être détailler un peu plus, j'ai quelques difficultés à tout comprendre.
    Perso je mettrai l'url complete du referer en session.
    Ca veut dire que tu me conseilles de mettre tous les paramètres et les valeurs en session ? Dans un objet ?

  6. #6
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 80
    Points : 68
    Points
    68
    Par défaut
    Plus j'y repense plus je me dis qu'une petite procédure générant des champs cachés automatiquement serait le plus simple, vous en pensez quoi ? Mettre des infos en session, ca me fait pas grimper aux rideaux...

  7. #7
    Membre expérimenté
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 1 366
    Points
    1 366
    Par défaut
    non je parle de l'url complete " http://monserveur.dfjksdffgf....=42"

    Tu peux recuperer ca lors de la soumission ds la request.

    Si le client n'est pas logué, tu va le loguer en lui mettant ds sa session cette url.

    lorque il est logué, tu recuperes cette url et tu fait fais un forward vers celle ci.

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    Soit conserver le referer quelque part, mais tu risque de le perdre si l'utilisateur se trompe sur la page de login et que tu boucle dessus.

    Soit effectivement l'envoyer a la page de login dans un champ caché.

    dans ton action :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    pageDemandée = request ( ou form ) .getParameter("id");
    is( utilisateur connecté )
      faire l'action
    sinon
      ajouter l'id au request
      rerouter vers login.
    et dans le login

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    si ( loginOk )
      si ( id présent )
        aller à l'id
      sinon
        aller à la page standard
    j'utilise simplement l'id ici mais en fait, tu devrais stocker l'url ( relative ) dans ton cas, l'équivalent du "referer".

  9. #9
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 80
    Points : 68
    Points
    68
    Par défaut
    Honte sur moi ... J'ai une question ...
    Qu'appelez vous un referer ? Je dois l'appeler sous un autre nom moins barbare ^^;

  10. #10
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    REFERER est une balise de l'entête HTTP contenant l'url de provenence.

    http://www.w3.org/Protocols/HTTP/HTRQ_Headers.html#z14 ( pour la définition )

    De mémoire, tu la récupère ainsi dans un servlet :

  11. #11
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 80
    Points : 68
    Points
    68
    Par défaut
    ok je pense avoir compris, je stocke l'adresse demandée dans l'objet Session et je l'utilise dès que je suis identifié pour me rediriger vers la page demandée à l'origine !

    Donc, c'est une solution que vous envisagez...
    D'autres propositions ?

  12. #12
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 80
    Points : 68
    Points
    68
    Par défaut
    J'ai essayé le getHeader("Referer"),
    Il me renvoie la page qui contient le lien mais pas le lien en lui même...
    Je pense que je vais me tourner vers les champs cachés du formulaire.
    Merci

  13. #13
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 80
    Points : 68
    Points
    68
    Par défaut
    Ca y est, c'est fait, pour info, je vous explique ce que j'ai fait.
    J'ai procédé à la génération automatique de champs cachés dans le formulaire en fonction des paramètres passés. De cette manière je transmet au processus d'identification les informations pour la redirection.

    Ensuite, si l'identification est ok, on récupère de manière automatique les infos, je regénère le lien d'origine, et hop redirection.

    Ce qui est bien, c'est que le processus est générique, il s'adapte automatiquement. Toute nouvelle page que je souhaite protéger par une identification peut l'être en 30 secondes, il suffit de rediriger l'action vers l'identification.

    Merci à tous pour votre précieuse aide

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/04/2005, 13h42
  2. [Struts] lien et paramètres
    Par biohazard dans le forum Struts 1
    Réponses: 3
    Dernier message: 24/03/2005, 18h31
  3. [Struts]Gestion des timeout de session
    Par JohnBlatt dans le forum Struts 1
    Réponses: 3
    Dernier message: 13/12/2004, 14h49
  4. [Struts] Gestion de session
    Par Nuncyco dans le forum Struts 1
    Réponses: 3
    Dernier message: 24/06/2004, 11h11
  5. [struts] passer un paramètre de page via un findForward
    Par Boosters dans le forum Struts 1
    Réponses: 4
    Dernier message: 08/03/2004, 17h35

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