Conexión jsp

alicia
11 de Marzo del 2004
Creo una conexión por cada página jsp, sin embargo necesito crear una especio de fichero de conexion(como en php) para llamarlo cada vez que tenga que conectar con la base de datos pero no sé como hacerlo, no sé como crear javabeans o un pool de conexión que es lo que por donde debe de estar la solución

emilio
11 de Marzo del 2004
bien. en principio hay un error conceptual: es "malo" escribir esa clase se codigo en un jsp. porque? por que un cliente (frontend) no debe saber NADA sobre bases de datos, persistencia ni logica de negocio. estarias creando un acoplamiento muy grande entre las capas. lo cual va en contra de todos los principios de programacion OO. tambien esta el tema del encapsulamiento: OO propone escribir clases justamente para encapsular codigo y asi poder dividir una aplicacion en capas y evitar problemas comunes (inmantenibilidad, por ejemplo).
cual es la solucion? una forma correcta y sencilla para escribiruna aplicacion web con java es tener las sgte capas:
- presentacion (jsp + html)
- logica de presentacion (servlets)
- negocio (clases auxiliares)
- acceso a datos (clases DAO -> data access object)
- datos (DTO -> data transfer object)
cual es el sentido de esto? ejemplo: mi jsp tiene un formulario que envia un dato y el servidor me devuelve una lista de items.
el camino es el sgte:
- submit jsp
- llegan los datos a un serlvet. se manipulan en caso de ser necesario (formato, cambio de tipos, etc)
- el serlvet instancia una clase que es la que tiene la logica para hacer la consulta (DAO)
- llamado al metodo que consulta
- llega el pedido a la clase DAO. crea una conexion, hace el query, obtiene un resultado. lo guarda en una colleccion de DTOs.
- devuelve la coleccion al serlvet.
- el servlet recibe la coleccion. la convienrte a un tipo mas sencillo y la devuelve al jsp. manipula los datos de ser necesario. (idem anterior)
- el jps itera la coleccion e imprime los datos.
- final feliz.

se trata de un ejemplo burdo y sencillo. pero muestra cual es el camino que deben seguir los datos.
conceptos:
- jsp no sabe nada de ningun tipo de logica
- jsp no sabe que existe algo llamado "base de datos"
- el jsp habla solamente con el serlvet (puede haber muchos...)
- el serlvet manipula los datos (los convierte a tipos mas sencillo o viceversa, les da formato a las fechas ,etc).
- el serlvet habla con el jsp y con los DAO
- los DAO tienen la logica de acceso a datos (select, inserts, deletes, update)
- existen clases auxiliares que manejan logica de negocio (calculos, procedimientos, operaciones, etc)
- exiten DTOs, que lo unico que hacen es contener datos.

recomendaciones-> leer:
- pattern MVC
- pattern DAO (http://www.programacion.com/java/tutorial/patrones2/8/)
- pattern DTO (http://www.programacion.com/java/tutorial/patrones2/4/)
- especificacion api jdbc
- especificacion servlets.

cualquier duda o comentario no dudes es postearlo!
exitos muchos.-