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 :

[servlet]Communication Applet->Servlet avec méthode POST


Sujet :

Servlets/JSP Java

  1. #1
    ba7
    ba7 est déconnecté
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Points : 5
    Points
    5
    Par défaut [servlet]Communication Applet->Servlet avec méthode POST
    Mon but est d'envoyer un objet créé par l'applet vers une servlet. Mon problème c'est que je n'arrive pas à déclencher ma servlet quand je veux lui envoyer mon objet.
    Mon applet contient un champ "nom" qui permet de créer un objet Personne avec un nom. Ensuite quand on appuie sur le bouton "Envoi" je crée une connexion entre mon applet et ma servlet pour lui envoyer mon objet. Et la, rien ne se passe...la méthode init de la servlet n'est même pas appelés a priori car elle devrait afficher un message dans ma console.

    (L'utilité à terme est d'envoyer une image depuis l'applet vers la servlet)
    J'utilise un serveur tomcat 5.0, ca peut venir de lui?
    Avez vous une idée? Merci beaucoup par avance.

    Voici mon code si besoin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    public class MonApplet extends Applet {	
    	(...)	
    	public void gestionEnvoi() {
    		try {
     
    			URL url =  new URL(getDocumentBase(), "ComServlet");
    			URLConnection conServlet = url.openConnection();
    			if (conServlet instanceof HttpURLConnection)
    			 {
    			 ((HttpURLConnection)conServlet).setRequestMethod("POST");
    			 }
    			 else
    			 {
    			 throw new Exception("this connection is NOT an HttpUrlConnection connection");
    			 }
    			conServlet.setDoInput(true);
    			conServlet.setDoOutput(true);
    			conServlet.setUseCaches(false);
    			conServlet.setDefaultUseCaches (false);
    			conServlet.setRequestProperty("Content-Type", "application/octet-stream");
     
    			conServlet.connect();
     
    			ObjectOutputStream out = new ObjectOutputStream(conServlet.getOutputStream());
    			out.writeObject(new Personne(tfNom.getText()));
    			out.flush();
    			out.close();
    		}
    		 catch (IOException e) {
    			e.printStackTrace();
    		} catch (Exception e) {			
    			e.printStackTrace();
    		}
    	}
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    public class ComServlet extends HttpServlet {
    	protected void doGet(HttpServletRequest req, HttpServletResponse res)
    			throws ServletException, IOException {
    		System.out.print("Dans doGet");
    	}
    	public void init() throws ServletException {
    		System.out.print("Dans Init");
    	}
    	public void doPost(HttpServletRequest req, HttpServletResponse res)
    		throws ServletException, IOException {
     
    		try {
    			ObjectInputStream in = new ObjectInputStream(req.getInputStream());
    			Personne p = null;
    			try {
    				p = (Personne)in.readObject();
    			} catch (ClassNotFoundException e1) {				
    				e1.printStackTrace();
    			}
    			System.out.println("La servlet a recu : " + p.getNom());					
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    }

  2. #2
    Membre actif Avatar de wace
    Inscrit en
    Septembre 2003
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 224
    Points : 263
    Points
    263
    Par défaut
    Principe des dialogues applet-servlet

    Une applet « client », peut envoyer ou recevoir des données d'un serveur via une servlet à travers une connexion web « temps réel ». Il faut :

    * créer un récepteur de flux dans l'applet,

    * créer un émetteur de flux dans la servlet.

    Dans l'applet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    URL            monUrl = new URL("http://monServeur/maServlet");
    URLConnection monUrlc = monUrl.openConnection();
    InputStream        in = monUrlc.getInputStream();
    DataInputStream   dis = new DataInputStream(in);
    monResultat = dis.read();
    Dans la servlet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    OutputStream out = rep.getOutputStream();
    DataOutputStream dos = new DataOutputStream(out);
    dos.write("Resultat_Servlet");
    dos.close();
    Ensuite l'applet peut à intervalles réguliers communiquer avec la servlet et recevoir des informations de la servlet,

    L mecanisme inverse fonctionne de la mme maniere, il suffit d'inverser les flux .

    et si ca ne fonctionne pas c'est que l'url de la servlet ne fonctionne pas
    Les hommes naissent et demeurent libres et égaux en droits; les distinctions sociales ne peuvent être fondées que sur l'utilité commune
    [article 1er Declaration Universelle des Droits de l'Homme]
    www.baseball-grizzlys.com

  3. #3
    ba7
    ba7 est déconnecté
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    (y) Merci wace! Ca marche tout bien maintenant avec ces flux.

    Il faut dire que j'ai fait aussi un peu mon boulet pcq en fait yavé pas de majuscules dans mon nom de servlet

    Pour ceux que ça intéresse, voici mon code corrigé :

    Applet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    package applet;
    import java.applet.Applet;
    import java.awt.Button;
    import java.awt.GridLayout;
    import java.awt.Label;
    import java.awt.Panel;
    import java.awt.TextField;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.ObjectOutputStream;
    import java.net.URL;
    import java.net.URLConnection;
     
    import classe.Personne;
     
    public class MonApplet extends Applet {
     
    	private Label lNom;
    	private TextField tfNom;
    	private Button bEnvoi;
     
    	public MonApplet() {
    		lNom = new Label("Nom:");			
    		tfNom = new TextField(15);		
     
    		bEnvoi = new Button("Envoi");		
    		bEnvoi.addActionListener(
    				new ActionListener() {
    					public void actionPerformed (ActionEvent e) {
    						gestionEnvoi();
    					}
    				}				
    		);
     
    	}
    	public void init() {
    		Panel pNom = new Panel();
    		pNom.add(lNom);
    		pNom.add(tfNom);
     
    		Panel pEnvoi = new Panel();
    		pEnvoi.add(bEnvoi);
     
    		setLayout(new GridLayout(2,1));
    		add(pNom);		
    		add(pEnvoi);	
    	}	
     
    	public void gestionEnvoi() {
    		try {
     
    			String urlServlet = "http://localhost:8080/comm/comservlet";
    			URL url =  new URL(urlServlet);
    			URLConnection conServlet = url.openConnection();
     
    			conServlet.setDoInput(true);
    			conServlet.setDoOutput(true);
    			conServlet.setUseCaches(false);
    			conServlet.setDefaultUseCaches (false);
    			conServlet.setRequestProperty("Content-Type", "application/octet-stream");
     
    			ObjectOutputStream out = new ObjectOutputStream(conServlet.getOutputStream());
    			out.writeObject(new Personne(tfNom.getText()));
    			out.flush();
    			out.close();
     
    			BufferedReader dis = new BufferedReader(new InputStreamReader(conServlet.getInputStream()));
    			String monResultat = dis.readLine(); 
     
    			tfNom.setText(monResultat);
    		}
    		 catch (IOException e) {
    			e.printStackTrace();
    		} catch (Exception e) {			
    			e.printStackTrace();
    		}
    	}
     
    }
    Servlet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    package servlet;
     
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.OutputStream;
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import classe.Personne;
     
    public class ComServlet extends HttpServlet {
    	protected void doGet(HttpServletRequest req, HttpServletResponse res)
    			throws ServletException, IOException {
    		System.out.print("Dans doGet");
    	}
    	public void init() throws ServletException {
    		System.out.print("Dans Init");
    	}
    	public void doPost(HttpServletRequest req, HttpServletResponse res)
    		throws ServletException, IOException {
     
    		try {
    			ObjectInputStream in = new ObjectInputStream(req.getInputStream());
    			Personne p = null;
    			try {
    				p = (Personne)in.readObject();
    			} catch (ClassNotFoundException e1) {				
    				e1.printStackTrace();
    			}
    			System.out.println("La servlet a recu : " + p.getNom());
     
    			OutputStream out = res.getOutputStream();
    			DataOutputStream dos = new DataOutputStream(out);
    			dos.writeBytes("Bien reçu");
    			dos.close();
     
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    }

  4. #4
    Membre actif Avatar de wace
    Inscrit en
    Septembre 2003
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 224
    Points : 263
    Points
    263
    Par défaut
    de rien, c'est un plaisir de faire quelque chose pour aider quelqu'un dans le besoin

    peut etre que cette reponse devrait faire partie de la FAQ, hein messieurs les admins, car il me semble que cela fait trois ou quatre fois en 1 an que je donne la mm reponse ... donc on pourrait peut etre mutualisé ...
    et ca se trouve vous l'avez deja fait et je l'ai pas vu, mais il faut dire que je n'ai pas cherché non plus
    Les hommes naissent et demeurent libres et égaux en droits; les distinctions sociales ne peuvent être fondées que sur l'utilité commune
    [article 1er Declaration Universelle des Droits de l'Homme]
    www.baseball-grizzlys.com

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

Discussions similaires

  1. [Toutes versions] Récupérer des données internet générée sous html par un Formulaire avec méthode "POST"
    Par philoul dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/08/2013, 15h44
  2. WebService REST avec méthode POST
    Par tetsu no tama dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 18/04/2011, 16h19
  3. [PHP 5.1] Redirection avec méthode POST
    Par richard_sraing dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2010, 18h10
  4. Réponses: 26
    Dernier message: 09/07/2009, 09h55
  5. communication applet vers servlet
    Par mathieutaziaux dans le forum Langage
    Réponses: 1
    Dernier message: 19/10/2006, 23h18

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