OVH Cloud OVH Cloud

executer une servlet à partir d'une applet

2 réponses
Avatar
Thierry
bonjour,


j'ai crée une servlet toute simple qui permet de créer un dossier sur le
serveur.
**************
import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

public class Serv extends HttpServlet

{

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException

{

// ObjectInputStream inputFromApplet = null;

try {

// inputFromApplet = new ObjectInputStream(request.getInputStream());

// new File((String)inputFromApplet.readObject()).mkdir();

log("avant mkdir");

new File("/tmp/toto").mkdir();

log("apres mkdir");

//inputFromApplet.close();

} catch(Exception e) { log(e.getMessage()); }

}

}


**************

lorsque je l'exécute directement en l'appelant par mon navigateur, cela
fonctionne :

http://localhost:8180/servlet/maservlet

Par contre lorsque j'utilise une applet pour l'executer cela ne fonctionne
pas. Voici le code :

***************
import java.applet.*;

import java.io.*;

import java.awt.*;

import java.awt.event.*;

import java.net.*;

public class Client extends Applet {

Button b;

TextField t;

public Client() {

b = new Button("mkdir");

t = new TextField("tata", 50);

setLayout(new FlowLayout());

add(b);

add(t);

b.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

try {

t.setText("debut connexion...");

URLConnection servletConnexion = new
URL("http://localhost:8180/servlet/Serv").openConnection();

servletConnexion.setDoOutput(true);

t.setText("connexion...");

ObjectOutputStream outputToServlet = new
ObjectOutputStream(servletConnexion.getOutputStream());

t.setText("output...");

outputToServlet.writeObject("toto");

t.setText("ecriture...");

outputToServlet.flush();

outputToServlet.close();

t.setText("fin...");

} catch(Exception ex) { t.setText(ex.toString()); }

}

}

);

}

}

***************

le message fin s'affiche bien mais le dossier n'est pas créé.

quelqu'un aurait il une idée ?
Cela vient il d'un problème de sécurité, d'un problème de syntaxe de mon
applet ?

Je vous remercie d'avance
srmt
t

2 réponses

Avatar
Damien Lecan
le message fin s'affiche bien mais le dossier n'est pas créé.
Et les logs du côté du serveur web, ils t'indique que la requêtes est

bien passé ? Le getResponseCode() te donne quoi ?

De plus, pour moi, on ne fait de setDoOutput(true) que lorsque l'on
utilise la méthode HTTP POST ...


Damien

Avatar
captainpaf
salut,

normal tu n'as pas codé la méthode post dans ta servlet et c'est celle
ci que tu appelles depuis ton applet..