fernando alonso blázquez servlets con acceso a bases de datos 29 de abril de 2004
TRANSCRIPT
Fernando Alonso Blázquez
Servlets con
acceso a
Bases de Datos
29 de Abril de 2004
Indice
• Repaso de JDBC• Repaso de Servlets
– ¿Qué es un Servlet?– Estructura de un Servlet – Ciclo de vida
• Servlets con acceso a Bases de Datos• Ejemplo 1: Escribir en una Base de
Datos• Ejemplo 2: Consultar una Base de
Datos
JDBC
• API de Java para ejecutar sentencias SQL• JDBC posibilita básicamente tres cosas:
– Establecer una conexión con una base de datos desde Java
– Enviar sentencias SQL a través de dicha conexión
– Procesar los resultados
• La JDBC 3.0 API comprende 2 paquetes:– java.sql– javax.sql
JDBC de forma esquemática
ResultSet
Statement
Connection
DriverManager
JDBC-ODBC Bridge
ODBC Driver
ODBC Database
Aplicación Cliente
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = ″jdbc:odbc:wombat″;Connection con = DriverManager.getConnection(url);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(″SELECT a, b, c FROM Table2″);
While(rs.next()){ int i = rs.getInt(a); String s = rs.getString(b); Float f = rs.getFloat(c); System.out.println(ROW= + i + + s + + f);}
Utilización de JDBC 3.0 API
Servlets
• Programas en Java que se ejecutan en un servidor HTTP (servidor Web)
• Actúan como capa intermedia entre:– Petición proviniente de un Navegador Web u
otro cliente HTTP– Bases de Datos o Aplicaciones en el servidor
HTTPServidor Web
Servlet
BDexterna
BD
Aplicación
Cuándo y por qué usar Servlets
• Muchas peticiones desde navegador se satisfacen retornando documentos HTML estáticos, es decir, que están en ficheros
• En ciertos casos, es necesario generar las páginas HTML para cada petición:– Página Web basada en datos enviados por
el cliente• Motores de búsqueda, confirmación de pedidos
– Página Web derivada de datos que cambian con frecuencia• Informe del tiempo o noticias de última hora
– Página Web que usa información de bases de datos corporativas u otras fuentes del la parte del servidor• Comercio electrónico: precios y disponibilidades
Estructura de un HttpServlet
HttpServletMétodo init()
•Se ejecuta una sola vez al inicializar el Servlet
•Inicializar variables y operaciones costosas en tiempo de ejecución
Método destroy()
•Lo llama el servidor al “apagarse”
•Cerrar procesos en curso, liberar memoria, cerrar ficheros
Métodos doGet() o doPost()
•Recoger peticiones del usuario y ejecutar operaciones
•Mandar respuesta al usuario (en forma de HTML)
Otros métodos de usuario
Objeto HttpServletReque
st
Objeto HttpServletRespo
nse
Servlets con acceso a Base de Datos• Conexión a Bases de Datos
– Tarea importante y frecuente de los Servlets• Servlets
– Funciones de capa intermedia en sistemas con arquitectura de tres capas
• Ventajas:– Nivel intermedio: control de operaciones
contra la Base de Datos
– Drivers JDBC no tienen que estar en el cliente
– Se puede tener constancia de lo que ha hecho el usuario en peticiones anteriores
– Sincronización de peticiones
Estructura de un Servlet con acceso a DBHttpServlet
Método init()
•Establecer conexión con la Base de Datos
Método destroy()
•Cerrar la conexión con la Base de Datos
Métodos doGet() o doPost()
•Interacción con la Base de Datos
Bien en el propio cuerpo de estos métodos
Bien mediante llamadas a otros métodos de usuario
Otros métodos de usuario: actualizarBaseDeDatos()...
Objeto Connection
Ejemplo 1: Escribir en una Base de Datos
• Base de Datos Access– ServletOpinion2.mdb
• Data Source Name (DSN) – opinion
• Página HTML:– MiServlet2.html
• Servlet– ServletOpinion2.java ->
ServletOpinion2.class
• Arrancar servletrunner.exe
Ejemplo 2: Consultar una Base de Datos
• Base de Datos Access– Alumnos.mdb
• Data Source Name (DSN) – alumnos
• Página HTML:– Formulario2.html
• Servlet– ListaAlumnos.java ->
ListaAlumnos.class
• Arrancar servletrunner.exe