Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
760 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Servlet: ajout de paramètres dans la request

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Servlet: ajout de paramètres dans la request

n°228517
_Mac_
Posté le 16-10-2002 à 09:22:33  profilanswer
 

Yo les gars,
 
Est-ce possible d'ajouter des paramètres dans la request des servlets ?
 
En gros, j'ai un premier servlet qui fait un traitement avant de passer la main (appel sur RequestDispatcher.forward() a priori) à une autre servlet. J'aimerais rajouter des paramètres de requête au deuxième servlet, histoire de lui faire croire que ces données-là étaient envoyées par le formulaire.
 
Je n'ai rien trouvé là-dessus, la méthode setAttribute() ne correspond pas à ce que je souhaite faire.
 
Merci pour votre aide

mood
Publicité
Posté le 16-10-2002 à 09:22:33  profilanswer
 

n°228519
benou
Posté le 16-10-2002 à 09:30:16  profilanswer
 

et un sendRedirect ca te plait pas ?

n°228523
_Mac_
Posté le 16-10-2002 à 09:46:08  profilanswer
 

Non, dans la mesure où d'une part, je voudrait compléter la request avec des paramètres de sécurité que l'utilisateur ne doit pas connaître, et que d'autre part, si je fais un redirect, il faut que je reconstruise complètement l'URL avec tous les anciens paramètres de la request, et ça m'emmerde de faire ça, surtout que précédemment, c'était un POST de formulaire, et non pas un GET.

n°228527
darklord
You're welcome
Posté le 16-10-2002 à 09:49:59  profilanswer
 

:heink:  :heink:  :heink:  
 
bin tu attaches des objets à ta requete initialee et tu passes la requete modifiée dans ton forward. Je ne vois pas où il y a un problème


---------------
Just because you feel good does not make you right
n°228538
benou
Posté le 16-10-2002 à 09:59:12  profilanswer
 

DarkLord a écrit a écrit :

 :heink:  :heink:  :heink:  
 
bin tu attaches des objets à ta requete initialee et tu passes la requete modifiée dans ton forward. Je ne vois pas où il y a un problème




lui il voudrait que ce soir des paramètres, pas des attributs comme ca, la servlet marchera comme si c'était l'utilisateur qui avait envoyé les paramètres.
 
mais bon, je vosi pas pkoi tu t'emmerdes, passes ca en attribut et zou !

n°228540
_Mac_
Posté le 16-10-2002 à 10:01:21  profilanswer
 

DarkLord a écrit a écrit :

 :heink:  :heink:  :heink:  
 
bin tu attaches des objets à ta requete initialee et tu passes la requete modifiée dans ton forward. Je ne vois pas où il y a un problème




 
Je suis d'accord, c'est exactement ce que je veux faire, mais je ne sais pas comment. Je ne peux pas utiliser request.setAttribute()...

n°228547
darklord
You're welcome
Posté le 16-10-2002 à 10:14:33  profilanswer
 

mmm il devrait y avoir moyen. Pourquoi est ce que setAttribute ne te convient pas?


---------------
Just because you feel good does not make you right
n°228549
_Mac_
Posté le 16-10-2002 à 10:19:44  profilanswer
 

DarkLord a écrit a écrit :

mmm il devrait y avoir moyen. Pourquoi est ce que setAttribute ne te convient pas?




 
Bah, en fait, c'est que le servlet que je veux appeler, c'est pas moi qui l'ai fait et je ne peux pas y toucher... Donc je ne peux pas rajouter les getAttribute() qui iraient bien :(

n°228553
darklord
You're welcome
Posté le 16-10-2002 à 10:21:28  profilanswer
 

bin alors je ne vois pas comment diable ta deuxième servlet pourrait récupérer quoi que ce soit si il n'y a pas de getAttribte dessus.
 
C'est un non sens total ta question non?


---------------
Just because you feel good does not make you right
n°228566
_Mac_
Posté le 16-10-2002 à 10:35:22  profilanswer
 

DarkLord a écrit a écrit :

bin alors je ne vois pas comment diable ta deuxième servlet pourrait récupérer quoi que ce soit si il n'y a pas de getAttribte dessus.
 
C'est un non sens total ta question non?




 
Et le getParameter() ????? Comment fais-tu pour récupérer les données d'un formulaire dans 1 servlet ??

