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 :

GET et POST avec struts


Sujet :

Struts 1 Java

  1. #1
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut GET et POST avec struts
    Avec les Servlets une requête passée en GET appelle la méthode doGet() et une requête passée en POST appelle la méthode doPost().

    Maintenant avec struts c'est la méthode execute() de l'Action qui est appelée quelque soit le mode d'appel (GET ou POST).

    J'ai besoin pourtant de répondre seulement aux requêtes passées en POST et d'ignorer les requêtes passées en GET.

    En fait, je ne désire pas qu'un utilisateur trafique l'URL dans un navigateur et reçoive des réponses dont il n'a pas le droit de savoir.

    Comment gérer cela ?

    Merci.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Avril 2007
    Messages : 123
    Par défaut
    si tu passes par des formulaires (avec des Formbean que tu recupere dans l'action grace a l'attribut form), il ne pourra pas entrer ses valeurs directement dans l'url via la méthode Get non ?

  3. #3
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Je ne comprends pas trop ton probleme,
    dans un formulaires quand tu fais un submit il ne peux pas y avoir de problemes car au submit il ne regarde pas l'url mais ton formulaire que tu defini en post

    Ensuite dans le cas d'un lien qui fait appel à une action, c'est un lien il n'y a pas de get ou de post.

    En tout cas jamais entendu de ce probleme avec struts.

  4. #4
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Citation Envoyé par Cronycs
    il ne pourra pas entrer ses valeurs directement dans l'url via la méthode Get non ?
    Mais si ! On peut parfaitement le faire !
    Voici un exemple :
    supposons qu'on a un formulaire avec un champ "login" et un champ "pwd" et une action "/Login".
    Si la méthode utilisé dans le formulaire est "GET", lorsqu'on appuie sur le submit, le navigateur redirige vers l'url "/Login.do?login=unNom&pwd=unMdp". Struts intercepte cet URL, et à partir des paramètres qu'il contient, remplit les attributs de la requête et remplit les ActionForms. Or, on peut directement taper un tel url dans le navigateur et déclencher cette batterie d'actions, sans pour autant passer par le formulaire !

    Et donc, Mister Nono voudrait savoir comment dans une Action Struts est ce qu'on peut savoir dans que l'utilisateur a bien passé par un formulaire qui utilise la méthod POST !

    En PHP par exemple, il sépare les paramètres selon leur types (GET, POST, etc.) via les tableux $_GET[], _POST[], etc. Comme ça, on peut faire une telle vérififcation. Mais en JSP, le tout est mis dans un HttpRequest, et ce quelque soit son origine !

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 116
    Par défaut
    Citation Envoyé par maxf1
    Ensuite dans le cas d'un lien qui fait appel à une action, c'est un lien il n'y a pas de get ou de post.
    Hum, hum.... Si c'est un lien c'est forcement un get... Et malheuresement meme si tu definis ton formulaire en post, quelqu'un qui connait les parametres peut l'envoyer en get avec l'url... et l'action repondra bien.
    Je ne sais pas comment faire, mais il faut regarder du coté des methode de HttpServletRequest. Sinon cela doit etre surement dans les headers de http.

    ps: Modjo a repondu plus vite que moi...

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Avril 2007
    Messages : 123
    Par défaut
    Citation Envoyé par Modjo
    Mais si ! On peut parfaitement le faire !
    Voici un exemple :
    supposons qu'on a un formulaire avec un champ "login" et un champ "pwd" et une action "/Login".
    Si la méthode utilisé dans le formulaire est "GET", lorsqu'on appuie sur le submit, le navigateur redirige vers l'url
    Justement si on recupere le formulaire dans un Formbean, il ne prends que ce qui a été entré dans les champs, donc que la méthode POST !

    Apres si c'est un lien, oui forcement ca sera du GET, mais ca que ce soit struts ou non ...

    EDIT : a non j'ai rien dit, en effet on peut passé par la méthode GET, c'est pas très logique :/

  7. #7
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Citation Envoyé par Modjo

    Et donc, Mister Nono voudrait savoir comment dans une Action Struts est ce qu'on peut savoir dans que l'utilisateur a bien passé par un formulaire qui utilise la méthod POST !

    En PHP par exemple, il sépare les paramètres selon leur types (GET, POST, etc.) via les tableux $_GET[], _POST[], etc. Comme ça, on peut faire une telle vérififcation. Mais en JSP, le tout est mis dans un HttpRequest, et ce quelque soit son origine !
    Dans le cas ou le formulaire est passé en Get tu ne peux pas empecher l'utilisateur de modifier lui meme l'url, c'est d'ailleur comme ca que je fais sur certain site qui demande une batterie de clique avant d'aller sur l'index, une fois que tu connais l'url hop en une fois c'est joué.

    Sinon dans le HttpRequest la difference que je vois est que en get les valeurs sont dans getParameter. Et si c'est en post il faut appeler getAttribut!

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Avril 2007
    Messages : 123
    Par défaut
    Citation Envoyé par maxf1
    Sinon dans le HttpRequest la difference que je vois est que en get les valeurs sont dans getParameter. Et si c'est en post il faut appeler getAttribut!
    Oui mais dans ce cas tout ce qui est FormBean avec recuperation des valeurs automatique du formulaire avec struts ne sert plus a rien :/

  9. #9
    Membre chevronné Avatar de binouzzz19
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    385
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 385
    Par défaut
    si tu ve ignorer la méthode get !!

    Ne fais rien dedans, fais juste un appel a la méthode post!

    doGet(request, response){
    doPost(request,response);
    }

    doPost(request, response){
    ...
    }

  10. #10
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Citation Envoyé par Mister Nono
    Maintenant avec struts c'est la méthode execute() de l'Action qui est appelée quelque soit le mode d'appel (GET ou POST).
    c'est la front Servlet de Struts qui implémte le doGet et le doPost !
    Merci quand même !

  11. #11
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Eh Mister NONO encore vivant?

    Pourquoi tu veux faire ca? Le but?
    A quoi sert d'empecher l'utilisateur de modifier directement dans l'url dans le cas d'une soumission en get?

    Car qu'il saississe les valeurs qu'il souhaite dans le formulaire ou dans l'url ca ne change rien, non?

  12. #12
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Citation Envoyé par Modjo
    Mais si ! On peut parfaitement le faire !
    Voici un exemple :
    supposons qu'on a un formulaire avec un champ "login" et un champ "pwd" et une action "/Login".
    Si la méthode utilisé dans le formulaire est "GET", lorsqu'on appuie sur le submit, le navigateur redirige vers l'url "/Login.do?login=unNom&pwd=unMdp". Struts intercepte cet URL, et à partir des paramètres qu'il contient, remplit les attributs de la requête et remplit les ActionForms. Or, on peut directement taper un tel url dans le navigateur et déclencher cette batterie d'actions, sans pour autant passer par le formulaire !

    Et donc, Mister Nono voudrait savoir comment dans une Action Struts est ce qu'on peut savoir dans que l'utilisateur a bien passé par un formulaire qui utilise la méthod POST !
    C'est tout à fait cela mon soucis.

  13. #13
    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
    Pour répondre à ton besoin initial, tu peux créer une classe de base à tes contrôleurs struts qui définie la méthode execute.
    Ensuite, tu fais étendre cette classe par tes contrôleurs.
    Dans cette méthode, tu fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception    
    {
       if ( request.getMethod().equals("POST") ) 
          forward = super.execute(mapping, form, request, response);
       else
          TRAITEMENT DE L'ERREUR
    ...
     }
    Tu peux aussi tester dans tous tes contrôleurs plutôt que d'étendre une classe si tu préfères...

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

  14. #14
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Citation Envoyé par maxf1
    Eh Mister NONO encore vivant?
    Et oui maxf1 je suis toujours vivant, merci de t'inquiéter pour moi.

    Citation Envoyé par maxf1
    Pourquoi tu veux faire ca? Le but?
    A quoi sert d'empecher l'utilisateur de modifier directement dans l'url dans le cas d'une soumission en get?

    Car qu'il saississe les valeurs qu'il souhaite dans le formulaire ou dans l'url ca ne change rien, non?
    Tu as raison mais sur mon formulaire il y a des input qui sont le résultat de calculs acquis sur le serveur via une requête Ajax. Donc ces inputs sont en lecture seule.
    Si l'utilisateur interroge le serveur via l'url en changeant les valeurs de ces inputs qui sont des champs calculés et non des champs saisis cela n'est pas bon.

    Alors comment empêcher cela ?

  15. #15
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Et bien tu met ton formulaire en post comme ca les parametres ne sont pas visible. Maintenant si tu veux le faire en get (je pense que tu ne pourra pas empecher la modification de l'url --> si tu veux faire en get il faut que tu trouve une ruse. Genre mettre 2 chiffre evant 2 lettre derriere, et que chaque chiffre correspond à la lettre de l'alphabet et comme ca si l'utilisateur modifie la valeur tu saura qu'il la ecrite lui meme. ).

    Ensuite comme OButterlin te la sugérér. Tu fais le test pour etre sur que ton formulaire à bien été soumi en post.

    Et donc comme cela aucun probleme.

  16. #16
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Voili voilou la solutiiiioooooooonnnnneeeeeeee :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.getMethod();
    J'ai gagné, j'ai trouvé le premier.

    Merci à tous.

  17. #17
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Citation Envoyé par OButterlin
    request.getMethod().equals("POST")
    Désolé de couper court à votre joie, mais le post de OButterlin date de 09:42 !

  18. #18
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Citation Envoyé par Modjo
    Désolé de couper court à votre joie, mais le post de OButterlin date de 09:42 !
    Non, non, cela n'enlève rien à ma joie, mais cela me semblait tellement évident que je ne l'ai pas precisé.

  19. #19
    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
    Allez, j'suis beau joueur, je te laisse la victoire
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  20. #20
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Citation Envoyé par OButterlin
    Allez, j'suis beau joueur, je te laisse la victoire
    Oups mille excuses OButterlin je n'avais pas lu ton post.

    Alors c'est décidé tu es déclaré GRAND VAINQUEUR de ce mémorable postissimo.

    Bonne journée.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Envoi GET et POST avec HttpURLConnection
    Par carton99 dans le forum Langage
    Réponses: 3
    Dernier message: 03/05/2013, 15h40
  2. POST/REDIRECT/GET avec STRUTS
    Par raz2008 dans le forum Struts 1
    Réponses: 1
    Dernier message: 10/09/2010, 15h38
  3. [MySQL] fonction GET et POST avec un certificat SSL
    Par bruce20 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 31/07/2010, 17h19
  4. Equivalent de GET et POST en Struts ?
    Par aurelientp dans le forum Struts 1
    Réponses: 1
    Dernier message: 19/11/2008, 00h14
  5. Flash et securité avec PHP (get ou post)
    Par Garra dans le forum Flash
    Réponses: 8
    Dernier message: 02/05/2008, 14h46

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