Il existe différentes façons pour établir une communication entre une applet et une servlet. Les deux méthodes suivantes ne sont pas propres aux servlets, et peuvent être aussi utilisées entre 2 applications quelconques. La méthode la plus proche du mode de fonctionnement d'une httpServlet est une communication HTTP; elle a l'avantage d'utiliser (en général) le port 80, et donc de franchir plus facilement les firewalls. La requête HTTP de l'applet peut se faire soit par GET, soit par POST (multipart).
/** Envoi de données par GET */
URL url = new URL("http://localhost/servlet?cle1=valeur1&cle2=valeur2");
URLConnection conn = url.openConnection();
/** Envoi de données par POST */
URL url = new URL("http://localhost/servlet");
String data = "cle1=valeur1&cle2=valeur2");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter osw = new OutputStreamWriter(conn.getOutputStream());
osw.write(data);
osw.flush();
osw.close();
/** Récupération de la réponse de la servlet */
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
/** traitement des lignes */
} br.close();
Pour envoyer la réponse à partir de la servlet, il suffit d'utiliser l'OutputStream de l'HttpServletResponse.
/** Réponse de la servlet */
String texte = "...";
PrintStream out = new PrintStream(response.getOutputStream());
out.println(texte);
out.close();
Remarque: pour le passage des données (clés ou valeurs), si des caractères spéciaux sont employés, utiliser URLEncoder :
cle1 = URLEncoder.encode(cle1, "UTF-8")
|