Contenido
1 Introducción
2 Overview
3 Requerimientos
4 Manos a la obra
4.1 index.jsp
4.2 misFunciones.js
4.2.1 Función enviarDatosAjaxServlet
4.2.2 Función procesarRespuesta
4.2.3 Función valorXml
4.2.4 Función cargarContenidoDinamico
4.3 Servlet MiServlet.java
5 resultado.jsp
6 Conclusiones
7 Anexos
1 Introducción
Durante el desarrollo de un sistema web para mi tesis tuve algunos problemas asociados a Ajax y Java.
El problema general era que no sabía como comunicar dos tecnologías distintas, obtener datos con ajax y enviarlos al backend de la aplicación y desde ésta enviar una respuesta a ajax y desplegar lo que corresponda.
En Internet abundan los ejemplos, que hay que utilizar miAjax.responseText, miAjax.responseXML, etc. pero ningún ejemplo concreto y funcional, todo queda en teoría y poco de práctica.
Tampoco se habla mucho del tema de la codificación de datos, una cosa es enviar datos así como Dios los trajo al mundo y otra distinta es enviarlos y recibirlos tal cual, hablo específicamente de los caracteres especiales (ñ, tíldes, etc.), caracteres que son parte de nuestro lenguaje español (y que al parecer los gringos omiten en sus ejemplos, lo cual trae un par de dolores de cabeza a los de habla hispana).
Bueno, la verdad es que después de mucho averiguar, leer, probar y tomar un par de pastillas para el dolor de cabeza he logrado hacerlo y debo decir que es muy fácil, pero hay varios detalles que se deben tener en cuenta.
2 Overview
El ejemplo que veremos se trata de un demo de un sistema de reclamos. La idea es ingresar el nombre de la persona que reclama, el detalle del reclamo y la fecha de ingreso del reclamo.
Los primeros dos datos se harán simplemente utilizando un input y un textarea de html, mientras que para la fecha se utilizará un widget ajax.
Estos datos se enviarán a un servlet que los validará, de estar correctos los almacenará en una sesión y retornará una respuesta a la función ajax.
Una vez que se tenga la respuesta se procederá a realizar la acción correspondiente.
3 Requerimientos
- NetBeans 6.1
- Jmaki 1.7.3 (plugin de NetBeans 6.1)
NetBeans 6.1 se puede descargar gratis desde el sitio oficial en http://www.netbeans.org para Windows o Linux. Requiere instalado previamente el kit de desarrollo de java JDK, para la realización de este tutorial se utilizó la versión 1.6.0 update 6 y se puede descargar desde http://java.sun.com/javase/downloads/?intcmp=1281
Jmaki se puede descargar desde el administrador de plugines de NetBeans.
También se utilizó el servidor de aplicaciones GlassFish V2 UR2 que viene incluido en NetBeans 6.1.
4 Manos a la obra
Lo primero es crear un proyecto web en NetBeans 6.1, para esto se pincha el botón new project → Web → Web Application, le damos por nombre AjaxServlet u otro, presionamos next y luego cargamos el módulo Jmaki.
Debemos crear los siguientes recursos en el proyecto.
- index.jsp (viene por default).
- resultado.jsp
- MiServlet.java
- misFunciones.js
4.1 index.jsp
Una vez listo aparecerá una página index con un par de cosas. Eliminamos todo lo que esta entre los tags y agregamos lo siguiente:
<h1>Ingresar reclamo</h1>
<div id="error" style="color: red;"></div>
<form onsubmit="enviarDatosAjaxServlet(); return false;" >
<table>
<tr><td><b>* Nombre:</b></td><td><input id="nombre" name="nombre" size="20" maxlength="20" ><a:widget name="yahoo.tooltip" args="{context:['nombre']}" value="Ingrese su nombre aquí." /></input></td></tr>
<tr><td><b>* Comentario:</b></td><td><a:widget name="yahoo.tooltip" args="{context:['comentario']}" value="Ingrese el detalle del reclamo aquí." /><textarea id="comentario" name="comentario" rows="4" cols="25"></textarea></td></tr>
<tr><td><b>* Fecha:</b></td><td><a:widget id="fecha" name="dojo.dropdowndatepicker" /></td></tr>
<tr><td></td><td><input type="submit" value="Enviar"/></td></tr>
<input type="hidden" value="submit" />
</table>
</form>
Vamos a ver cada una de las partes:
<div id="error" style="color: red;"></div>
Aquí creamos un DIV de id error para agregar los errores de forma dinámica, esto es para no usar otra página web para desplegar el error. Esto es ideal para mostrar los errores al ingresar datos en un formulario o al querer loguearse a un sistema ya que no es necesario cargar toda una nueva página, es mucho mas rápido y mejora la usabilidad del sistema.
<form onsubmit="enviarDatosAjaxServlet(); return false;" >
Aquí comenzamos el form, donde tenemos el formulario de ingreso de datos. En vez de llamar directamente una página JSP o un Servlet, hacemos el llamado de una función javascript llamada enviarDatosAjaxServlet(), la cual veremos mas adelante.
<a:widget name="yahoo.tooltip" args="{context:['nombre']}" value="Ingrese su nombre aquí.">
Aquí tenemos un input de id nombre en el cual ingresamos el nombre de la persona que reclama. Si se fijan existe un tag extraño:
<a:widget name="yahoo.tooltip" args="{context:['nombre']}" value="Ingrese su nombre aquí.">
Ese tag corresponde a un widget de la bibliteca de Jmaki, específicamente a un tooltip Ajax de yahoo. Este tooltip lo encuentran en la paleta de Jmaki que pueden ver a la derecha del editor de NetBeans 6.1, simplemente lo arrastran y cambian el valor de context por el id del campo de datos, en este caso nombre.
El caso del textarea de comentario es igual al anterior, se arrastra el widget tootltip de yahoo y se cambia el valor de context a comentario.
<b>* Fecha:</b><a:widget id="fecha" name="dojo.dropdowndatepicker">
En el caso de la fecha utilizaremos un widget de Dojo llamado DropDownDatePicker el cual permite seleccionar la fecha desde un widget muy amistoso y bonito. Lo encuentran en la paleta de Jmaki y basta con arrastrar y soltar.
<input value="Enviar" type="submit">
<input value="submit" type="hidden">
Aquí simplemente agregamos el botón enviar y además la posibilidad de enviar los datos con solo presionar un Enter.
4.2 misFunciones.js
Hasta aquí todo va bien y muy fácil.
El tema ahora es obtener los datos del formulario y enviarlos al servidor para ser procesados. Este es el punto que más me costó. Primero fue difícil por que no sabia cómo obtener la fecha desde el DropDownDatePicker y segundo cómo obtener los caractéres especiales (ñs, tíldes, etc.). No den por sentado con que basta obtenerlos y enviarlos, si hacen eso verán que al otro lado los espacios aparecerán como %20 y cosas así.
A continuación veremos el código de la función enviarDatosAjaxServlet (el cual debe estar en el archivo misFunciones.js):
4.2.1 Función enviarDatosAjaxServlet
function enviarDatosAjaxServlet() {
//aqui cargo los valores seleccionados en los drop down date picker
var fecha = jmaki.getWidget('fecha').getValue();
//aqui obtengo el valor del comentario ingresado
var comentario = encodeURIComponent(document.getElementById("comentario").value);
//aqui obtengo el valor del nombre ingresado
var nombre = encodeURIComponent(document.getElementById("nombre").value);
//aqui envio la fecha, el comentario y el nombre al servlet MiServlet
//para almacenarlos en una sesion
jmaki.doAjax({ url : "MiServlet",
method : 'POST',
content : { 'nombre' : nombre,
'comentario' : comentario,
'fecha' : fecha
},
callback : function(req) {
procesarRespuesta(req);
}
});
}
El obtener la fecha en realidad es bastante simple, se utiliza la función jmaki.getWidget('fecha').getValue(); la cual retorna un String con la fecha seleccionada.
Para obtener los otros dos datos es necesario recurrir a document.getElementById("comentario").value (en el caso de obtener el comentario) y document.getElementById("nombre").value (en el caso de obtener el nombre). Lo segundo que hay que aplicar al resultado de esas “consultas” es la codificación de los caracteres, para esto utilizamos encodeURIComponent. De ésta manera aseguramos que al otro lado (en el servidor) los caracteres especiales lleguen como tales, pero se debe tener en cuenta que se debe hacer el proceso inverso (mas adelante lo veremos).
Para enviar los datos al servlet utilizamos una función de Jmaki llamada doAjax, la cual recibe como parámetros la url a la cual enviamos los datos, en este caso el servlet MiServlet, el tipo de método GET o POST, los datos que enviamos y el callback que se utiliza para obtener la respuesta del servlet.
En el lado del servidor obtendremos los datos a través del objeto request del servlet.
La función en callback llama a otra función llamada procesarRespuesta, la cual recibe como parámetro el request ajax (que viene con la respuesta del servlet).
La respuesta del servlet viene en formato XML, por lo que utilizaremos un responseXML para obtener la respuesta en vez de un responseText.
4.2.2 Función procesarRespuesta
function procesarRespuesta(respuesta) {
//aqui obtengo el archivo XML en una variable que envio el
//servlet como respuesta
var xml = respuesta.responseXML;
//aqui obtengo el valor del tag respuesta que esta en el xml
var res = valorXml(xml,'respuesta', 0);
//si la respuesta es ok significa que no hay errores
if(res == 'ok'){
window.location.href="resultado.jsp";
} else {
//si hay errores entonces muestro un mensaje
cargarContenidoDinamico('error', "Ocurrió un problema al enviar los datos, tal vez omitió el ingreso de alguno. Intente nuevamente.");
}
}
Lo primero es obtener el objeto xml desde el respuesta.responseXML.
Luego debemos obtener el valor de la respuesta que está entre los tag
El valor se almacena en una variable llamada res (que corresponde a un String o cadena de caracteres) y se verifica si hay o no errores. Si no hay errores se redirige el navegador a la página resultado.jsp, en caso contrario se carga el error en el DIV “error” sin cambiar de página utilizando la función cargarContenidoDinamico.
4.2.3 Función valorXml
function valorXml(xml, tagName, index) {
//si el tag no existe retorno null, en caso contrario retorno el valor del tag
if(xml.getElementsByTagName(tagName).length == 0)
return null;
return xml.getElementsByTagName(tagName)[index].childNodes[0].nodeValue;
La función valorXml busca el valor correspondiente al indice index en el tag tagName. Si no lo encuentra retorna null, en caso contrario retorna el valor.
4.2.4 Función cargarContenidoDinamico
function cargarContenidoDinamico(contenedor, texto) {
//aqui agrego el texto al div contenedor
document.getElementById(contenedor).innerHTML = texto;
}
La función cargarContenidoDinamico carga el valor obtenido desde el xml en el DIV error para desplegar el mensaje de error sin cambiar de página.
4.3 Servlet MiServlet.java
El servlet, por default viene con tres métodos, doGet, doPost y processRequest. Es en este último donde codificaremos (los otros dos quedan intactos).
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/xml charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
PrintWriter out = response.getWriter();
HttpSession sesion = request.getSession();
boolean error = false;
String fecha = request.getParameter("fecha");
if(fecha == null){
error = true;
}
String n = request.getParameter("nombre");
String nombre = null;
try{
nombre = URLDecoder.decode(n,"UTF-8");
if (nombre.equals(""))
error = true;
} catch (NullPointerException ex){
error = true;
}
String c = request.getParameter("comentario");
String comentario = null;
try{
comentario = URLDecoder.decode(c,"UTF-8");
if (comentario.equals(""))
error = true;
} catch (NullPointerException ex){
error = true;
}
if(error == false){
sesion.setAttribute("fecha", fecha);
sesion.setAttribute("nombre", nombre);
sesion.setAttribute("comentario", comentario);
out.println("ok ");
} else{
out.println("error ");
}
out.close();
}
Lo primero es fijarse que el contentType debe ser text/xml para indicar que devolveremos un xml.
En éste método creamos una sesión (que no tiene porque estar ligada a un user y password) para almacenar los datos ingresados previamente.
Como se dijo anteriormente, a través del request obtenemos los datos y los almacenamos en variables de tipo String.
El punto importante aquí es decodificar los datos codificados anteriormente para recuperar los caracteres especiales. Para ésto utilizamos el método estático URLDecoder.decode(n,"UTF-8"); el cual recibe como parámetro el String obtenido del request y el tipo de codificación. Será necesario importar la siguiente biblioteca: import java.net.URLDecoder;
La razón de almacenar los datos en una sesión es que ésta la utilizaremos en la página respuesta.jsp para desplegarlos en pantalla.
En el caso que no se tengan errores al obtener los datos, éstos se almacenan en la sesión y se envía la respuesta en xml simplemente agregando la linea out.println("
De ésta forma enviamos la respuesta al callback de la función doAjax de Jmaki.
5 resultado.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page pageEncoding="UTF-8"%>
<%@ page language="java" session="true"%>
<%
response.setHeader("Cache-Control","no-store");
response.setHeader("Pragma","no-cache");
response.setDateHeader("Expires",0);
HttpSession sesion = request.getSession();
String comentario = (String) sesion.getAttribute("comentario");
String nombre = (String) sesion.getAttribute("nombre");
String fecha = (String) sesion.getAttribute("fecha");
sesion.invalidate();
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Resultado</title>
</head>
<body>
<h1>Resultado</h1>
<table>
<tr><td><b>El nombre ingresado es:</b></td><td><%=nombre%></td></tr>
<tr><td><b>El comentario ingresado es:</b></td><td><%=comentario%></td></tr>
<tr><td><b>La fecha de ingreso del comentario es:</b></td><td><%=fecha%></td></tr>
</table>
</body>
</html>
Lo primero que hacemos aquí es definir la utilización de la sesión agregando el tag
<%@page language=”java” session=”true”%>
Luego obtenemos la sesión desde el request y obtenemos los datos, después invalidamos la sesión eliminando los datos de ésta.
Después simplemente mostramos los datos agregandolos con el tag <%=valor%>.
6 Conclusiones
Con ajax podemos crear una presentación mas decente de los datos y a la vez mas eficiente si nos preocupamos de que las funciones que carguemos sean livianas y de poco texto.
Gracias a las funciones expuestas en este simple demo, podemos cargar datos de forma dinámica para la muestra de errores sin necesidad de cargar una nueva página, lo que es mas rápido y eficiente.
También vimos que gracias a las funciones de la biblioteca de Jmaki podemos agregar widgets bonitos y que mejoran la usabilidad del sistema.
Y por último aprendimos a comunicar tecnologías distintas como son java con javascript (Ajax), manejando caracteres especiales, etc.
7 Anexos
Espero les sea de utilidad.
El código me lo piden dejando su correo en el blog y se los enviaré a la brevedad.
También tengo esta entrada del blog en un documento ODT y PDF (no me pidan formato DOC), se los reboto junto al código.
saludos !!!
EDITADO!!!
Subí el código a un servidor para que puedan hacer la descarga sin necesidad de enviarme sus correos (así no tienen que esperar a que yo lea el correo para rebotarlo a ustedes), si tienen problemas para la descarga seguimos con el método tradicional del correo electrónico.
Descarga
saludos !!!!
54 comentarios:
Hola Daniel, recibe un afectuoso saludo desde Salcajá, Guatemala.
Buscando informacion de Netbeans 6 tuve la suerte de toparme con tu pagina, y dejame decirte que es por mas interesante.
Me impresiono lo referente al chat, porque siempre, como dices en uno de tus comentarios, habia encontrado solo envio de texto, y me parecio interesante el manejo de objetos.
Me gustaria recibir los codigos de los siguientes aplicaciones: Demo sistema reclamos Ajax + Servlet + JSP en NetBeans 6.1
Sistemas distribuidos usando RMI
Web Service y Web Service Client en NetBeans 6.0.
Te deseo exitos, en todo lo que hagas, recuerda que el que comparte conocimiento, se queda con el doble.
Hola, no me dejaste tu correo y en el perfil de tu usuario no lo encuentro tampoco. Dejamelo acá y te reboto lo que me pediste.
saludos !!
Saludos nuevamente, te dejo mi correo checho25gt@yahoo.com, gracias por el codigo, es para perderle el miedo a netbeans.
Exitos, desde la tricentenaria Universidad de San Carlos de Guatemala.
Hola Daniel, muchas gracias por tus contribuciones, son de gran ayuda, en verdad que valoramos tu excelente trabajo, me podrías ayudar de nueva cuenta con la solucion o proyecto de este demo (codigo fuente), muchas gracias, mi correo es rlimon@itson.mx o therobert_xd@hotmail.com
muchas gracias por todo!
Felicidades, :)
Hola, soy nuevo en Servlets y jsp y creo que este manual me podría venir muy bien si me lo pudieras mandar en pdf junto con el codigo te estaría muy agradecido, mi cuenta de correo es esmasteres@hotmail.com.
Gracias de antemano.
Genial, me será de mucha ayuda. Podrías enviarme el documento pdf y el codigo a:
seqqueman@gmail.com
gracias, de verdad
El tutorial estuvo de 10. si podrias mandame el codigo, me seria de mucha utilidad.
Mi email es: hernandemo@gmail.com
Saludos!
Hola.
Es un gusto.
Mi consulta es la siguiente, tengo el NetBeans 6.1 original. Y, quisiera saber cuales son los pasos para instalalrlo en el Win XP. O sea, en términos de configuración y demás teniendo en cuenta que lo quiero instalar en mi PC la cual no está conectada a ningún servidor; hago mención de esto por que uno de los componentes del DVD es el Apache Tomcat 6.0.16.
Saludos cordiales.
Pablo D. Peralta
Hola de nuevo.
Mil disculpas por no pener mi email, aca lo dejo por si tiene alguna respuesta o guia a mi inaquietud.
Email: fortunato05@yahoo.com.ar
Saludos nuevamente.
Pablo D. Peralta
Estimado Pablo D. Peralta.
Para instalar Netbeans 6.1 no necesitas estar conectado a nada, ni siquiera necesitas Internet. El instalador de NetBeans 6.1 te permite instalar glassfish y tomcat, donde este último es opcional y viene desmarcado, si lo quieres instalar debes marcarlo.
Antes de instalar NetBeans debes instalar el JDK, yo estoy usando el 1.6 update 6 y funciona muy bien (lo descargas de la pagina de SUN http://java.sun.com).
Para instalar plugines en NetBeans si que necesitaras una conexión a Internet, de lo contrario puedes bajar los plugines en un ciber e instalarlos luego, los plugines tienen extensión .nbm
saludos !!
Hola nuevamente Daniel.
Muchas gracias por la pronta respuesta, seguiré sus consejos puesto que soy nuevo en esto.
Le hago otro pedido, usted tendrá tutoriales o manuales en .pdf o sitios. Donde pueda obtener todo lo referido a "JSP con AJAX" solmente. Si cuenta con este material, podría mandarmelo a este mail : appabper@gmail.com, si es tan amable.
Desde ya muchas gracias y voy a estar en contacto más seguido con usted; me interesa mucho este tema.
Saludos cordiales.
Hola nuevamente Daniel.
Muchas gracias por la pronta respuesta, seguiré sus consejos puesto que soy nuevo en esto.
Le hago otro pedido, usted tendrá tutoriales o manuales en .pdf o sitios. Donde pueda obtener todo lo referido a "JSP con AJAX" solmente. Si cuenta con este material, podría mandarmelo a este mail : appabper@gmail.com, si es tan amable.
Desde ya muchas gracias y voy a estar en contacto más seguido con usted; me interesa mucho este tema.
Saludos cordiales.
Hola
muy bueno el tutorial!!!
tendras el codigo del mismo
estoy aprendiendo esto de jmaki y la verdad me esta volviendo loco
muchas gracias
msenosiain@gmail.com
que tal, bueno tutorial espero me puedas enviar el tutorial en pdf y el codigo
muchas gracias
a mi correo es lestat_nm@yahoo.com.mx
Hola muy bueno el tutorial, por fa si me puedes enviar el codigo a fulgore11@hotmail.com
Gracias :)
Hola, quiero aprender Servlets y jsp sera que me puedes facilitar este ajax, me lo pudieras mandar a mi correo : reynaldo_agui@hotmail.com pdf y junto con el codigo te estaría muy agradecido
Gracias de antemano
HOLA MIL Y MIL FELICITACIONES .. ME PODRIAS MANDAR EL CODIGO A MI CORREO PORF A TE AGRADEZCO DE ANTEMANO, ebarrientos-78@hotmail.com
Un cariñoso saludo, Estube buscando inf. sobre este tema hace mucho te gradeceria eternamente si me pudiese enviar tu codigo y el maul en pdf a mi correo, estare eternamente agradecido, mil gracias.
perarce22@hotmail.com,
perarce22@yahoo.es,
perarce22@gmail.com
Muchas gracias compa, justo lo que andaba buscando, lo corri y anda al 100%. Saludos desde Guatemala.
Alguien podria hacer lo mismo en eclipse es que lo intento y no hay forma. No me roconoce las funciones del jmaki
Gracias mano! andaba buscando un ejemplo así, nada mas que hay un detallito, ya ejecute el código del paquete y sale la interfaz tal y como en las imágenes, pero no valora las entradas y cuando doy click en enviar, no hace nada, alguna idea de lo que pasa? te estaré muy agradecido por tu respuesta, mi mail: sp-peter@hotmail.com.
Saludos desde México!
Hola Daniel
Muchas gracias por la ayuda que me diste, tu explicación y la documentación de aquello que hiciste fue muy claro.
Saludos desde Brasil.
Elizabeth Suescun
Hola Daniel, me gustaria recibir el codigo en mi correo, rafael.guevara@gmail.com, de antemano gracias
Hola Daniel, me interesa mucho la idead de tu proyecto estoy haciendo algo parecido y me puede ser de mucha utilidad tu programa mi correo es:isisalejandriacastillo@yahoo.com.mx
Te lo agradeceria mil si me lo envias.
De antemano mil gracias por tu forma de explicar el procedimineto no sabes como me ayudo.
Epale grande tu aporte.. Eh querido ver el codigo fuente pero sale error .
Agradeceria si me lo pudieras mandar al mail ings_empsa@hotmail.com
Miles de gracias
¡Hola Daniel!.
Me interesó bastante tu proyecto, estoy aprendiendo JSP porque necesito realizar un proyecto en una materia, estudio Ingeniería en Sistemas Computacionales, así que espero obtener mucha ayuda con tu proyecto.
Mi e-mail es: alex_cyberuser@hotmail.com
Gracias de antemano por tu gran ayuda.
Saludos desde Villahermosa, Tabasco, México.
hola muy fantastico mi correo es roni_om@hotmail.com
me equivoque en mi correo es roni_om88@hotmail.com me interesa mucho tu aplicacion haber si me podes enviar porfavor
ENVIAME EL PROYECTO ES BUENO TU BLOG CMAL_YKA@HOTMAIL.COM
Muy interesante. Te pasaste. Se agradece!
Buen proyecto amigo, favor de enviar al my_messenger005@hotmail.com
SALUDOS
Hola daniel, has hecho un gran post, esta muy detallado, me gustaria que me enviaras el programa a mi correo ya que lo descargue y me arrojo error cuando estaba descomprimiendo; mi e-mail es: jarexalf@hotmail.com, estoy usando el sistema operativo windows 7, te agradezco tu ayuda hermano!
Pues vaya que fue toda una sorpresa encontrar tu blog, me has aclarado muchas dudas ya que estoy desarrollando un proyecto
Felicitaciones todo muy interesante.
hola amigo muchas gracias por tu blog me urge obtener tu codigo ya que estoy presentando un proyecto para la universidad y me pide manejar servlet mas jsp, estoy crudo con esto.
gracias
ocmering24@gmail.com
oye daniel de verdad es un gusto conocer gente como tu de esta manera podemos ser mejores dia a dia. sigue asi. me puedes mandar el codigo de toda la aplicacion de antemano muchas gracias. antonio_eh03@hotmail.com
Me sirvio de mucho la informacion que brindaste me podrias mandar la aplicacion gracias.
david.eguia.91@gmail.com
me parece excelente el ejemplo en tu blog .. mas bien me podrias ayudar enviandome un ejemplo completo de esta aplicacion .. mi correo es renzo_406_6@hotmail.com grasias de antemano
Hola Daniel, excelente tu explicación, me sirvió bastante y espero sigas compartiendo la sabiduría que Dios te dá. Saludos.
elias ake
Hola Daniel, he visto tu blog, esta muy interesante el tema del jmaki, soy nuevo en java y tengo la mejor intención de aprender a programar con java, jscript, etc, te agradecería infinitamente que me puedas enviar el proyecto que realizaste al correo: jberni@hotmail.com
Gracias anticipadas por el apoyo.
atte.
Juan.
hola que tal me podras pasar el codigo de tu aplicacion mi correo es ptb_adrian_7@hotmail.com
HOLA ME PODRIAS PASAR EL CODIGO AL CORREO ESQ LO NECESITO PARA VER SI ENTIENDO MEJOR MI CORREO ES sivic999@hotmail.com.
GRACIAS POR EL APORTE
buen ejemplo me podias enviar el codigo mi correo es delpiero_129@hotmail.com
por favor me envías el código... e-mail: alexander14-94@hotmail.com
hey amigo buen material, por favor si me pudieras pasar el codigo me servira de mucha ayuda....gracias de antemano mi correo es:winstoncurasi@gmail.com
Me puedes enviar el codigo ya que el link no funciona, ctordoya@gmail.com
Me puedes enviar el codigo ya que el link no funciona,
my_chemical-rose@hotmail.com de antemano mucisimas gracias
Hola me puedes enviar el codigo..el link no funciona
yaquelintorres.olvera@gmail.com
Me puedes enviar el codigo ya que el link ya no funciona,
zhaoran_li@hotmail.com de antemano mucisimas gracias ^^ !
hola me puedes enviar el codigo (mr5moises@hotmail.com), gracias
Me puedes enviar el codigo ya que el link no funciona,
pbmangela@hotmail.com de antemano mucisimas gracias
Soy de Costa Rica Saludos
esta chido tu aplicacion web.. podrias compartir el codigo: carlosbarreto123@hotmail.es
Te Agradesco
Genial tu programa hermano, eres grande.
Me seria de mucha utilidad para uno que estoy realizando.
Me lo podrias mandar a este correo por favor:
success.creator1@gmail.com
Publicar un comentario