Programación con JDBC (Java DataBase Connectivity ), Servlets y JSP (Java Server Pages) Autor: José Vicente Núñez Zuleta (jose@eud.com, josevnz@yahoo.com)
Puntos a tratar Qué es JDBC? Arquitectura de un programa JDBC. SQL y el modelo relacional (Repaso). Ejemplo de aplicación. Qué son Servlets? Arquitectura de un Servlet. Métodos de un Servlet.
Puntos a tratar Hola mundo, versión Servlet. Qué es JSP? Servlets, JSP y JDBC. Ejemplo de aplicación.
Qué es JDBC? JDBC es el API de JAVA para conectarse a base de datos. Está basada en ODBC, que a su vez se basa en X/Open CLI. Existen múltiples puentes JDBC para cada manejador de base de datos conocido, al igual que puentes JDBC-ODBC. JDBC utiliza SQL (Structured Query Languaje) para comunicarse con la base de datos.
Arquitectura de JDBC Aplicación JAVA Manejador JDBC Comando SQL Two tier arquitecture Manejador 100% JAVA Base de Datos Cojunto de resultados
SQL y el modelo relacional El proceso de diseñar una base de datos implica identificar a los objetos (entidades) a ser modeladas. Las entidades no están aisladas tienen relaciones. Las relaciones tienen diferentes grados de cardinalidad (uno a uno, uno a muchos, muchos a muchos). Normalización implica eliminar redundancia del proceso de almacenamiento de la base de datos.
SQL y el modelo relacional Existen varias formas de normalización, la más común es la tercera forma normal. Al final de este proceso las entidades se convierten en tablas, los atributos en clases y los objetos utilizan un OID (Object ID) para identificarse de manera única en la base de datos. Las relaciones de herencia y de agregación se modelan por claves foráneas.
SQL y el modelo relacional SQL (Structured Query Languaje) es un lenguaje que provee acceso a las bases de datos basadas en el modelo relacional usando un lenguaje uniforme. SQL cuenta con dos tipos de instrucciones: DDL (Data Definition Languaje) y DML (Data Manipulation Languaje). Las DDL permiten crear tablas, vistas (create table, create view, drop table, drop view).. Las DML permite seleccionar, actualizar o eliminar datos de las tablas en la base de datos (select, update y delete respectivamente).
SQL y el modelo relacional Sentencia SELECT select <lista de columnas> from <lista de tablas> where <criterio de filtrado> Sentencia UPDATE update <nombre de la tabla> set <lista de columnas y valores> where <criterio de filtrado> Sentencia DELETE delete from <lista de tablas> where <criterio de filtrado>
SQL y el modelo relacional Tablas, atributos, relaciones, claves (externas y de tabla) Normalización (reducir redundancia) PruebaEnLinea nid LONG Pregunta nid LONG stitulo TEXT(50) sdescripcion TEXT(2000) dfechainicio DATE dfechafinal DATE stitulo TEXT(50) nid/1 LONG (FK) (IE) Pertenece Categoria nid LONG stitulo TEXT(50) sdescripción TEXT(50) npuntuación INT npuntuaciónacumulada LONG nid/1 LONG (FK) (IE) Respuesta nid LONG stitulo TEXT(50) npuntuación INT nid/1 LONG (FK) (IE)
SQL y el modelo relacional Ejemplos de programa con JDBC. Haga un programa que use la orden delete.
Qué son Servlets? Son un reemplazo seguro y portable a CGI. Es un modulo dinámico que sirve a peticiones en un servidor Web. Corre por completo en la máquina virtual de JAVA y corre del lado del servidor. No tiene problemas de compatibilidad ya que corre del lado del servidor. Tiene como competidores a CGI, Server Side Javascript, PHP3, Cold Fusion o ASP.
Qué son Servlets? Razones para usar servlets: Eficiencia: se puede usar código que sólo es ejecutado la primera vez que se corre el Servlet. Persistente: a diferencia de CGI, puede mantener estados entre peticiones; El manejo de sesiones implica el almacen de objetos complejos en memoria. Portable: por estar hechos en JAVA Robusto: por estar hechos en JAVA tienen acceso a todo el JDK. Extensible: por medio de los mecanismos de extensibilidad de orientación a objetos. Seguro: por correr del lado del servidor hereda el modelo de seguridad provisto por el servidor Web. Esto sin contar las extensiones de seguridad del lenguaje como el JCE.
Arquitectura de un Servlet <<Interface>> javax.servlet.servlet init() getservletconfig() service() getservletinfo() destroy() javax.servlet.servletconfig getinitparameter() getservletcontext() getinitparameternames() java.io.serializable javax.servlet.genericservlet getservletcontext() getinitparameter() getinitparameternames() log() getservletinfo() init() getservletconfig() service() destroy() javax.servlet.http.httpservlet dodelete() doget() dooptions() dopost() doput() dotrace() getlastmodified() service()
Arquitectura de un Servlet Cliente Servidor Web HttpServlet dodelete() doget() dooptions() dopost() doput() dotrace()
Métodos básicos de un Servlet Init(): es donde comienza el servlet. Aquí se colocá código que se desea sea ejecutado sólo cuando carga el servlet. Service(): maneja las peticiones del cliente. Destroy(): cuando el servlet es desmontado se invoca este metodo. Es usado para hacer limpieza. DoGet() y dopost(): son identicos excepto que uno atiende las peticiones GET y el otro las POST. Ambos métodos reciben objetos del tipo HttpServletResponse y HttpServletRequest. getservletinfo(): retorna información del servlet, como autor, copyrigth, etc.
Hola mundo, versión servlet import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; public class HolaMundo extends HttpServlet { // Lo que llega al metodo GET lo enviamos al POST public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { dopost(request,response); } // Procesamos los parametros public void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { // Obtenemos los parametros que vienen de la forma String mensaje = request.getparameter("mensaje"); // Preparamos un PrintWriter para devolver una salida response.setcontenttype("text/html"); PrintWriter salida = response.getwriter(); salida.println("<html>"); salida.println("<head><title>hola mundo</title></head>"); salida.println("<head><title>hola mundo</title></head><body>"); if (mensaje!= null) { salida.println("<p>hola " + mensaje); } else { salida.println("<p>hola extraño"); } salida.println("</body></html>"); } }
Qué es JSP? Es una tecnología simple pero útil usada para generar HTML dinámico. Provee una manera de separar la presentación del contenido. El motor de JSP es sólo otro Servlet cuya extensión tiene correspondencia al tipo *.jsp Tiene definidas de manera implícita las siguientes variables: request, response, in y out (De los tipos HttpServletRequest, HttpServletResponse, BufferedReader, y PrintWriter respectivamente).
Qué es JSP? <html> <head><title>hola mundo</title></head> <body> <% String mensaje = request.getparameter( mensaje ); if (mensaje!= null) { salida.println("<p>hola " + mensaje); } else { salida.println("<p>hola extraño"); } %> </body> </html>
Servlets, JSP y JDBC
Ejemplo de aplicación Se desea una aplicación para guardar la tarjeta de presentación de un grupo de clientes en una base de datos.
Bibliografía Taylor Art. JDBC Developers Resource.. Informix Press. 1997. McCarty, Darian Cassady Luke. Java Distributed Objects. SAMS. 1999. Goodwill James. Developing Java Servlets. SAMS. 1999. Muller. J Robert. Database Design for Smarties, Using UML for Data Modeling. Morgan Kaufman. 1999. Godwill James. Developing Java Servlets. SAMS. 1999.