Tutorial:Combos dependientes con JSP, Ajax y Postgresql en Netbeans
Hola otra vez por aqui retomando el blog despues de un largo receso, como comprenderan con la familia y el trabajo se nos hace dificil a veces publicar algun post, pero bueno manos a la obra.
Este post es ha solicitud de unos compañeros que estan aprendiendo a trabajar con jsp, ajax y postgresql y necesitaban alguna guía práctica para trabajar la parte del llenado de combos de forma dependiente justamente utilizando ajax y obteniendo la data desde una base de datos.
Bueno, lo primero que debemos tener en cuenta es la estructura de tablas en la base de datos desde donde obtendremos la informacion. Para este ejemplo tome como ejemplo la siguiente estructura.
como podemos observar la base de datos se llama bd_tutorial y las tablas serian productos y detalle_producto respectivamente.
Una vez creado las tablas, ahora lo que hacemos es crear nuestro proyecto web al cual llamaremos webapp_ajaxDemo y comenzar armar nuestra estructura de archivos jsp, javascript y clases java, las cuales accederan a la informacion de la base de datos. Creamos el proyecto y generamos la siguiente estructura propuesta:
Ahora, lo que haremos sera ver como obtener la informacion de la base de datos, para esto vamos a trabajar nuestras clases java empezando por los beans en donde almacenaremos la informacion y terminando por las clases DAO , las cuales seran las que recogeran la informacion de la base de datos. Lo primero es tener la estructura de los archivos productoBean.java y detalleProductoBean.java, mas o menos seria la siguiente:
Una vez detallada la clases Bean, ahora nos enfocamos en las clase BO y DAO, yo siempre hago esta distribucion para tener en cuenta el manejo de capas, esto ayuda mucho. Ahora veremos la estructura de la clase productoBo.java, aqui es donde definiremos los metodos que tendran acceso a los métodos de las clase DAO.
Los métodos que usaremos getProducto y getDetalleProducto los cuales nos devuelven como resultado un ArrayList de Beans esto con la finalidad de poder tener toda la informacion y poder seleccionar lo necesario. Ademas hacen referencia a métodos de las clases DAO la cuales ya tenemos definidas.
Ahora, veremos las estructuras y codificacion de las clases que obtienen la información de la BD productoDao.java y detalleProductoDao.java respectivamente:
Para las clases productoDao.java y detalleProductoDao.java, por cuestiones de espacio solo estoy mostrando los métodos que acceden a la información, se asume que ustedes ya tienen definido los métodos de conexion y desconexion respectivamente.
productoDao.java:
detalleProductoDao.java:
Una vez ya completada la estructura y codificacion de las clases java, ahora pasaremos a codificar las paginas JSP, lo primero que haremos sera mostrar el primer combo que serian los productos, para esto mostraremos una parte de la codigo del archivo index.jsp la cual sufrira alguna moficiacion mas adelante, por el momento tenemos lo siguiente:
Fijemos en los recuadros de color rojo, en el primer recuadro lo que hago es importar la clase productoBo y productoBean, dado que en el primero se tiene el metodo que obtendria la informacion de los productos, y en el segundo recuadro es donde muestro los productos los cuales son almacenados en beans del tipo productoBean por eso la declaracion en el primer recuadro.
Deben tener en cuenta que en la linea de código en donde muestro el detalle del producto en la opcion value el combo se esta poniendo el id del producto, esto para que cuando mandemos el producto se tome el id para poder realizar la busqueda en el detalle y no el nombre del producto.
Ahora veremos la parte de AJAX, para esto tenemos un archivo javascript ajax_producto.js en el cual tendremos el siguiente código:
Vemos que estamos declarando la funcion getDetalleProducto al cual le estamos enviando como parametro id_pro, luego en la parte mas abajo vemos que hacemos la referencia a la pagina ajax_detalleProducto.jsp, que en la que recuperaremos la informacion de la tabla de detalles enviando como parametro el id_pro y ademas un identificador para hacer refresco a nuestras busquedas, esto por un problema en algunos navegadores con el manejo de su cache. Y la funcion resultado_detalle que es donde le indicamos donde mostrarnos el resultado.
Fijarse bien en esto ultimo ya que como veran estamos utilizando el identificador del elemento en donde pondremos el resultado que para este caso es result_detalle.
una vez terminado esto lo que haremos sera codificar la pagina que obtendra la informacion del detalle de producto, que en este caso es ajax_detalleProducto.jsp
Ahora solo nos queda adecuar la pagina index.jsp para que pueda hacerse la invocación, mostraremos el codigo segmentado por cuestiones de espacio.
En este primer segmento, podemos ver que aqui se hace la llamada a la libreria javascript ajax_producto.js la cual contiene a la función getDetalleProducto, fijense en el evento onchange del combo, alli es donde llamamos a la funcion que retornaria la informacion del detalle.
Ahora para el segundo segmento vemos el id=”result_detalle” que es el identificador que se utiliza para mostrar el combo con el detalle.
Y practicamente esto seria todo. Se debe tener en cuenta que esto se hizo de forma rápida solo para cuestiones de enseñanza, esto se puede mejorar notablemente tal vez utilizando algun framework como jQuery o mejorando el código propuesto. Espero les sea de utilidad para algunos que recien empiezan con esto
PD: Los errores ortográficos son aproposito.
Descarga el ejemplo: webapp_ajaxDemo (Ejemplo modificado para trabajar con 3 combos)









