Está en la página 1de 7

Guía de Aprendizaje No. 3.

1 - Servlets y JDBC:

Aprendizajes esperados:

El alumno aprenderá a desarrollar aplicaciones web con JSP y Servlets, separando


claramente las responsabilidades de la lógica del mundo, de la capa de
presentación, aplicando el patrón de diseño modelo – vista – controlador. Así mismo
comprenderá el concepto de aplicación web y las arquitecturas de desarrollo de
última generación que permitan desarrollar aplicaciones seguras y de calidad.

Actividades Pre-Tutoría:

1. Realizar las siguientes consultas, que servirán de base para las actividades
de la presente Unidad y para la presentación del Taller No. 1:

 Qué es JDBC
 Qué son y que contienen los paquetes java.sql y javax.sql
 Qué son y para qué sirven las clases
o Driver,
o DriverManager,
o DriverPropertyInfo,
o Connection,
o DatabaseMetaData,
o Statement,
o PreparedStatement,
o CallableStatement,
o ResultSet,
o ResultSetMetaData.

2. Qué es y para qué sirve el método executeUpdate de la clase Statement.

3. Crear una base de datos MySql, denominada bd_tutorias que permita


organizar las citas que los alumnos matriculados en la universidad conciertan
o acuerdan con sus profesores para solucionar dudas sobre las materias que
estos imparten.

Curso de Gestión de Información II


Autor: Carlos Andrés Vélez Sánchez
Ingeniero de Sistemas y Magister en Ingeniería de Software y Sistemas Informáticos
Las Tablas que componen la base de datos son:
 profesores
 Id_profesor INTEGER PRIMARY KEY,
 profesor VARCHAR(50).
 tutorias
 id_tutoria INTEGER PRIMARY KEY,
 id_profesor INTEGER,
 dia VARCHAR (10),
 hora VARCHAR (5).
 citas
 id_tutoria INTEGER PRIMARY KEY,
 alumno VARCHAR (50),
 asunto VARCHAR (200).

4. Registrar datos en cada una de las tablas.

Ejercicio:
Ahora vamos a crear una nueva WebApplication, llamada jdbcTutorias1, en la cual
vamos a tener un servlet que nos permita conectarnos a una base de datos y
recuperar información que será mostrada en una página HTML como la siguiente:

Curso de Gestión de Información II


Autor: Carlos Andrés Vélez Sánchez
Ingeniero de Sistemas y Magister en Ingeniería de Software y Sistemas Informáticos
El servlet se apoyará en un objeto llamado BDTutorias que nos permite cargar y
registrar el controlador JDBC, realizar la conexión con la base de datos bd_tutorias,
y crear un objeto Statement para realizar consultas a la base de datos. Por tanto,
vamos a crear una nueva clase Java, haciendo clic con el boton derecho del raton
sobre el nombre del proyecto > New > Java Class… > le asignamos el nombre,
dejamos lo valores por defecto y finalmente hacemos clic en el botón Finish como
se muestra a continuación:

Abrimos el script BDTutorias.java y editamos el código de la siguiente manera:


import java.sql.*;

public class BDTutorias


{
private Connection conexión;
private Statement sentenciaSQL;
private ResultSet cdr; // conjunto de resultados

public BDTutorias() throws ClassNotFoundException,


SQLException, InstantiationException,
IllegalAccessException
{
// Cargar el controlador JDBC
String controlador = "com.mysql.jdbc.Driver";
Class.forName(controlador).newInstance();
conectar(); // conectar con la fuente de datos
}
Curso de Gestión de Información II
Autor: Carlos Andrés Vélez Sánchez
Ingeniero de Sistemas y Magister en Ingeniería de Software y Sistemas Informáticos
public void conectar() throws SQLException
{
String URL_bd = "jdbc:mysql://127.0.0.1:3306/bd_tutorias";
String usuario = "user";
String contraseña = "password";
// Conectar con la BD
conexión = DriverManager.getConnection(
URL_bd, usuario, contraseña);
// Crear una sentencia SQL
sentenciaSQL = conexión.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
System.out.println("\nConexión realizada con éxito.\n");
}

public void cerrarConexion() throws java.sql.SQLException


{
if (cdr != null) cdr.close();
if (sentenciaSQL != null) sentenciaSQL.close();
if (conexión != null) conexión.close();
}

public ResultSet tutoriasSolicitadas()


throws SQLException
{
cdr = sentenciaSQL.executeQuery(
"SELECT profesor, dia, hora, alumno " +
"FROM profesores, tutorias, citas " +
"WHERE profesores.id_profesor = tutorias.id_profesor" +
" AND tutorias.id_tutoria = citas.id_tutoria");
return cdr;
}
}