mood
Publicité
Posté le 16-10-2002 à 10:35:22  profilanswer
 

n°228568
darklord
You're welcome
Posté le 16-10-2002 à 10:38:42  profilanswer
 

oui tu as tout à fait raison. Mes excuses pour ce coup là j'étais dans le cake. Il faut que je réfléchisse mais il y a peut etre moyen en jouant avec les headers HTTP.
 
A voir ...
 
A+


---------------
Just because you feel good does not make you right
n°228579
_Mac_
Posté le 16-10-2002 à 10:49:46  profilanswer
 

DarkLord a écrit a écrit :

j'étais dans le cake



 
Ca arrive, ca arrive...

n°228588
benou
Posté le 16-10-2002 à 11:12:22  profilanswer
 

j'ai la solution, je pense :  
 
tu peux faire un forward mais qui ne passe pas le même objet request :
 
tu créés une nouvelle classe Request (en utilisant le HttpServletRequestWrapper ou un truc dans le genre) qui redéfinie la méthode getParameter(). Dans cette méthode, tu appelles le getParameter de la request d'origin, et si ca te retourne nul, tu retourne le getAttribute().  
 
Comme ca ca devrait marcher.
 
(Je suis fier de mon idée là :) )

n°228591
darklord
You're welcome
Posté le 16-10-2002 à 11:13:55  profilanswer
 

:eek2: impressionnant benou. Si ca marche alors là je suis impressioné :)


---------------
Just because you feel good does not make you right
n°228597
_Mac_
Posté le 16-10-2002 à 11:20:47  profilanswer
 

benou a écrit a écrit :

j'ai la solution, je pense :  
 
tu peux faire un forward mais qui ne passe pas le même objet request :
 
tu créés une nouvelle classe Request (en utilisant le HttpServletRequestWrapper ou un truc dans le genre) qui redéfinie la méthode getParameter(). Dans cette méthode, tu appelles le getParameter de la request d'origin, et si ca te retourne nul, tu retourne le getAttribute().  
 
Comme ca ca devrait marcher.
 
(Je suis fier de mon idée là :) )




 
Pas mal... Un peu lourd, mais pas mal... Ce qui me gène, c'est que le fonctionnement de ce nouveau ServletRequest dépend entièrement du servlet que je veux appeler : en gros, il va falloir que je test le parametre que ce servlet veut récupérer ; en fonction du résultat de ce test, je renvoie mes paramètres ou ceux du vrai ServletRequest... Je sais pas trop.

n°228600
benou
Posté le 16-10-2002 à 11:24:50  profilanswer
 

je suis quasi sur que ca va fonctionner : le coup du wrapping de request (ou de response) c'est vachement utilisé dans les Filtre et je travaille assez intenssément dessus depuis quelques temps ...

n°228602
benou
Posté le 16-10-2002 à 11:27:06  profilanswer
 

_Mac_ a écrit a écrit :

 
 
Pas mal... Un peu lourd, mais pas mal... Ce qui me gène, c'est que le fonctionnement de ce nouveau ServletRequest dépend entièrement du servlet que je veux appeler : en gros, il va falloir que je test le parametre que ce servlet veut récupérer ; en fonction du résultat de ce test, je renvoie mes paramètres ou ceux du vrai ServletRequest... Je sais pas trop.




 
attend y a rien de lourd du tout !
et t'as rien à tester : tu fais juste que ca va chercher dans les attributs si ca n'a pas trouvé dans les paramètres.
 
en quelques lignes ca fait exactement ce que tu veux

n°228603
benou
Posté le 16-10-2002 à 11:28:34  profilanswer
 

_Mac_ a écrit a écrit :

 
je renvoie mes paramètres ou ceux du vrai ServletRequest... Je sais pas trop.




mais nan, dans tous les cas tu renvoies les paramètres du vrai servlet request. Ya que dans les cas où ce résultat serait nul que tu vas chercher dans les attributs du vrai servlet request.

n°228606
_Mac_
Posté le 16-10-2002 à 11:30:39  profilanswer
 

benou a écrit a écrit :

 
 
attend y a rien de lourd du tout !
et t'as rien à tester : tu fais juste que ca va chercher dans les attributs si ca n'a pas trouvé dans les paramètres.
 
