Foros del Web » Programación para mayores de 30 ;) » Java »

applets y servlets

Estas en el tema de applets y servlets en el foro de Java en Foros del Web. a ver si alguien me puede dar una idea de como hacer esto, xq no se x dnd cogerlo quiero hacer una aplicacion para reconocer ...
  #1 (permalink)  
Antiguo 23/10/2006, 05:27
 
Fecha de Ingreso: junio-2006
Mensajes: 55
Antigüedad: 17 años, 10 meses
Puntos: 0
applets y servlets

a ver si alguien me puede dar una idea de como hacer esto, xq no se x dnd cogerlo

quiero hacer una aplicacion para reconocer los usuarios registrados en una base de datos, y mi idea es hacer un applet donde esten las cajas d texto, y que le pase el login y password a un servlet que se conectara a la base de datos y dira si esta registrado o no, o es el administrador, alguein me puede decir mas o menos como hacerlo???porque nos e como empezar.muchas gracias
  #2 (permalink)  
Antiguo 24/10/2006, 01:31
Avatar de Valkam  
Fecha de Ingreso: junio-2006
Ubicación: Sevilla
Mensajes: 157
Antigüedad: 17 años, 10 meses
Puntos: 0
Comunicacion entre Applets y Servlets

Hola nenuka!

En primer lugar, no entiendo muy bien por que quieres utilizar un applet para esto. Creo que lo mas conveniente es que situes las cajas de texto para el usuario y login en un formulario HTML y este lo proceses con un servlet o una página JSP.

En cualquier caso, si por algún motivo extraño necesitas utilizar obligatoriamente un applet en el lado del cliente, una forma de comunicarte con un servlet es a través de HTTP Tunneling. Solo podrás comunicarte con un servlet que esté en el servidor donde tengas el applet de lo contrario tendrás problemas de seguridad y el applet no te dejará comunicarte a no ser que lo firmes digitalmente.

La comunicación mediante HTTP Tunneling se basa en peticiones GET o POST desde el applet a un servlet determinado mediante las clases URL y URLConnection.
En el servlet tendrás que recoger los datos de la petición (mediante el buffer de entrada del objeto HttpRequest) y devolver una salida.

Si con esta información no te es suficiente, si quieres te puedo facilitar un ejemplo
  #3 (permalink)  
Antiguo 25/10/2006, 09:24
Avatar de Erick_pm  
Fecha de Ingreso: abril-2004
Mensajes: 55
Antigüedad: 20 años
Puntos: 1
amigo Valkam , suena muy interesante esa comunicación mediante HTTP Tunneling, si no es molestia me gustaría contar con dicho ejemplo. Mi correo es [email protected].

Muchas gracias de antemano.
  #4 (permalink)  
Antiguo 26/10/2006, 06:11
Avatar de Valkam  
Fecha de Ingreso: junio-2006
Ubicación: Sevilla
Mensajes: 157
Antigüedad: 17 años, 10 meses
Puntos: 0
Ejemplo HTTPTunneling

Saludos a todos. Antes de poneros el codigo os cuento un poco de que va esta historia. El objetivo es conseguir una comunicación con el servidor a través del protocolo HTTP, es decir, por el puerto 80.
¿Por que haver esto?...se puede utilizar en millones de casos. Los applets se ejecutan siempre dentro de un marco de seguridad denominado 'sandbox'. Entre otras cosas no permite acceder a los recursos de la máquina cliente que alberga finalmente el applet ni realizar conexiones remotas con una máquina que no sea el servidor desde donde se ha descargado el applet.

Si queremos "saltarnos" estas restricciones de seguridad, estamos obligados a firmar digitalmente el applet y el usuario debe admitir este certificado de seguridad para poder usarlo.

Si por cualquier cuestión necesitamos comunicarnos con un servidor una posibilidad es usar como puente nuestro propio servidor. Un applet unicamente permite comunicarse sin problemas con el servidor desde el cual fue descargado mediante una petición GET o POST por el puerto 80.
Podemos por ejemplo comunicarnos con un servlet en el servidor y este a su vez puede hacer llamadas a servicios web o lo que querais y mandar la respuesta hacia el applet.

Lo realmente bueno que tiene esta técnica es que se pueden intercambiar objetos entre cliente (applet) y servidor (servlet) mediante serializacion. Me voy a centrar en este ejemplo. Es un ejemplo muy basico y no contempla por ejemplo el poder pasar parametros en la peticion al servidor.

Código:
//En el lado del cliente, en el applet

//Supongamos objeto implicito es el applet
URL codeBase = this.getCodeBase(); //Devuelve la URL desde donde se //descargo el applet

//Construimos la URL del servlet que procesara la peticion
String protocol = codeBase.getProtocol();
String server = codeBase.getHost();
int port = codeBase.getPort();
String target = "/pruebaServlet";

URL servlet = new URL(protocol,server, port, target);
 
/*Creamos la conexion con el servidor*/
URLConnection connection = servlet.openConnection();
connection.setDoInput(true); //Permitimos datos de respuesta
connection.setDoOutput(true); //Vamos a enviar datos de salida
connection.setUseCaches(false); //Desactivamos cache por si realizamos //varias comunicaciones

/*Ahora indicamos en la cabecera de la peticion POST que tipos de datos viajan. Vamos a enviar un objeto al servidor asi que enviamos el nombre de su clase. Para poder enviar objetos, estos tienen que ser serializables, es decir, implementar la interfaz Serializable. Para simplificar el ejemplo usaremos por ejemplo Date que es serializable*/

Object obj = new Date();

connection.setRequestProperty("Content-Type", "java-internal/" + obj.getClass().getName());

/*Enviamos la peticion al servidor. Para eso hay que meter el objeto en el flujo de salida de la conexion */
ObjectOutputStream output;
output = new ObjectOutputStream(connection.getOutputStream());
output.writeObject(obj);
		
output.flush();
output.close();

/*Ahora recibimos la respuesta en el flujo de entrada. Supongamos que se nos devuleve un String*/
ObjectInputStream input = new ObjectInputStream(connection.getInputStream());
Object response = input.readObject();

String str = (String) response;
Este es el codigo del servlet que procesa la peticion. Lo unico que hace es recoger la fecha que le hemos enviada, pasarla a String y devolvernosla como eco. debe llamarse, como hemos construido en la URL, pruebaServlet

p
Código:
ublic class pruebaServlet extends HttpServlet {
  	

public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
      throws ServletException, IOException {
    
	doPost(request, response);
}

	public void doPost(HttpServletRequest req, HttpServletResponse res)
		throws ServletException, IOException {
	
		//Recogemos los datos de la peticion
		ObjectInputStream input = new ObjectInputStream(req.getInputStream());

	Object dataInput;
	dataInput = input.readObject();

Date inputDate = (Date) dataInput;

String response = dataInput.toString();
Object obj = response;

//Especificamos que la respuesta será un objeto serializado
res.setContentType("java-internal/" + obj.getClass().getName());
		
ObjectOutputStream output = new ObjectOutputStream(res.getOutputStream());

output.writeObject(obj);
		
output.flush();
output.close();
	}
}
Y eso es todo. Espero que os sea de ayuda
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:29.