[Java] Chainage de Servlets....

Chainage de Servlets.... [Java] - Java - Programmation

Marsh Posté le 08-08-2002 à 15:43:15    

:hello:  
 
Rahh, je reviens pour vous demander à nouveau de l'aide...  :jap:  
 
 
J'ai besoin d'effectuer un chainage de servlet :
- la première s'occupe de l'upload du fichier (1)
- la seconde fait X choses (2)
 
Ca marche au poil (en "get" ), pas de souci, mais pour les besoins d'un bleu-bite de mon équipe, j'aurai besoin de passer de (1) à (2) en méthode "post"...
 
J'ai cherché à gauche et à droite et j'ai l'impression que ce n'est possible qu'en "get"..
 
J'ai raison ????
 :hello:


Message édité par Dephi le 08-08-2002 à 15:44:39

---------------

Reply

Marsh Posté le 08-08-2002 à 15:43:15   

Reply

Marsh Posté le 08-08-2002 à 15:49:20    

Dephi a écrit a écrit :

J'ai raison ????



 
j'ai bien peur que oui
 
je n'ai jamais trouvé la réponse en tout cas....
 
si ca existe je suis preneur !!! [:youyou2224]


---------------
JeuxVideo.Records.Mame
Reply

Marsh Posté le 08-08-2002 à 16:06:43    

getRequestDispatcher("lurlverstaservletB" ).forward(request, response);

Reply

Marsh Posté le 08-08-2002 à 16:38:02    

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

getRequestDispatcher("lurlverstaservletB" ).forward(request, response);




 
Bonne réponse greg !!!   [:t3xla]  
 
 
Enfin non...
Mais C de ma faute, j'ai pas tout dit.... :pt1cable:  
 
Je complète donc..
J'avais déjà essayé d'utiliser justement RequestDispatcher mais ca n'a pas marché...
Pkoi ?? parce que dans la servlet (1) d'Upload, ma request est passé en tant que multipart/form-data
 

Code :
  1. private void process(HttpServletRequest request, HttpServletResponse response)
  2.             throws IOException, FttException {
  3.         MultipartParser mParser = new MultipartParser(request, 5*1024*1024); // 5 Mo maxsize


 
Si je chaîne vers une autre servler avec ta méthode, je suis incapable de récupérer les paramêtres !!!!!  
(du à l'enctype particulier de la première request)
 
 
Te casse pas, dans mon cas ca me semble impossible à passer ca en post..
(à moins que tu ne connaisse une autre solution..  :D )
Merci en tout cas !!!  :jap:


---------------

Reply

Marsh Posté le 08-08-2002 à 16:39:30    

euh ché pas, mais à priori c possible mais bon j'en sais jconnais pas tres trucs:)
t'as essayé?
ça donne quoi....?

Reply

Marsh Posté le 08-08-2002 à 16:42:24    

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

euh ché pas, mais à priori c possible mais bon j'en sais jconnais pas tres trucs:)
t'as essayé?
ça donne quoi....?




 
 :)  
 
Ca donne pas grand chose en fait..
Dans (2) avec RequestDispatcher si je fais un :
request.getParameter("function" ) ca me renvoit null alors que ca me devrait me renvoyer une valeur....
 
 
La seule solution que j'ai trouvé C de récupérer les params et de les ajouter après le ? de l'url (en get koi  :D )


---------------

Reply

Marsh Posté le 08-08-2002 à 16:45:51    

Dephi a écrit a écrit :

 
 
 :)  
 
Ca donne pas grand chose en fait..
Dans (2) avec RequestDispatcher si je fais un :
request.getParameter("function" ) ca me renvoit null alors que ca me devrait me renvoyer une valeur....
 
 
La seule solution que j'ai trouvé C de récupérer les params et de les ajouter après le ? de l'url (en get koi  :D )




c probablement ton "function" qui est po bon.
et comment tu fais de toutes façons, apres, pour réappeler ta servlet B en get...?

Reply

Marsh Posté le 08-08-2002 à 16:46:42    

passe tes paramètres d'une servlet à l'autre en les mettant dans la session:
 

Code :
  1. HttpSession session = request.getSession();// put the object in the session
  2. session.setAttribute("object", object);
  3. javax.servlet.RequestDispatcher dispatch = request.getRequestDispatcher("ListAll.jsp" );//forward
  4. dispatch.forward(request,response);


et aprés dans la 2ème servlet tu récupères comme ca:
 

Code :
  1. Object object = (Object)session.getAttribute("object" );
  2. session.invalidate();// attributes received, invalidate the session


 
