• Like
  • Save
Servletacceso bd
Upcoming SlideShare
Loading in...5
×
 

Servletacceso bd

on

  • 1,189 views

Servlet acceso a base de datos

Servlet acceso a base de datos

Statistics

Views

Total Views
1,189
Views on SlideShare
1,189
Embed Views
0

Actions

Likes
0
Downloads
49
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Servletacceso bd Servletacceso bd Presentation Transcript

    • 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();
      • }