Los métodos que componen este objeto son:


 constructor BDTutorias: carga el controlador JDBC y llama conectar.
 conectar: realiza la conexión con la base de datos.
 cerrarConexion: cerrar la conexión con la base de datos.
 tutoriasSolicitadas: retorna la consulta a la base de datos.

El servlet SvTutorias, obtendrá las tutorías solicitadas invocando al método


tutoriasSolicitads de BDTutorias y las mostrara en una página web, el código es el
siguiente:
import java.io.*;
Curso de Gestión de Información II
Autor: Carlos Andrés Vélez Sánchez
Ingeniero de Sistemas y Magister en Ingeniería de Software y Sistemas Informáticos
import java.sql.*;
import javax.servlet.*;
import javax.servlet.annotation.*;
import javax.servlet.http.*;

@WebServlet(urlPatterns =
{
"/SvTutorias"
})
public class SvTutorias extends HttpServlet
{

/**
* Processes requests for both HTTP <code>GET</code> and
* <code>POST</code> methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
private BDTutorias BD;

public void init(ServletConfig config) throws ServletException


{
super.init(config);
try
{
BD = new BDTutorias();
}
catch(ClassNotFoundException e)
{
System.out.println("Clase no encontrada. " + e.getMessage());
}
catch(InstantiationException e)
{
System.out.println("Objeto no creado. " + e.getMessage());
}
catch(IllegalAccessException e)
{
System.out.println("Acceso ilegal. " + e.getMessage());
}
catch(SQLException e)
{
System.out.println("Excepción SQL. " + e.getMessage());
}
}

Curso de Gestión de Información II


Autor: Carlos Andrés Vélez Sánchez
Ingeniero de Sistemas y Magister en Ingeniería de Software y Sistemas Informáticos
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();

try
{
// Realizar una consulta SQL
ResultSet cdr = BD.tutoriasSolicitadas();

// Mostrar el conjunto de resultados obtenido


out.println("<html><head><title>Tutorías</title></head>");
out.println("<body>");
// Tabla
out.println("<table width=100% border=1>");
// Cabeceras
out.println("<tr>");
out.println("<th>Alumno</th><th>Día/hora</th><th>Con el profesor</th>");
out.println("</tr>");
// Filas
while(cdr.next())
{
out.println("<tr>");
out.println("<td width=40%>" + cdr.getString("alumno") + "</td>");
out.println("<td width=20%>" + cdr.getString("dia") +
" a las " + cdr.getString("hora") + "</td>");
out.println("<td width=40%>" + cdr.getString("profesor") + "</td>");
out.println("</tr>");
}
out.println("</table>");
out.println("</body></html>");
}
catch(SQLException e)
{
out.println("Excepción SQL: " + e.getMessage());
}
}

public void destroy()


{
try
{
BD.cerrarConexion();
}

Curso de Gestión de Información II


Autor: Carlos Andrés Vélez Sánchez
Ingeniero de Sistemas y Magister en Ingeniería de Software y Sistemas Informáticos
catch(SQLException ignorada){}
}
}

La página jsp que nos permitirá lanzar la ejecución de la aplicación es:


<!DOCTYPE html>
<html>
<head>
<title>Tutorías</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div>
<a href="SvTutorias">Mostrar tutorías</a>
</div>
</body>
</html>

Ahora podemos ejecutar la aplicación y analizar su funcionamiento.

Bibliografía:

 https://users.dcc.uchile.cl/~jbarrios/servlets/general.html
 http://www.manualweb.net/javaee/introduccion-servlets/
 https://www.it.uc3m.es/labttlat/2007-08/material/servlets/

Curso de Gestión de Información II


Autor: Carlos Andrés Vélez Sánchez
Ingeniero de Sistemas y Magister en Ingeniería de Software y Sistemas Informáticos

También podría gustarte