Servlets con  acceso a  Bases de Datos   Manuel Williams Alcedo
Índice 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
Utilización de JDBC 3.0 API 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); }
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 HTTP Servidor Web Servlet BD externa 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 HttpServlet Mé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 HttpServletRequest Objeto HttpServletResponse
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 DB HttpServlet 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 Tomcat 5.5
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 Tomcat 5.5
para insertar los datos en una tabla de una base de datos: Insertar el import de sql: import java.sql.*; Insertar un objeto Connection como miembro de la clase SurveyServlet: Connection connection; Insertar en la función init la conexión con el ODBC try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url="jdbc:odbc:pruebaODBC"; connection=DriverManager.getConnection(url);  } catch(Exception e) { System.out.println("Error al crear la conexión"); e.printStackTrace(); }
Insertar en la función doPost el código que ejecuta el Insert: String sql = "INSERT INTO DatosWeb "; sql += "(Tamano,Comentarios) "; sql += "VALUES ('" + req.getParameter("employee") + "', '"; sql += req.getParameter("comment") + "')"; System.out.println(sql); try { Statement statement=connection.createStatement(); statement.execute(sql); } catch(SQLException e) { e.printStackTrace(); }

Servletacceso bd

  • 1.
    Servlets con acceso a Bases de Datos Manuel Williams Alcedo
  • 2.
    Índice Repaso deJDBC 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
  • 3.
    JDBC API deJava 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
  • 4.
    JDBC de formaesquemática ResultSet Statement Connection DriverManager JDBC-ODBC Bridge ODBC Driver ODBC Database Aplicación Cliente
  • 5.
    Utilización de JDBC3.0 API 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); }
  • 6.
    Servlets Programas enJava 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 HTTP Servidor Web Servlet BD externa BD Aplicación
  • 7.
    Cuándo y porqué 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
  • 8.
    Estructura de unHttpServlet HttpServlet Mé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 HttpServletRequest Objeto HttpServletResponse
  • 9.
    Servlets con accesoa 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
  • 10.
    Estructura de unServlet con acceso a DB HttpServlet 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
  • 11.
    Ejemplo 1: Escribiren 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 Tomcat 5.5
  • 12.
    Ejemplo 2: Consultaruna 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 Tomcat 5.5
  • 13.
    para insertar losdatos en una tabla de una base de datos: Insertar el import de sql: import java.sql.*; Insertar un objeto Connection como miembro de la clase SurveyServlet: Connection connection; Insertar en la función init la conexión con el ODBC try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url="jdbc:odbc:pruebaODBC"; connection=DriverManager.getConnection(url); } catch(Exception e) { System.out.println("Error al crear la conexión"); e.printStackTrace(); }
  • 14.
    Insertar en lafunción doPost el código que ejecuta el Insert: String sql = "INSERT INTO DatosWeb "; sql += "(Tamano,Comentarios) "; sql += "VALUES ('" + req.getParameter("employee") + "', '"; sql += req.getParameter("comment") + "')"; System.out.println(sql); try { Statement statement=connection.createStatement(); statement.execute(sql); } catch(SQLException e) { e.printStackTrace(); }