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 :

Retour d'une servlet et params du navigateur


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Points : 22
    Points
    22
    Par défaut Retour d'une servlet et params du navigateur
    Bonjour à tous!

    Je vais tenter d'être le plus clair possible. Je suis en train de faire un site utilisant l'architecture MVC. Lors de la navigation sur le site, je parle à mes servlets qui elles forward la requête à mes pages JSP. La plupart du temps où j'effectue des opérations, je passe d'une servlet à l'autre, par exemple: lors d'un login réussi (servlet Login), je fais un "response.sendRedirect" à une autre servlet (appellons là "Servlet1"), qui elle dispatch à page1.jsp. D'ici là, tout est beau.

    Le problème est que je veux effectuer des opérations à l'aide de ma servlet Servlet1, mais toujours en restant dans la même jsp (dispatcher.forward) ET sans utiliser de POST. J'ai un lien dans cette page qui appelle ma servlet du genre: Servlet1?idNo=1&action=delete... Cela a pour effet de changer le chemin de la barre d'adresse pour: "http://localhost:8084/monsite/Servlet1?idNo=1&action=delete". Si j'avais utilisé un POST pour l'envoie des données, lors du refresh de la servlet, les paramètres dans la barre d'adresse auraient disparus. Mais je ne peux pas puisque cela m'empêche de faire des refresh de la page sans me faire harceler ("La page que vous tentez de voir contient des données POST...etc"). Donc, je dois passer les paramètres avec GET.

    Alors... comment faire pour lors du retour de la réponse de ma servlet, vider les fameux paramètres de la barre d'adresse? Sans ça, si l'usager clique sur rafraîchir, il va envoyer de nouveau les params (idNo=1&action=delete)... puisque je n'ai pas changé de page! J'ai pensé placer ces valeurs dans le scope request directement, mais les valeurs envoyées sont dynamiques en fonction du lien choisi...

    Je ne sais pas si vous me comprenez? Malgré tout, merci de m'avoir lu!

  2. #2
    Membre éclairé Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Points : 882
    Points
    882
    Par défaut
    Oui, oui... j'ai lu (3 fois pour comprendre et je suis pas sure de tout comprendre). Il faut dire que les romans, dans un post, ça a tendance à rebuter les lecteurs.

    Si ton probléme de fond, c'est la demande de validation par le client Web lors de l'envoi des paramétres en POST.... cela fait parti de la sécurité du client, et tu ne peux pas empécher les utilisateurs d'avoir ce message s'ils le désire... Ils ne seraient pas très contenant que tu fasses un envoi vers le serveur sans leur authorisation !!!

    C'est une coche dans le client WEB -enfin, s'il a la possibilité, niveau de sécurité, envoi de données.... etc.

    Après, si j'ai pas répondu () faut reformuler ta question en .... plus simple

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Points : 22
    Points
    22
    Par défaut Je réexplique! ;)
    Dans une certaine page JSP, je contacte ma servlet par la méthode GET (ex: ...Servlet1?idNo=1&action=delete) qui elle fait un traitement et réaffiche la même JSP. Le navigateur conserve les paramètres envoyés dans la barre d'adresse... ce qui cause un problème lors d'un refresh de la page (l'action se fait à nouveau)! Je voudrais être en mesure d'appeler ma servlet et revenir à ma page jsp en ayant plus les paramètres idNo=1&action=delete dans la barre d'adresse!

    À ma connaissance, les deux façons de faire sont 1) à l'aide d'un POST 2) ou utiliser response.sendRedirect vers une autre servlet... ce qui videra les paramètres. Ces deux cas ne sont pas l'idéal pour moi. Est-ce possible autrement?? Merci de tenter de me comprendre

  4. #4
    Membre éclairé Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Points : 882
    Points
    882
    Par défaut
    La méthode POST ne changera rien, par rapport au GET.... Tu as toujours les paramétres (POST, ils sont pas visibles, mais ils sont transsmis au servlet).

    Utiliser un sendRedirect() effacera tous les paramétres, c'est sur dans ce cas. Par contre tu as d'autres solution, encore que, il faudrait plus de détails pour répondre correctement:
    - sendRedirect() sur la JSP, et faire un test lorsqu'il n'y a pas de paramétres.
    - utilisation d'un jeton afin d'invalider l'opération deux fois.
    - jsp:forward avec les paramétres de travail, qui eux, ne ressortiront pas dans la barre d'adresse (URL).

    Donne plus te détails car, pour moi, c'est pas clair d'appeler une JSP, via un servlet, pour appeler un eautre JSP, qui elle peux avoir des paramètres qu'il faut utiliser qu'une fois... (si tu m'as pas compris c'est normal).

    merci

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Points : 22
    Points
    22
    Par défaut
    hehehe j'adore ta dernière phrase. En fait, grâce à l'architecture MVC et au fait que je place mes jsp dans le dossier Web-INF, les usagers ne savent pas vraiment où ils sont. Dans la barre d'adresse, ils voient: http://localhost:8084/monsite/Servlet1 et non pas http://localhost:8084/monsite/page1.jsp... En fonction des opérations effectuées, j'affiche une certaine page JSP.

    J'ai une page où je veux effectuer des suppressions. C'est un menu contextuel sur les enregistrements d'un tableau qui me permet d'effacer une ligne (et dans la BD aussi)... Puisque c'est multi-usagers, j'envoie l'opérations à ma servlet avec GET, je fais le traitement, je place les nouvelles données dans le scope request et recrée dynamiquement ma page.

    Je ne connaissais pas <jsp:forward> et selon ce que je viens de lire, ça semblerait régler mon problème! Je vais essayer ça! Merci beaucoup!!!

  6. #6
    Membre éclairé Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Points : 882
    Points
    882
    Par défaut
    MVC, ah ! Ben fallait le dire plus tôt.... forward sera une solution. Après tu as aussi RequestDipatcher qui est l'équivalent lorsque tu fais un source en .java (ou .class) -je pense aux Bean, mais c'est plus pour information car généralement, MVC demande des Beans métiers.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/05/2015, 16h31
  2. Réponses: 3
    Dernier message: 12/05/2009, 17h38
  3. afficher un PNG sur un navigateur web à partir d'une servlet
    Par nicbond dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 17/03/2009, 17h18
  4. problème lors de lancement d'une servlet dans le navigateur
    Par Cirtadz dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 22/01/2009, 15h09
  5. Lancement d'une servlet a partir du navigateur?
    Par Essefi dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 13/09/2008, 00h25

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