voilà c'est ca que tu veux nan?


Message édité par _guigui_ le 08-08-2002 à 16:49:15
Reply

Marsh Posté le 08-08-2002 à 16:47:44    

:heink: non c pas ça qu'il veut :D

Reply

Marsh Posté le 08-08-2002 à 16:50:13    

bah comme en post ca marche pas, et que get ca pue, il a pas trop le choix je crois...

Reply

Marsh Posté le 08-08-2002 à 16:50:13   

Reply

Marsh Posté le 08-08-2002 à 16:51:19    

_guigui_ a écrit a écrit :

bah comme en post ca marche pas, et que get ca pue, il a pas trop le choix je crois...



:ouch:  :??:  
 
 
et en post ça marche

Reply

Marsh Posté le 08-08-2002 à 16:53:49    

ben il veut pas que passer de l'une à l'autre tout connement je pense, il veut bien passer des paramètres en plus non? :??:  
sinon get c'est pas limité à 255 caractères?  :heink:

Reply

Marsh Posté le 08-08-2002 à 16:54:03    

Non, C pas ca...
 
Encore une contrainte que j'ai oublié de préciser...  :D  
 
Dans (2), faut absolument que je récupère les paramêtres en request.getParameter() car ma servlet (2) est appellée par pleins de petits jsp qui passent tous le paramêtre function via la requete et non pas via la session...
 
 
greg > je fais...
 

Code :
  1. MultipartParser mParser = new MultipartParser(request, 5*1024*1024); // 5 Mo maxsize
  2.         Part part = null;
  3.         ParamPart paramPart = null;
  4.         while ((part = mParser.readNextPart()) != null) {
  5.             // rechercher le paramètre de type file
  6.             if (part.isFile()) {
  7.    BlaBlaBla....
  8.             } else if (part.isParam()) {
  9.                 // l'ajouter à l'url de sortie
  10.                 paramPart = (ParamPart)part;
  11.                 if (paramPart.getName().equals("redirect" )) {
  12.                     urlRedirect = paramPart.getStringValue();
  13.                 } else {
  14.                     urlParams += paramPart.getName() + "=" + paramPart.getStringValue() + "&";
  15.                 }
  16.             }
  17.         }
  18.         response.sendRedirect(urlRedirect + "?" + urlParams);


 
 
donc je passe bien en get à (2)


---------------

Reply

Marsh Posté le 08-08-2002 à 16:54:09    

en théorie


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 08-08-2002 à 17:00:41    

Dephi a écrit a écrit :

[...]donc je passe bien en get à (2)




l'embetant avec la methode sendRedirect, c'est que c'est le browser qui fait la redirection en fait.
le requestdispatcher, ça marche tu sais:) mais c'est pas toujours évident de savoir quelle url il faut mettre ..

Reply

Marsh Posté le 08-08-2002 à 17:03:56    

en fait je me pose la meme question que dephi, comment passer d'une servlet à une autre (ou à une jsp) avec le RequestDispatcher en POST ? c'est pas possible si? :??:  :??:


Message édité par _guigui_ le 08-08-2002 à 17:04:32
Reply

Marsh Posté le 08-08-2002 à 17:08:42    

_guigui_ a écrit a écrit :

en fait je me pose la meme question que dephi, comment passer d'une servlet à une autre (ou à une jsp) avec le RequestDispatcher en POST ? c'est pas possible si? :??:  :??:




 
Une solution barbare serait de générer avec ta servlet une page fantome avec un formulaire (avec method="post" ) et des des champs cachés avec tes données,  et puis pourquoi pas un message "en cours de chargement", at surtout avec javascript qui te submite ton formulaire vers ta nouvelle page JSP.
 
Mais c vraiment barbare  :o


---------------
J'suis timide - Prêt à mourir, mais pas à vivre - Je suis vraiement très fatigué ... - more than meets the eye
Reply

Marsh Posté le 08-08-2002 à 17:16:07    

ha oui ca c'est barbare surtout quand on se fait chier à faire du MVC bien propre bien beau :lol:

Reply

Marsh Posté le 08-08-2002 à 17:20:50    

_guigui_ a écrit a écrit :

en fait je me pose la meme question que dephi, comment passer d'une servlet à une autre (ou à une jsp) avec le RequestDispatcher en POST ? c'est pas possible si? :??:  :??:



ben si, c'est exactement la meme chose :heink:

Reply

Marsh Posté le 08-08-2002 à 17:26:12    

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

ben si, c'est exactement la meme chose :heink:




