passage de parametres entre une applet et une servlet

passage de parametres entre une applet et une servlet - Java - Programmation

Marsh Posté le 09-10-2002 à 15:22:44    

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.

Reply

Marsh Posté le 09-10-2002 à 15:22:44   

Reply

Marsh Posté le 09-10-2002 à 15:25:46    

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

Reply

Marsh Posté le 09-10-2002 à 15:50:53    

Yes, mais encore
Can you developpe a little bit?

Reply

Marsh Posté le 09-10-2002 à 15:52:39    

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/

Reply

Marsh Posté le 09-10-2002 à 16:04:30    

lorill a écrit a écrit :

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




 
 
 [:ddr555]

Reply

Marsh Posté le 09-10-2002 à 16:16:20    

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
Reply

Marsh Posté le 09-10-2002 à 16:23:42    

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 ?

Reply

Marsh Posté le 09-10-2002 à 16:43:39    

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:

Reply

Marsh Posté le 09-10-2002 à 16:50:48    

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)

Reply

Marsh Posté le 09-10-2002 à 16:54:32    

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:

Reply

Marsh Posté le 09-10-2002 à 16:54:32   

Reply

Marsh Posté le 09-10-2002 à 17:17:16    

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
Reply

Marsh Posté le 09-10-2002 à 17:23:01    

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
Reply

Marsh Posté le 09-10-2002 à 19:14:59    

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

Reply

Marsh Posté le 09-10-2002 à 19:23:16    

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
Reply

Marsh Posté le 09-10-2002 à 19:25:20    

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

Reply

Marsh Posté le 09-10-2002 à 19:30:04    

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

Reply

Marsh Posté le 10-10-2002 à 09:21:44    

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:

Reply

Marsh Posté le 10-10-2002 à 09:26:16    

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 ?

Reply

Marsh Posté le 10-10-2002 à 09:38:05    

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.

Reply

Marsh Posté le 10-10-2002 à 09:47:13    

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...

Reply

Marsh Posté le 10-10-2002 à 09:57:32    

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 . :??:

Reply

Marsh Posté le 10-10-2002 à 09:59:17    

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...

Reply

Marsh Posté le 10-10-2002 à 10:36:44    

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:

Reply

Marsh Posté le 10-10-2002 à 10:40:04    

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 ?

Reply

Marsh Posté le 10-10-2002 à 10:48:54    

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.
 
 
 

Reply

Marsh Posté le 10-10-2002 à 11:01:19    

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 ?

Reply

Marsh Posté le 10-10-2002 à 11:04:40    

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

Reply

Marsh Posté le 10-10-2002 à 11:05:40    

HappyHarry a écrit a écrit :

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




 
Et l'autre morceau ?
Merci  :jap:

Reply

Marsh Posté le 10-10-2002 à 11:07:16    

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:

Reply

Marsh Posté le 10-10-2002 à 11:48:45    

Ah, ok ok ok  
Merci, J'va essayer

Reply

Marsh Posté le 10-10-2002 à 22:34:01    

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

Reply

Marsh Posté le 11-10-2002 à 08:12:20    

HappyHarry a écrit a écrit :

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




Merci quand mêmmmmmmmmmmme  :D

Reply

Marsh Posté le 11-10-2002 à 09:29:30    

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!
Reply

Marsh Posté le 11-10-2002 à 09:56:50    

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

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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