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 :

appel servlet + paramètres


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 15
    Points : 10
    Points
    10
    Par défaut appel servlet + paramètres
    Bonjour

    J'ai d'un côté une servlet (http://localhost:8080/MaServlet/) qui :
    - utilise un ByteArrayInputStream comme paramètre d'entrée
    - rend un byte[] comme paramètre de sortie
    - possède seulement la méthode doGet : public void doGet(HttpServletRequest request, HttpServletResponse response)

    De l'autre côté, j'ai un programme java (prog.java) qui doit faire appel à cette servlet.

    Questions:
    1) Quel code dois-je mettre dans prog.java pour faire appel à ma servlet?
    2) Comment se fait l'envoi depuis prog.java du paramètre d'entrée de ma servlet : ByteArrayInputStream?
    3) Est ce que la réception, dans ma servlet, de ce paramètre d'entrée se fait bien par :
    ByteArrayInputStream bais = (ByteArrayInputStream) request.getAttribute("paramEntree");
    4) Quel est le code (dans la servlet et dans prog.java) qui me permet de récupérer mon byte[]?

    D'avance merci pour vos réponses

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 383
    Points : 468
    Points
    468
    Par défaut
    Une servlet est un composant java qui s'inscrit dans le cycle requete/reponse HTTP. Le client est un client léger type navigateur internet et la servlet renvoit du HTML.

    Ce que tu cherches à faire ressemble plus à du client-serveur, n'aurais donc tu pas besoin de 2 programmes java standalone qui vont dialoguer par Socket?

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    salut

    Tout ce que je peux dire c'est que d'un côté j'ai un prog.java et de l'autre une servlet et il faut que mon prog.java lance ma servlet

    Au départ (dans IE), j'ai testé ma servlet en la faisant lister un répertoire et en déplaçant chaque fichier s'y trouvant, vers un autre répertoire: çà fonctionne

    Maintenant, c'est prog.java qui doit envoyer à la servlet le fichier à déplacer (sous forme de ByteArrayInputStream, de File, ...)
    La servlet modifie le fichier puis doit le renvoyer à prog.java (sous forme de ByteArrayInputStream, de File, ...)

    Il me faudrait le code :
    - qui permet de lancer la servlet depuis prog.java
    - dans prog.java pour envoyer le fichier vers la servlet
    - dans la servlet pour récupérer ce fichier (pour que je puisse le modifier)
    - dans la servlet me permettant de renvoyer le résultat du fichier modifié à prog.java
    - le code dans prog.java qui récupère le résultat de la servlet

    J'espère que vous allez pouvoir m'aider
    Merci

  4. #4
    Membre à l'essai
    Inscrit en
    Décembre 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    J'ai réussi à trouver ce code sur internet:

    Prog.java
    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
     
    		URL url = new URL("http://localhost:8080/maservlet/");
    		URLConnection connexion = url.openConnection();
    		try 
    		{
    			String param1 = "1";
    			String param2 = "Nom";
    			String param3 = "Prenom";
     
    			// Preparation d'un tableau contenant tous les parametres que l'on veut passer  la servlet
    			Vector tabparam= new Vector();
    			tabparam.add(0,param1);
    			tabparam.add(1,param2);
    			tabparam.add(2,param3);
     
    			for (int i=0;i<tabparam.size();i++){
    				System.out.println(tabparam.get(i));
    			}
     
    			// DoOutput a true permet d'indiquer que la servlet renverra des donnees
    			connexion.setDoOutput(true);
    			// Creation du flux de donnees a envoyer vers la servlet
    			ObjectOutputStream fluxsortie = new ObjectOutputStream(connexion.getOutputStream());
    			// Envoi de la requete vers la servlet
    			fluxsortie.writeObject(tabparam);
    			// Creation du flux pour recuperer les donnees envoyees de la servlet
    			ObjectInputStream fluxentree = new ObjectInputStream(connexion.getInputStream());
    			// Recuperation du resultat de la requete
    			Vector donnees = (Vector) fluxentree.readObject();
    			for (int i=0;i<donnees.size();i++){
    				System.out.println(donnees.get(i));
    			}
    		} catch (Exception erreur) {
    			erreur.printStackTrace();
    		}

    Servlet.java
    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
     
    	public void doPost(HttpServletRequest request, HttpServletResponse response) 
    	throws ServletException, IOException 
    	{
    		try 
    		{
    			Vector tabparam;
    			String requeteentree;
    			ObjectInputStream entree=new ObjectInputStream(request.getInputStream());
    			// Recuperation du tableau envoye par l'applet
    			tabparam=(Vector) entree.readObject();
    			// Recuperation du contenu du tableau
    			int NumPers= Integer.parseInt((String)tabparam.elementAt(0));
    			String Nom= (String)tabparam.elementAt(1);
    			String Prenom= (String)tabparam.elementAt(2);
    			System.out.println("NumPers" + NumPers);
    			System.out.println("Nom" + Nom);
    			System.out.println("Prenom" + Prenom);
    			ObjectOutputStream sortie=new ObjectOutputStream(response.getOutputStream());
    			// Travail de la servlet 
    			tabparam.add(0,"param1");
    			tabparam.add(1,"param2");
    			tabparam.add(2,"param3");
    			// Renvoi du tableau en sortie de la servlet
    			sortie.writeObject(tabparam);
    		} catch(Exception erreur) {
    			erreur.printStackTrace();
    		}
    	}

    Mais lorsque j'exécute cette ligne
    ObjectInputStream fluxentree = new ObjectInputStream(connexion.getInputStream());

    j'obtiens cette erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    java.io.StreamCorruptedException: invalid stream header
    	at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:737)
    	at java.io.ObjectInputStream.<init>(ObjectInputStream.java:253)
    	at default_package.SortMail.execute(SortMail.java:188)
    	at default_package.Test.main(Test.java:134)

    Vous avez une idée de ce qui n'est pas bon?
    Merci

Discussions similaires

  1. Appel servlet depuis iseries
    Par yenane dans le forum AS/400
    Réponses: 3
    Dernier message: 10/03/2008, 10h22
  2. Appel servlet depuis JSP
    Par shaun_the_sheep dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 07/07/2006, 13h50
  3. [C++] Appel via paramètres non managés
    Par JulienDuSud dans le forum Framework .NET
    Réponses: 4
    Dernier message: 28/12/2005, 10h42
  4. [jsp][servlet]appel servlet hors formulaire
    Par alexandra_ape dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 18/06/2004, 17h08
  5. [servlet] paramètre...
    Par yass dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 02/04/2004, 11h23

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