El tutorial es muy bueno pero si es que van ayudar es mejor que lo hagan bien porque no tambien poner el proyecto en un archivo comprimido para poder bajarlo, como va a decir
PD: Los errores ortográficos son aproposito
esto puede ocacionar confuncion ya que a la hora de “provar” el “tutorial”
si van ayudar que lo hagan bien y si no mejor no hacerlo
Hola aprendiz, bueno tomare en cuenta lo que dices de colocar el archivo comprimido en un servidor hosting para que puedan descargarlo, ya que no cuento con uno propio.
Con respecto al PD no entiendo en que te pueda confundir, yo siempre coloco esta frase porque considero que los usuarios que leen el tutorial ven el fondo de la información y a veces se nos pasa una que otra palabra(s) a la que le falte talvez una tilde o este mal escrita.
Ahora cuando dices “si van ayudar que lo hagan bien y si no mejor no hacerlo”, yo te pregunto a ti, te ayudo el tutorial??
Si fuera asi, no es mas facil decir “bueno gracias por la ayuda, pero te aconsejo que mejores tu ortografia”.
El unico consejo que puedo dar, es que debes aprender a valorar el esfuerzo y tiempo que se toman las personas para poder trasmitir conocimiento sobre un tema a los que no lo tienen o lo necesitan.
De todos modos agradezco tu tiempo para leer el blog.
Saludos.
Buen Dia, Me gusto mucho el tutorial, me parece que tiene las cosas esenciales que se necesitan para aprender a manejar JSP, sin embargo para los que somos nuevos en el tema nos quedan dudas y no se si fuese posible que se publicara el codigo fuente de esta actividad, con el fin de realizar una comparacion con lo que realicem haber en donde cometi el error ya que no logre hacer funcionar la pagina.
Gracias
Hola Camilo, si claro de todas maneras estoy planeando subir estos ejemplos a un hosting, como menciones en un comentario anterior no dispongo de uno propio, pero en todo caso te estoy enviando el ejemplo a tu correo para que lo puedas revisar.
Saludos.
¡¡Muchísimos millones de gracias!! Estaba buscando exactamente un ejemplo como este (siempre los encontraba con php), lo único que he tenido que cambiar es la base de datos (a MySQL) y ahora me pelearé para hacer 7 combos dependientes. Gracias de nuevo por el tutorial tan claro y por poder descargar el proyecto para netbeans.
Saludos
Hola de nuevo,
He probado con 3 combos y no soy capaz de montarlos, ¿tienes algún ejemplo? ¿Podrías ayudarme?
Gracias.
Un saludo.
Que tal, muy interesante el ejemplo, lo mejor de todo es que lo tienes en jsp casi no hay referencias del mismo; te agradezco mucho me ayudes con el código del ejemplo ya que el link no se encuentra disponible.
Saludos,
GTOMALA.
GYQ. – ECU.
Hola, muy bueno el tutorial, pero si creo necesitamos el proyecto porque hay cosas que no me quedan claras, soy nueva en esto y la verdad te agradeceria muchisimo si me envia la informaciona mi e-mail, porq en definitiva la estoy necesitando, necesito realizar un proyecto utilizando estas herramientas pero no son mi fuerte y me toca empaparme del tema y este tipo de tutoriales me ayudan muchisimo,, muchas gracias por dedicar parte de tu tiempo en esto… porfis espero recibir noticias suyas.
P.D. Cualquier tipo de ejemplo que tenga que ver con estas herramientas sera muy bien recibido y aprovechado… Millon gracias por su tiempo.. Buen Dia..
Saludos
Fernanda
Muy wen post!
gracias al ejemplo que hiciste pude hacer lo que necesitaba
Saludos
Alex.
Amigo muchas gracias por el tutorial la verdad me ayudaste bastante .solo me falta adecuarlo a struts 1.3 ,pero eso no es problema ya lo hare!.. me gustaria que postees un tutorial de ajax para validar campos de textos si puedes… de antemano muchas gracias ..te pasaste!!…..chau cuidate!
holasmuy bueno, pero en vez de llenar un cmbo quiero llenar una tabla si tuviera un ejemoplo o un blog seria brabazo y si puedes mandarme este tutorial por mi correo mejro aun mil gracias toy que me peleo con este con mi codigo y no me sale.
a veces las cosas mas sencillas son las mas complejas….
mi correo es malpicar.wd@gmail.com ó
wdmalpica@hotmail.com
Hola … excelente tutorial, muy claro
podrias enviarme el codigo fuente? no pude hacer que se ejecutara la pagina
podrias enviarme el codigo fuente
gracias
rihardgm_20@hotmail.com
Excelente ayuda, me sirvio muchisimo, salvo que mi conexion era a Oracle.
Gracias
A pesar que hay quienes no agradecen, si habemos otros que apreciamos el esfuerzo que hacen personas como usted. Por un malagradecido habemos miles que sí apreciamos.
Muchas gracias no sabe de que apuro me sacó despues de tanto buscar.
Mil Gracias !!!!!!!!!!
Buen dato amigo de verdad muchas gracias…. saludos desde Peru.
muy bueno y práctico, pero tambien me gustaria aprender con RichFaces talvez podrias publicar un tutorial, muchas gracias Saludos desde Peru.
El ejemplo esta muy bueno pero mi problema es que nececito hacer la consulta a una BD de access.
mi correo es killjaden21@hotmail.com
agradeceria muxo un poco de ayuda……
Es muy bueno lo que ustds hacen de compartir sus conocimientos.
Felicitaciones
podrias enviarme la bd ya que no se que tipo de datos le has dado algunoa campos
gracias
mjaramillom_1@hotmail.com
podrias enviarme el codigo fuente, y la db
mjaramillom_1@hotmail.com