que quoi? qu'en GET?
ben en GET tu mets les paramètres aprés le ? dans le requestdispatcher mais en POST tu fais comment? :??:

Reply

Marsh Posté le 08-08-2002 à 17:29:03    

_guigui_ a écrit a écrit :

 
que quoi? qu'en GET?
ben en GET tu mets les paramètres aprés le ? dans le requestdispatcher mais en POST tu fais comment? :??:  



OH MY GOD.
les methodes forward ou include du requestdispatcher, tu leur passe quoi en arguments  :fou:  
:D

Reply

Marsh Posté le 08-08-2002 à 17:41:21    

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

OH MY GOD.
les methodes forward ou include du requestdispatcher, tu leur passe quoi en arguments  :fou:  
:D




tu réponds à mes question par des questions on va pas avancer comme ca... :kaola:  
ben y'a pas 50 solutions hein...
dispatch.forward(request,response);

Reply

Marsh Posté le 08-08-2002 à 17:42:09    

_guigui_ a écrit a écrit :

 
tu réponds à mes question par des questions on va pas avancer comme ca... :kaola:  
ben y'a pas 50 solutions hein...
dispatch.forward(request,response);



vivi
et request, c'est quoi à ton avis...

Reply

Marsh Posté le 08-08-2002 à 17:46:24    

... :heink:  
je recommence: si tu veux rajouter un nouveau paramètre à la request, et que tu veux balancer la réponse en POST, comment fait-on? :??:

Reply

Marsh Posté le 08-08-2002 à 17:49:27    

request.set....
 
forward(request,response);
 


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 08-08-2002 à 17:57:59    

DarkLord a écrit a écrit :

request.set....
 
forward(request,response);
 
 




ok request.setAttribute
cool
donc pour etre complet, quand tu fais le requestdispatcher, su tu mets pas de ? aprés le nom de la servlet ou jsp à appeler, il fait obligatoirement en POST?

Reply

Marsh Posté le 08-08-2002 à 18:01:10    

_guigui_ a écrit a écrit :

 
ok request.setAttribute
cool
donc pour etre complet, quand tu fais le requestdispatcher, su tu mets pas de ? aprés le nom de la servlet ou jsp à appeler, il fait obligatoirement en POST?



non , meme methode que celle utilisée qui a été utilisée dans l'objet request...

Reply

Marsh Posté le 08-08-2002 à 18:05:06    

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

non , meme methode que celle utilisée qui a été utilisée dans l'objet request...




ok :)
donc si t'as fait un GET dans la request y'a pas moyen de faire un POST pour la réponse...
merci :jap:

Reply

Marsh Posté le 08-08-2002 à 18:07:12    

_guigui_ a écrit a écrit :

 
ok :)
donc si t'as fait un GET dans la request y'a pas moyen de faire un POST pour la réponse...
merci :jap:  



y'a ptet moyen de faker mais c'est pas une bonne idée.
quel interet :??:


Message édité par --greg-- le 08-08-2002 à 18:07:19
Reply

Marsh Posté le 08-08-2002 à 18:09:25    

fais tout en post et t'es tranquille


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 08-08-2002 à 18:11:08    

DarkLord a écrit a écrit :

fais tout en post et t'es tranquille  



tsssss
chaque méthode a une raison d'etre et doit etre utilisée dans le bon cas

Reply

Marsh Posté le 08-08-2002 à 18:11:30    

:fuck:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 08-08-2002 à 18:17:44    

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

y'a ptet moyen de faker mais c'est pas une bonne idée.
quel interet :??:




bah j'en sais rien moi :??:, c'est dephi qui demande comment passer en POST de sa 1ère à sa 2ème servlet, s'il y arrive pas c'est peut etre parcequ'il a appelé sa 1ère en GET nan? :??:

Reply

Marsh Posté le 08-08-2002 à 18:22:49    

_guigui_ a écrit a écrit :

 
bah j'en sais rien moi :??:, c'est dephi qui demande comment passer en POST de sa 1ère à sa 2ème servlet, s'il y arrive pas c'est peut etre parcequ'il a appelé sa 1ère en GET nan? :??:  



jcrois pas puisqu'il me semble qu'il a dit qu'il uploadait un fichier à la 1e servlet.
bref. tu peux tjs appeler la methode doGet dans la methode doPost et vice-versa.

Reply

Marsh Posté le 08-08-2002 à 18:45:21    

ok :jap:

Reply

Marsh Posté le 08-08-2002 à 18:47:41    

_guigui_ a écrit a écrit :

ok :jap:  



;)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed