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

  FORUM HardWare.fr
  Programmation
  Java

  passage de parametres entre une applet et une servlet

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

passage de parametres entre une applet et une servlet

n°225643
persepolis
Posté le 09-10-2002 à 15:22:44  profilanswer
 

Bonjour,  
j'essaye de passer des parametres entre une applet et une servlet
 
La servlet est lancée par l'applet (Création d'une socket avec l'url de la servlet)
Methode DoPost
Sank Qiu.

mood
Publicité
Posté le 09-10-2002 à 15:22:44  profilanswer
 

n°225645
lorill
Posté le 09-10-2002 à 15:25:46  profilanswer
 

clair et précis, félicitations :D
 
réponse toute aussi précise :
tu passes les paramètres par http

n°225670
persepolis
Posté le 09-10-2002 à 15:50:53  profilanswer
 

Yes, mais encore
Can you developpe a little bit?

n°225673
lorill
Posté le 09-10-2002 à 15:52:39  profilanswer
 

persepolis a écrit a écrit :

Yes, mais encore
Can you developpe a little bit?




 
wait, faut que je sorte ma boule de crystal
http://fr.lifestyle.yahoo.com/astro/oracle/

n°225690
veryfree
Posté le 09-10-2002 à 16:04:30  profilanswer
 

lorill a écrit a écrit :

 
 
wait, faut que je sorte ma boule de crystal
http://fr.lifestyle.yahoo.com/astro/oracle/




 
 
 [:ddr555]

n°225702
darklord
You're welcome
Posté le 09-10-2002 à 16:16:20  profilanswer
 

persepolis a écrit a écrit :

La servlet est lancée par l'applet (Création d'une socket avec l'url de la servlet)




 
 :heink:  :heink:  :heink:


---------------
Just because you feel good does not make you right
n°225712
persepolis
Posté le 09-10-2002 à 16:23:42  profilanswer
 

DarkLord a écrit a écrit :

 
 
 :heink:  :heink:  :heink:  




 
Bout de code :
Url de la servlet : http://localhost/stlupload/servlet/parserupload
 
..............
    DataOutputStream dataout = null;
    BufferedReader datain = null;
    try{
        URL url = new URL(uploadURL);
 
        StringBuffer boundary = new StringBuffer();
        boundary.append("-----------------------------" );
        boundary.append(getRandomString().toString());
 
        long contentLength = totalFilesLength;
        StringBuffer[] head = setAllHead(files, boundary);
        StringBuffer[] tail = setAllTail(files.length, boundary);
        for(int i = 0; i < files.length; i++){
            contentLength += head[i].length();
            contentLength += tail[i].length();
        }
 
        StringBuffer header = new StringBuffer();
        // Line 1.
        header.append("POST " );header.append(url.getPath());
        header.append(" HTTP/1.0\r\n" );
        // Line 2.
        header.append("Content-type: multipart/form-data; boundary=" );
        header.append(boundary.substring(2, boundary.length()) +"\r\n" );
        // Line 3.
        header.append("Content-length: " );
        header.append(contentLength);header.append("\r\n" );
        // Line 4.
        header.append("\r\n" );
 
        // If port not specified then use default http port 80.
        sock = new Socket(url.getHost(), (-1 == url.getPort())?80:url.getPort());
        dataout = new DataOutputStream(new BufferedOutputStream(sock.getOutputStream()));
        datain  = new BufferedReader(new InputStreamReader(sock.getInputStream()));
 
 
Est ce que c'est plus clair ?

n°225742
persepolis
Posté le 09-10-2002 à 16:43:39  profilanswer
 

lorill a écrit a écrit :

 
 
wait, faut que je sorte ma boule de crystal
http://fr.lifestyle.yahoo.com/astro/oracle/




 
Qu'est ce que t'a dit ta boule de crustal ? :ouch:

n°225753
lorill
Posté le 09-10-2002 à 16:50:48  profilanswer
 

persepolis a écrit a écrit :

 
 
Qu'est ce que t'a dit ta boule de crustal ? :ouch:  




 
Je lui ai demandé s'il était possible de passer des parametres d'une applet a une servlet, et elle m'a répondu "les oracles sont plutot défavorables" (véridique)

n°225760
persepolis
Posté le 09-10-2002 à 16:54:32  profilanswer
 

lorill a écrit a écrit :

 
 
Je lui ai demandé s'il était possible de passer des parametres d'une applet a une servlet, et elle m'a répondu "les oracles sont plutot défavorables" (véridique)




 
Je vais peut-être te donner mes dates et lieu de naissance .
Des fois que dans mon thème astral , les oracles me prédisent une autre voie que l'informatique ..... et Java  
 :bounce:  :spookie:  :bounce:  :spookie:

mood
Publicité
Posté le 09-10-2002 à 16:54:32  profilanswer
 

n°225777
darklord
You're welcome
Posté le 09-10-2002 à 17:17:16  profilanswer
 

persepolis a écrit a écrit :

 
 
Est ce que c'est plus clair ?




 
en aucune manière


---------------
Just because you feel good does not make you right
n°225782
bobuse
Posté le 09-10-2002 à 17:23:01  profilanswer
 

persepolis a écrit a écrit :

 
 
Je vais peut-être te donner mes dates et lieu de naissance .
Des fois que dans mon thème astral , les oracles me prédisent une autre voie que l'informatique ..... et Java  




 :lol:  :)


---------------
get amaroK plugin
n°225828
HappyHarry
Posté le 09-10-2002 à 19:14:59  profilanswer
 

bon deja la socket tu oublies URLConnection c bcp mieux  :sarcastic:

n°225832
HappyHarry
Posté le 09-10-2002 à 19:23:16  profilanswer
 

Code :
  1. //récupération des informations de connexion au serveur web
  2. URL hostURL = getCodeBase();
  3. String hostName = hostURL.getHost();
  4. int port = hostURL.getPort();
  5. if (port == -1)
  6. {
  7. port = 8180; // port par défaut
  8. }
  9. String webServerStr = "http://"+ hostName + ":" + port + userServletPath;
  10. //passage des paramètres de la requête
  11. //obligation d'encoder les paramètres à l'aide de URLEncoder.encode(String) (JDK 1.3 je crois) methode GET
  12. String servletGET = webServerStr + "?" + URLEncoder.encode(param) + "=" + URLEncoder.encode(valeur_du_param);
  13. URL userDBservlet = new URL( servletGET );
  14. //connexion a la servlet
  15. URLConnection servletConnection = userDBservlet.openConnection();
  16. //la requête HTTP est de type POST
  17. //pour que cela fonctionne il faut obligatoirement ouvrir la connexion en mode lecture/ecriture
  18. servletConnection.setDoOutput(true);
  19. servletConnection.setDoInput(true);
  20. servletConnection.setUseCaches (false);
  21. //content-type correspondant a des données binaires
  22. servletConnection.setRequestProperty("Content-Type", "application/octet-stream" );        
  23. //envoi de l'objet a la servlet
  24. sendObjectToServlet(servletConnection, unObjet);


 
et la methode pour envoyer l'objet
 

Code :
  1. protected void sendObjectToServlet(URLConnection servletConnection, Object unObjet)
  2.     {
  3.         ObjectOutputStream outputToServlet = null;
  4.        
  5.         try
  6.         {
  7.  //ouverture du flux permettant d'ecrire vers la servlet
  8.  outputToServlet = new ObjectOutputStream(servletConnection.getOutputStream());
  9.          //ecriture de l'objet dans ce flux
  10.          outputToServlet.writeObject(unObjet);
  11.          //vidage du tampon
  12.          outputToServlet.flush();        
  13.          outputToServlet.close();
  14.       //on utilise une requete de type POST il faut donc obligatoirement lire une eventuelle réponse (cf RFC HTTP)
  15.       InputStream is = servletConnection.getInputStream();
  16.  InputStreamReader isr = new InputStreamReader(is);
  17.              BufferedReader br = new BufferedReader(isr);
  18.  //dans notre cas la servlet ne renvoie rien, donc on se contente de lire, mais sans aucun traitement particulier
  19.  br.readLine();
  20.  br.close();
  21.  isr.close();
  22.  is.close();
  23.         }
  24.         catch (Exception e)
  25.         {
  26.           e.printStackTrace();   
  27.         }
  28. }


Message édité par HappyHarry le 09-10-2002 à 19:35:17
n°225834
lorill
Posté le 09-10-2002 à 19:25:20  profilanswer
 

c'est pas trop du post ton code, la...

n°225835
HappyHarry
Posté le 09-10-2002 à 19:30:04  profilanswer
 

euh ... ah merde j'ai oublié l'autre morceau :)
 
j'edite

n°226008
persepolis
Posté le 10-10-2002 à 09:21:44  profilanswer
 

HappyHarry a écrit a écrit :

bon deja la socket tu oublies URLConnection c bcp mieux  :sarcastic:  




 
J'ai ouïe dire que URLConnection ne permettait pas d'uploader des fichiers de grande taille et qu'il fallait créer une socket pour pallier le blème ??? :ange:

n°226009
lorill
Posté le 10-10-2002 à 09:26:16  profilanswer
 

persepolis a écrit a écrit :

 
 
J'ai ouïe dire que URLConnection ne permettait pas d'uploader des fichiers de grande taille et qu'il fallait créer une socket pour pallier le blème ??? :ange:  




 
ah ? Et a ton avis, URLConnection il utilise quoi pour se connecter ? Il y va pied nus, ou il mets ses chaussettes, lui aussi ?

n°226015
persepolis
Posté le 10-10-2002 à 09:38:05  profilanswer
 

lorill a écrit a écrit :

 
 
ah ? Et a ton avis, URLConnection il utilise quoi pour se connecter ? Il y va pied nus, ou il mets ses chaussettes, lui aussi ?




 
C'est un bout de code repris et voici l'explication du géniteur :  :jap:  
 
 * URLConnection instance given by the URL class openConnection() function
 * can't handle uploading of large files.
 *
 * The reason being? URLConnection only does a post to the server after the
 * getInputStream() function is called. So anything you write to the Output
 * Stream before the getInputStream() is called will be written to memory.
 * For large files this will caused the JVM to throw an Out of Memory exception.
 *
 * With the above reason I have decided to replace the use of URLConnection
 * with sockets.

n°226018
lorill
Posté le 10-10-2002 à 09:47:13  profilanswer
 

Ouais, parce qu'il bufferise tout avant d'envoyer, ok. Mais d'un autre coté, faut etre crétin pour envoyer un fichier de plus de 10Mo par http d'un seul coup...

n°226029
persepolis
Posté le 10-10-2002 à 09:57:32  profilanswer
 

lorill a écrit a écrit :

Ouais, parce qu'il bufferise tout avant d'envoyer, ok. Mais d'un autre coté, faut etre crétin pour envoyer un fichier de plus de 10Mo par http d'un seul coup...




Avec 2 mois de java dans les pattes , on fait ce qu'on peut . :??:

n°226031
lorill
Posté le 10-10-2002 à 09:59:17  profilanswer
 

rien a voir avec java, la... Tu crois que le mec devant son poste il va attendre une demi-heure le temps que tes 10mo passent ? Et encore, avec 10mo tu dois etre loin du OutOfMemory...

n°226067
persepolis
Posté le 10-10-2002 à 10:36:44  profilanswer
 

lorill a écrit a écrit :

rien a voir avec java, la... Tu crois que le mec devant son poste il va attendre une demi-heure le temps que tes 10mo passent ? Et encore, avec 10mo tu dois etre loin du OutOfMemory...




C'est pas un problème : le soft est destiné à un intranet sur un réseau qui pulse .
N'empêche que je ne sais tjs pas comment passer mon parametre...
Il ne serait pas possible de le passer avec une methode get (Nomservlet?param=param1) et d'appeler ma méthode doGet à partir de ma méthode doPost? :sol:

n°226070
lorill
Posté le 10-10-2002 à 10:40:04  profilanswer
 

Ben faudrait savoir, t'as beaucoup de données ou t'en as pas beaucoup ? Et si tu fais du get, pourquoi tu veux absolument passer par doPost ?

n°226073
persepolis
Posté le 10-10-2002 à 10:48:54  profilanswer
 

lorill a écrit a écrit :

Ben faudrait savoir, t'as beaucoup de données ou t'en as pas beaucoup ? Et si tu fais du get, pourquoi tu veux absolument passer par doPost ?




J'te raconte tou ...
J'ai trouvé sur sourceforge un soft qui me permet d'uploader à partir d'une applet des fichiers/ répertoires du browser sur un serveur d'application .J'ai ensuite intégré une servlet qui ecrit les fichiers sur le serveur (Package MultipartParser de Jason Hunter)
Ne maîtrisant pour l'instant pas assez java (mais j'espère que ca viendra) et faute de temps , j'essaie d'adapter le code à mes besoins.
Je ne doute pas qu'utiliser ftp aurait été plus efficace ...
En ce qui concerne la méthode doPost, le code est fait comme ça...
Les transferts sont de 1 à 10 Megas.
Fréquence : 1 fois par semaine.
 
 
 

n°226077
lorill
Posté le 10-10-2002 à 11:01:19  profilanswer
 

persepolis a écrit a écrit :

 
Les transferts sont de 1 à 10 Megas.




Bon, ben alors le GET, tu te le mets bien profond.
Par contre tu risque pas de choper des outofmemory, donc la methode de happyharry est adaptée, pourquoi tu veux pas l'utiliser ?

n°226080
persepolis
Posté le 10-10-2002 à 11:04:40  profilanswer
 

lorill a écrit a écrit :

 
Bon, ben alors le GET, tu te le mets bien profond.
Par contre tu risque pas de choper des outofmemory, donc la methode de happyharry est adaptée, pourquoi tu veux pas l'utiliser ?




A priori, c'est du get  :gun: que HappyHarry a envoye ...
Je vais le relancer pour son bon de code qu'il voulait renvoyer

n°226081
persepolis
Posté le 10-10-2002 à 11:05:40  profilanswer
 

HappyHarry a écrit a écrit :

euh ... ah merde j'ai oublié l'autre morceau :)
 
j'edite




 
Et l'autre morceau ?
Merci  :jap:

n°226082
lorill
Posté le 10-10-2002 à 11:07:16  profilanswer
 

persepolis a écrit a écrit :

 
 
Et l'autre morceau ?
Merci  :jap:  




 
Il a édité 5 mn apres avoir posté... Si tu regarde mieux tu verras qu'il a les 2 exemples, GET et POST :heink:

n°226105
persepolis
Posté le 10-10-2002 à 11:48:45  profilanswer
 

Ah, ok ok ok  
Merci, J'va essayer

n°226431
HappyHarry
Posté le 10-10-2002 à 22:34:01  profilanswer
 

on voit ceux qui lisent tout avant de dire des betises  :kaola:

n°226541
persepolis
Posté le 11-10-2002 à 08:12:20  profilanswer
 

HappyHarry a écrit a écrit :

on voit ceux qui lisent tout avant de dire des betises  :kaola:  




Merci quand mêmmmmmmmmmmme  :D

n°226568
--greg--
Posté le 11-10-2002 à 09:29:30  profilanswer
 

lorill a écrit a écrit :

 
 
ah ? Et a ton avis, URLConnection il utilise quoi pour se connecter ? Il y va pied nus, ou il mets ses chaussettes, lui aussi ?



[:rofl]


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°226596
persepolis
Posté le 11-10-2002 à 09:56:50  profilanswer
 

Ca y est, j'ai trouvé :
 
pour ceux que ça interesse :
format des données envoyées :
 
 
Content-type: multipart/form-data, boundary=AaB03x
--AaB03x
content-disposition: form-data; name="Nom"  
John DOE  
--AaB03x
content-disposition: form-data; name="fichier1"; filename="file.txt"
Content-Type: text/plain
... contenu du fichier file.txt ...
--AaB03x
content-disposition: form-data; name="fichier2"; filename="image.gif"
Content-type: image/gif  
Content-Transfer-Encoding: binary ...
..contenu du fichier image.gif..  
--AaB03x--
 
A très bientôt pour de nouvelles aventures

mood
Publicité
Posté le   profilanswer
 


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

  passage de parametres entre une applet et une servlet

 

Sujets relatifs
[Servlet/JSP] Pas de "request" définie ds ma JSPApplet Java et navigateurs
[Java] Je recherche une applet precise...Passage d'objets Java à une application C+++
Communication Inter-ServletDataEnvironment. Comment définir des paramètres dans le code?
[JAVA] applet veut pas s'arreter...Conception : passage d'événement
[Java] Applet, reseau et repaint() : problemeJfileChooser à partir d'une applet
Plus de sujets relatifs à : passage de parametres entre une applet et une servlet


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