Establecer una comunicación entre un applet y un servlet

2475 vistas

Existen varias maneras para establecer una comunicación entre un applet y un servlet. Los dos siguientes métodos no son exclusivos de los servlets, por lo que pueden usarse entre 2 aplicaciones cualesquiera.


El método más cercano al modo de funcionamiento de un httpServlet es una comunicación HTTP. Esta tiene la ventaja de usar (en general) el puerto 80, por lo que evitará más facilmente los firewalls. La consulta HTTP del applet puede hacerse por GET o por POST (multipart).



java
  1. /** Envio de datos por GET */
  2. URL url = new URL("http://localhost/servlet?llave1=valor1&llave2=valor2");
  3. URLConnection conn = url.openConnection();





java
  1. /** Envio de datos por POST */
  2. URL url = new URL("http://localhost/servlet");
  3. String data = "llave1=valor1&llave2=valor2");
  4. URLConnection conn = url.openConnection();
  5. conn.setDoOutput(true);
  6. OutputStreamWriter osw = new OutputStreamWriter(conn.getOutputStream());
  7. osw.write(data);
  8. osw.flush();
  9. osw.close();





java
  1. /** recuperación de la respuesta del servlet */
  2. BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
  3. String linea;
  4. while ((linea = br.readLine()) != null) {
  5.         /** gestión de las líneas */
  6. } br.close();



Para enviar la respuesta a partir del servlet, tendremos que usar el OutputStream del HttpServletResponse.



java
  1. /** respuesta del servlet */
  2. String texto = "...";
  3. PrintStream out = new PrintStream(response.getOutputStream());
  4. out.println(texto);
  5. out.close();



Nota: para el paso de datos (llaves o valores), si se emplean carácteres especiales, tendremos que usar URLEncoder:



java
  1. llave1 = URLEncoder.encode(llave1, "UTF-8")