16
Fernando Alonso Nicolás Serrano Servlets con acceso a Bases de Datos 21 de Abril de 2008

Fernando Alonso Nicolás Serrano

  • 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

Page 1: Fernando Alonso Nicolás Serrano

Fernando AlonsoNicolás Serrano

Servlets con

acceso a

Bases de Datos

21 de Abril de 2008

Page 2: 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• Ejemplo 2: Consultar una Base de

Datos

Page 3: Fernando Alonso Nicolás Serrano

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

Page 4: Fernando Alonso Nicolás Serrano

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

Page 5: Fernando Alonso Nicolás Serrano

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

Page 6: Fernando Alonso Nicolás Serrano

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

Page 7: Fernando Alonso Nicolás Serrano

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

Page 8: Fernando Alonso Nicolás Serrano

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

Page 9: Fernando Alonso Nicolás Serrano

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

Page 10: Fernando Alonso Nicolás Serrano

• 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.)

Page 11: Fernando Alonso Nicolás Serrano

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

Page 12: Fernando Alonso Nicolás Serrano

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

Page 13: Fernando Alonso Nicolás Serrano

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

Page 14: Fernando Alonso Nicolás Serrano

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

Page 15: Fernando Alonso Nicolás Serrano

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>

Page 16: Fernando Alonso Nicolás Serrano

Fernando AlonsoNicolás Serrano

Servlets con

acceso a

Bases de Datos

21 de Abril de 2008