en quelques lignes ca fait exactement ce que tu veux




 
Tu peux pas renvoyer un attribut de requête comme ça : c'est bien quand l'attribut est un String, mais quand ça n'en est pas un, c'est pas forcément terrible. Après, t'as un souci si le servlet cible fait un traitement spécifique important pour le cas où le paramètre n'existe pas. T'as des risques d'effets de bors important dans le cas où les attributs et les paramètres portent le même nom...

n°228608
benou
Posté le 16-10-2002 à 11:35:17  profilanswer
 

_Mac_ a écrit a écrit :

 
Tu peux pas renvoyer un attribut de requête comme ça : c'est bien quand l'attribut est un String, mais quand ça n'en est pas un, c'est pas forcément terrible.



 
ben ca ca se test. Et puis si la servlet à laquelle tu veux envoyé la requete est prévue pour recevoir directement les infos d'un formulaire, elle ne devrait pas avoir d'attribut dans sa request. Donc les attrbuts présents sont ceux que tu aura mit à savoir des String
 

_Mac_ a écrit a écrit :

Après, t'as un souci si le servlet cible fait un traitement spécifique important pour le cas où le paramètre n'existe pas. T'as des risques d'effets de bors important dans le cas où les attributs et les paramètres portent le même nom...



 
attend, si le paramètre ne doit pas exister, c'est à toi de ne pas mettre l'attribut.
 
et puis si tu veux pas utiliser les attributs, tu fait autre chose : tu associe une Map à ta WrappedRequest, tu mets tes paramètres supplémentaire dedans, et la methode getParameter va chercher dans les parametres, puis dans la Map (plutot que dans les attributs) si le paramêtre n'existe pas.
 
j'ai l'impression que tu mélanges les problèmes :/


Message édité par benou le 16-10-2002 à 11:36:11
n°228617
_Mac_
Posté le 16-10-2002 à 12:00:38  profilanswer
 

benou a écrit a écrit :

 
j'ai l'impression que tu mélanges les problèmes :/




 
Je ne mélange pas les problèmes, j'analyse ta solution. Tu l'as dit toi-même :
 

benou a écrit a écrit :

 
Dans cette méthode, tu appelles le getParameter de la request d'origin, et si ca te retourne nul, tu retourne le getAttribute().




 
Je dis tout simplement qu'en faisant ça, c'est risqué.
 
Bref, passons.
 
Ton idée de Map est effectivement mieux que mes tests à la con.

n°228618
benou
Posté le 16-10-2002 à 12:06:34  profilanswer
 

_Mac_ a écrit a écrit :

 
Je dis tout simplement qu'en faisant ça, c'est risqué.




ben il me semblait que quand tu avais expliqué ton problème tu disais que la servlet vers laquelle tu voulais rediriger la requête avait été faite pour être appelée directement => dans ce cas là, elle ne devait pas avoir d'attribut donc le problème se possait pas.
 
mais peut être que j'ai mal compris ...

n°228635
_Mac_
Posté le 16-10-2002 à 12:26:27  profilanswer
 

Je sais que dalle sur ce servlet : tout ce que je connais, c'est l'URL de mapping, et donc je ne sais pas du tout ce que fait le servlet avant d'utiliser les paramètres d'URL. Si ça se trouve, il crée des attributs de requests qui portent le même nom que les paramètres d'URL juste avant d'appeler les getParameter()...
 
Mais bon, c'est pas con ton truc, quand même, je vais sûrement m'en inspirer.

n°228640
--greg--
Posté le 16-10-2002 à 12:28:50  profilanswer
 

:fou: y'a deja eu le MEME topic y'a 2-3 semaines :fou:
 


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°228676
_Mac_
Posté le 16-10-2002 à 13:42:36  profilanswer
 

--greg-- a écrit a écrit :

:fou: y'a deja eu le MEME topic y'a 2-3 semaines :fou:
 
 




 
Tu fais référence au thread "Communication Inter-Servlet" ??? C'est pas du tout ce que je veux faire : je cherche à passer la main à un servlet (forward) en rajoutant des paramètres dans la request.

n°229082
benou
Posté le 16-10-2002 à 23:00:56  profilanswer
 

