/*
* appletsimple.java
*
* Modificado el 15 de Abril de 2004
*/
package roberto;
import java.net.*;
import java.io.*;
/**
*
* @author Roberto Canales
*/
public class <b>appletsimple</b> extends java.applet.Applet {
/** Initializes the applet appletsimple */
public void <b>init</b>() {
initComponents();
}
/** This method is called from within the init() method to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
private void <b>initComponents</b>() {
label1 = new java.awt.Label();
mensajeenviar = new java.awt.TextArea();
label2 = new java.awt.Label();
mensajerecibir = new java.awt.TextArea();
botonenviar = new java.awt.Button();
setLayout(new java.awt.GridLayout(5, 1, 2, 5));
label1.setAlignment(java.awt.Label.CENTER);
label1.setForeground(new java.awt.Color(51, 51, 255));
label1.setText("Introduzca el mensaje a enviar al servidor");
add(label1);
add(mensajeenviar);
label2.setAlignment(java.awt.Label.CENTER);
label2.setForeground(new java.awt.Color(255, 0, 0));
label2.setText("Mensaje recibido del servidor");
add(label2);
add(mensajerecibir);
botonenviar.setLabel("Pulsar para conectar al servidor");
botonenviar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
botonenviarActionPerformed(evt);
}
});
add(botonenviar);
}
private void <b>botonenviarActionPerformed</b>(java.awt.event.ActionEvent evt) {
String s_textoaenviar = mensajeenviar.getText();
mensajerecibir.setText("Simulacion: " + <font color="#0000FF">peticionPost</font>(s_textoaenviar));
}
// enviamos la peticion por post
String <font color="#0000FF"><b>peticionPost</b></font>(String mensaje) {
URL miurl = null;
String cadenaaux = null;
String cadenaretorno = "";
String consulta = "param1=" + URLEncoder.encode(mensaje);
try {
// recuperamos la direccion de servidor destino
String host = this.getCodeBase().getHost();
// elegimos la URI del recurso a invocar
String peticion = "/servlet/servletsimple";
// montamos la direccion base
miurl = new URL(getCodeBase(),peticion);
// abrimos la conexion
URLConnection conexion = miurl.openConnection();
// aactivamos la salida
conexion.setDoOutput(true);
// Creamos el stream de escritura
ObjectOutputStream buffersalida = new ObjectOutputStream(conexion.getOutputStream());
// montamos un array de elementos para enviarlos
int array[] = new int[10];
// inicializamos el array
for(int i=0;i <array.length;i++)
{
array[i] = i*3;
}
// escribimos el objeto
<font color="#FF0000"> buffersalida.writeObject(array);
</font> // enviamos
<font color="#FF0000"> buffersalida.flush();
</font> // Creamos el Stream de lectura
<font color="#FF0000"> ObjectInputStream bufferentrada = new ObjectInputStream(conexion.getInputStream());
</font> // creamos la referencia que recogera los datos
<font color="#FF0000"> String respuesta[];
</font> // leemos la respuesta
<font color="#FF0000"> respuesta = (String [])bufferentrada.readObject();
</font> // iteramos por la respuesta y montamos el mensaje
<font color="#FF0000"> for(int i=0 ; i < respuesta.length; i++)
{
cadenaretorno += (respuesta[i] + "\n");
}
</font>
buffersalida.close();
bufferentrada.close();
}
catch (Exception e)
{
return "Error al generar url " + e.getMessage();
}
return cadenaretorno;
}
// enviamos por get la petición
String <b>peticionGet</b>(String mensaje) {
URL miurl = null;
String cadenaaux = null;
String cadenaretorno = "";
try {
String host = this.getCodeBase().getHost();
String peticion = "/servlet/servletsimple?param1=" + URLEncoder.encode(mensaje);
miurl = new URL(getCodeBase(),peticion);
InputStream buffer = miurl.openStream();
BufferedReader bufferreader = new BufferedReader(new InputStreamReader(buffer));
while( (cadenaaux = bufferreader.readLine()) != null) {
cadenaretorno += cadenaaux;
}
buffer.close();
}
catch (Exception e) {
return "Error al generar url " + e.getMessage();
}
return cadenaretorno;
}
// Variables declaration - do not modify
private java.awt.Button botonenviar;
private java.awt.Label label1;
private java.awt.Label label2;
private java.awt.TextArea mensajeenviar;
private java.awt.TextArea mensajerecibir;
// End of variables declaration
}
Muy interesante y muy útil , gracias.
Tengo una pregunta:
como podriamos pasar un arraylist de objetos (como objeto persona con atributos de nombre, apellido, edad, etc) a un applet ? siguiendo el ejemplo presentado.
Hola, sería igual.
Prueba primero a mandar/recibir un objeto serializable y luego prueba a mandar un array de esos objetos.
De todos modos, a estas alturas (el tutorial tiene 14 años) probablemente no sea el mejor modelo para hacer aplicaciones reales (bien si es simplemente por aprender o por algún problema concreto en el que requieras un applet por comunicarte con la máquina del cliente). Ya los applets están en deshuso (seguridad) y casi el modelo estandar de comunicación es json y servicios rest