Upload
tausiq
View
28
Download
0
Embed Size (px)
DESCRIPTION
Servlets con acceso a Bases de Datos 21 de Abril de 2008. Fernando Alonso Nicolás Serrano. Indice. Repaso de Servlets ¿Qué es un Servlet? Estructura de un Servlet – Ciclo de vida Repaso de JDBC Servlets con acceso a Bases de Datos Ejemplo 1: Escribir en una Base de Datos - PowerPoint PPT Presentation
Citation preview
Fernando AlonsoNicolás Serrano
Servlets con
acceso a
Bases de Datos
21 de Abril de 2008
Indice
• Repaso de Servlets– ¿Qué es un Servlet?– Estructura de un Servlet – Ciclo de vida
• Repaso de JDBC• Servlets con acceso a Bases de Datos• Ejemplo 1: Escribir en una Base de
Datos• Ejemplo 2: Consultar una Base de
Datos
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
Ejemplo: ServletOpinion.java<?xml version="1.0" encoding="ISO-8859-1" ?><web-app>
<servlet> <servlet-name>Opinion</servlet-name> <servlet-class>ServletOpinion</servlet-class> </servlet>
<servlet-mapping> <servlet-name>Opinion</servlet-name> <url-pattern>/opinion</url-pattern> </servlet-mapping>
</web-app>
ServletOpinion.java
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 Driver
ODBC Driver
ODBCDatabas
e
Aplicación Cliente
Derby Driver
DerbyDatabas
e
Driver
Database
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
• Se substituyen las líneas:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = ″jdbc:odbc:wombat″;
• Por las líneas:
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
String url = ″jdbc:derby:wombat″;
JDBC con base de datos Derby (opc.)
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
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
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
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
Ejemplo: SurveyServlet.java (opc.)<?xml version="1.0" encoding="ISO-8859-1"?><web-app ">
<servlet> <servlet-name>Survey</servlet-name> <servlet-class>SurveyServlet</servlet-class> <init-param> <param-name>resultsDir</param-name> <param-value> G:\Java\apache-tomcat-5.5.12\webapps\practicaServlet\tmp </param-value> </init-param> </servlet>
<servlet-mapping> <servlet-name>Survey</servlet-name> <url-pattern>/survey</url-pattern> </servlet-mapping>
</web-app>
Fernando AlonsoNicolás Serrano
Servlets con
acceso a
Bases de Datos
21 de Abril de 2008