alors tu t'en es sorti finalement ?

n°229176
_Mac_
Posté le 17-10-2002 à 09:21:30  profilanswer
 

J'ai trouvé une méga gruge ! En fait, j'ai directement rajouté mes paramètres dans le getRequestDispatcher :
 

Code :
  1. getServletContext().getRequestDispatcher("/maServlet2?var1=val1&var2=val2" ).forward(request, response);


 
Ca marche très bien, mais je ne trouve pas ça forcément bien clean... A défaut de temps pour surcharge le HttpRequest...

n°229181
benou
Posté le 17-10-2002 à 09:30:24  profilanswer
 

tiens, je savais pas qu'on pouvait faire ca....

n°229185
_Mac_
Posté le 17-10-2002 à 09:36:20  profilanswer
 

Je trouve ça surprenant, aussi :)

n°229212
darklord
You're welcome
Posté le 17-10-2002 à 10:06:48  profilanswer
 

pas bête :)


---------------
Just because you feel good does not make you right
n°229284
--greg--
Posté le 17-10-2002 à 11:20:49  profilanswer
 

DarkLord a écrit a écrit :

pas bête :)



bof :o


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°229311
darklord
You're welcome
Posté le 17-10-2002 à 11:42:02  profilanswer
 

c'est le problème initial qui est très bof je dirai :o
 
faut pas s'étonner d'avoir des solutions pareilles par la suite :o


---------------
Just because you feel good does not make you right
n°229333
_Mac_
Posté le 17-10-2002 à 11:56:04  profilanswer
 

DarkLord a écrit a écrit :

c'est le problème initial qui est très bof je dirai :o




 
Et en quoi le problème initial est très bof, je te prie ????

n°229336
darklord
You're welcome
Posté le 17-10-2002 à 12:01:49  profilanswer
 

bin par bof je veux dire que c'est qqch d'assez inhabituel quoi. Donc on est obligé de bidouiller un peu pour trouver une solution.


---------------
Just because you feel good does not make you right
n°229338
--greg--
Posté le 17-10-2002 à 12:02:25  profilanswer
 

tiens j'avais pas lu la réponse de benou, idée interessante :)


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°229339
--greg--
Posté le 17-10-2002 à 12:02:44  profilanswer
 

DarkLord a écrit a écrit :

bin par bof je veux dire que c'est qqch d'assez inhabituel quoi. Donc on est obligé de bidouiller un peu pour trouver une solution.



quelle mauvaise foi :o


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°229344
darklord
You're welcome
Posté le 17-10-2002 à 12:04:20  profilanswer
 

--greg-- a écrit a écrit :

quelle mauvaise foi :o




 
en quoi je te prie  :??:


---------------
Just because you feel good does not make you right
n°229354
_Mac_
Posté le 17-10-2002 à 12:17:58  profilanswer
 

DarkLord a écrit a écrit :

bin par bof je veux dire que c'est qqch d'assez inhabituel quoi. Donc on est obligé de bidouiller un peu pour trouver une solution.




 
Ca c'est clair !! Pour de la bidouille, c'est de la belle bidouille !  :sol:

n°229356
--greg--
Posté le 17-10-2002 à 12:19:59  profilanswer
 

_Mac_ a écrit a écrit :

 
 
Ca c'est clair !! Pour de la bidouille, c'est de la belle bidouille !  :sol:  



bon bon est bien d'accord alors
la bidouille, c'est bof. ça craint quoi.
wala.
pas besoin de faire des courbettes.


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°229357
darklord
You're welcome
Posté le 17-10-2002 à 12:20:20  profilanswer
 

:heink:


---------------
Just because you feel good does not make you right
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Servlet: ajout de paramètres dans la request

 

Sujets relatifs
Comment avoir l'URL avec tous les paramètres?passage de parametres entre une applet et une servlet
[Servlet/JSP] Pas de "request" définie ds ma JSPCommunication Inter-Servlet
DataEnvironment. Comment définir des paramètres dans le code?[Javascript] Ajout de text dans un Textarea?
IntelliJ Idea, debugage d'une servlet via Tomcat4[Oracle] Optimisation des paramètres Oracle, update de masse
Plus de sujets relatifs à : Servlet: ajout de paramètres dans la request


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR