Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ing WEB
Ing WEB
Ingeniería de Sistemas
Diseño y programación de base de datos
Objetivo
Metodología
Primero, en los grupos de trabajos deben seguir el ejemplo que se presenta a continuación y enviar
la aplicación al buzón de correo electrónico del profesor:
ib.caicedo45@egresados.uniandes.edu.co. La duración de esta actividad consiste en toda la
mañana del veintitrés de mayo (obviamente del año en curso), es decir, de 7:00AM a 06:00PM.
Segundo, los grupos de trabajo deben entregar a más tardar el medio día (12:00M) del treinta de
mayo un avance de la aplicación que tenga programado el ingreso de todos los datos necesarios
para su funcionamiento.
Tercero, el seis de junio deben entregar a medio día (12:00M) un avance de la aplicación con
algunos reportes programados, y finalmente, el día trece del mismo mes deben entregar, también
antes de medio día (12:00M), un prototipo (obviamente funcional) de la aplicación que contenga los
reportes esenciales para su operación en un ambiente de pruebas.
Nota: Los trabajos entregados fuera del lapso estipulado tendrán una rebaja en la nota de un punto
con cinco centésimas (1.5 puntos) por cada hora que transcurra, mejor dicho, después de tres
horas de retraso no tiene sentido enviarlo por correo electrónico. También es importante que
tengan en cuenta que la presentación de los trabajos tendrá una representación en la nota, donde
una entrega como mínimo para ser considerada bien presentable, debe contener un fichero con los
nombres de los integrantes del grupo, otro con el script de la base de datos y otro con una breve
descripción de la aplicación (este último, solo debe tenerse en cuenta en la entrega final).
Lo primero que se debe hacer es crear la base de datos como se aprecia en las siguientes figuras:
El cuarto paso consiste en crear dos paquetes en la sección denominada Source Packages, los
cuales podrían llamarse controlador, donde residirá el Servlet controlador, y el otro paquete podría
denominarse objetos, donde se almacenarán las clases que corresponden con las tablas del
modelo relacional.
Figura 10 Creación de los paquetes donde residirán los ficheros con código fuente
El quinto paso consiste en la creación del Servlet controlador haciendo click con el botón derecho
del ratón en el paquete llamado controlador y seleccionar la opción de crear un Servlet y después
se le asigna el nombre ServletControlador.
El sexto paso consiste en modificar, con el contenido resaltado en rojo en la figura 12, el fichero de
configuración denominado web.xml que se encuentra ubicado en la carpeta WEB-INF.
El séptimo paso es escribir las clases que concuerdan con las relaciones del modelo de la base de
datos: Usuario y Tarea, las cuales deben residir en el paquete denominado objetos. Tal y como
se aprecia en las figuras 13 y 14.
package objetos;
/**
*
* @author Prof. M.Sc. Isaac Bernardo Caicedo Castro
*/
public class Usuario {
private String idUsuario;
private String nombresUsuario;
private String apellidosUsuario;
private String direccionUsuario;
private String telefonoUsuario;
private String loginUsuario;
private String passwordUsuario;
public Usuario() {
/**
*
* @author Prof. M.Sc. Isaac Bernardo Caicedo Castro
*/
public class Tarea {
private String idUsuarioTarea;
private String descripcionTarea;
private String fechaTarea;
private String horaTarea;
public Tarea() {
package controlador;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import objetos.Tarea;
import objetos.Usuario;
/**
*
* @author Prof. M.Sc. Isaac Bernardo Caicedo Castro
*/
public class ServletControlador extends HttpServlet {
private Connection conexión;
if (request.getSession().getAttribute("usuario") != null) {
if (acción.equals("autenticar.do"))
autenticar(request, response);
else if (acción.equals("mostrarformulariotarea.do"))
mostrarRegistarTarea(request, response);
else if (acción.equals("registrartarea.do"))
registrarTarea(request, response);
else if (acción.equals("mostrartareas.do"))
mostrarTareas(request, response);
else if (acción.equals("salir.do"))
salir(request, response);
}
else
autenticar(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*/
public String getServletInfo() {
return "Esto es una agenda en la Web";
}// </editor-fold>
if (nroTuplas > 0)
response.sendRedirect("inicio.jsp");
else
response.sendRedirect(String.format("agregartarea.jsp?onload=%s",
"onload=\"alert('No se ingreso la tarea correctamente')\""));
} catch (IOException ex) {
System.err.println(ex);
} catch (SQLException ex) {
System.err.println(ex);
}
while (resultado.next())
tareas.add(new Tarea(resultado.getString("idUsuarioTarea"),
resultado.getString("descripcionTarea"),
resultado.getString("fechaTarea"),
resultado.getString("horaTarea")));
request.getSession().setAttribute("tareas", tareas);
request.getSession().setAttribute("fecha",
request.getParameter("fechaTarea"));
response.sendRedirect("tareas.jsp");
} catch (IOException ex) {
System.err.println(ex);
} catch (SQLException ex) {
System.err.println(ex);
}
}
if (resultado.next()) {
Usuario usr = new Usuario(resultado.getString("idUsuario"),
resultado.getString("nombresUsuario"), resultado.getString("apellidosUsuario"),
resultado.getString("direccionUsuario"),
resultado.getString("telefonoUsuario"), resultado.getString("loginUsuario"),
resultado.getString("passwordUsuario"));
response.sendRedirect("inicio.jsp");
request.getSession().setAttribute("usuario", usr);
} else {
response.sendRedirect(String.format("index.jsp?onload=%s",
"onload=\"alert('password invalido')\""));
}
} catch (IOException ex) {
System.err.println(ex);
} catch (SQLException ex) {
System.err.println(ex);
}
}
Finalmente, el programa concluye con la codificación de los Java Server Pages que corresponden
con el código fuente de las figuras 16, 17, 18 y 19, las cuales corresponden con index.jsp,
inicio.jsp, agregartarea.jsp y tarea.jsp. Estos ficheros deben ubicarse en la carpeta denominada
Web Pages.
<%--
Document : index
Created on : 23/05/2009, 02:41:33 AM
Author : Prof. M.Sc. Isaac Bernardo Caicedo Castro
--%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Agenda Web</title>
</head>
<body <%=request.getParameter("onload")%>>
<h2>Agenda Web</h2>
<form action="autenticar.do" method="post">
login <input name="loginUsuario" /> <br />
password <input name="passwordUsuario" type="password" /> <br />
<input value="Entrar" type="submit" />
</form>
</body>
</html>
<%--
Document : inicio
Created on : 23/05/2009, 06:31:57 AM
Author : Prof. M.Sc. Isaac Bernardo Caicedo Castro
--%>
<%@page import="java.util.Date"%>
<%@page import="objetos.Usuario"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%
if (request.getSession().getAttribute("usuario") == null)
response.sendRedirect("index.jsp");
Date fechaActual = new Date();
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Agenda Web</title>
</head>
<body>
<h2>Agenda Web</h2>
<b><i>Usuario: <
%=((Usuario)request.getSession().getAttribute("usuario")).getNombresUsuario()
%></i></b>
<table border="1">
<tr>
<td>
<form action="mostrartareas.do" method="post">
Fecha (aaaa-mm-dd)
<input name="fechaTarea" readonly="yes" value="<
%=String.format("%tY-%tm-%td", fechaActual, fechaActual, fechaActual)%>" /> <br
/>
<input value="Mostrar tareas de esta fecha" type="submit" />
</form>
</td>
</tr>
<tr>
<td>
<form action="mostrarformulariotarea.do" method="post">
<input value="Registar una tarea en la agenda" type="submit" /
>
</form>
</td>
</tr>
<tr>
<td>
<form action="salir.do" method="post">
<input value="Salir" type="submit" />
</form>
</td>
</tr>
</table>
</body>
</html>
<%--
Document : agregartarea
Created on : 23/05/2009, 06:32:25 AM
Author : Prof. M.Sc. Isaac Bernardo Caicedo Castro
--%>
<%@page import="java.util.Date"%>
<%@page import="objetos.Usuario"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%
if (request.getSession().getAttribute("usuario") == null)
response.sendRedirect("index.jsp");
Date fechaActual = new Date();
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Agenda Web</title>
</head>
<body>
<h2>Agenda Web</h2>
<b><i>Usuario:
<%=((Usuario)request.getSession().getAttribute("usuario")).getNombresUsuario()
%></i></b>
<form action="registrartarea.do" method="post">
Fecha (aaaa-mm-dd) <input name="fechaTarea"
value="<%=String.format("%tY-%tm-%td", fechaActual, fechaActual, fechaActual)
%>" /><br />
Hora (hh:mm:ss AM/PM) <input name="horaTarea" value="<
%=String.format("%tI:%tM:%tS %Tp", fechaActual, fechaActual, fechaActual,
fechaActual)%>" /><br />
Descripción <br />
<textarea name="descripcionTarea"></textarea><br />
<input type="submit" value="Registrar" />
</form>
<a href="inicio.jsp">Inicio</a>
</body>
</html>
<%--
Document : tareas
Created on : 23/05/2009, 06:33:00 AM
Author : Prof. M.Sc. Isaac Bernardo Caicedo Castro
--%>
<%@page import="java.util.ArrayList"%>
<%@page import="objetos.Tarea"%>
<%@page import="objetos.Usuario"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%
if (request.getSession().getAttribute("usuario") == null)
response.sendRedirect("index.jsp");
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Agenda Web</title>
</head>
<body>
<h2>Agenda Web</h2>
<b><i>Usuario:
<%=((Usuario)request.getSession().getAttribute("usuario")).getNombresUsuario()
%></i></b>
<h3>Agenda del día <%=request.getSession().getAttribute("fecha")
%></h3>
<%
ArrayList<Tarea> tareas =
(ArrayList)request.getSession().getAttribute("tareas");
if (tareas.size() > 0) {
%>
<a href="inicio.jsp">Inicio</a>
<table border="1">
<tr>
<th>Descripcion</th>
<th>Hora</th>
</tr>
<%
for (Tarea t : tareas) {
%>
<tr>
<td><%=t.getDescripcionTarea()%></td>
<td><%=t.getHoraTarea()%></td>
</tr>
<%
}
request.removeAttribute("fecha");
request.removeAttribute("tareas");
%>
</table>
<%
}
else {
%>
<h3>No hay tareas programadas</h3>
<%
}
%>
<a href="inicio.jsp">Inicio</a>
</body>
</html>
Es importante que le presten atención a las palabras en azul, debido a que representan acciones
que son computadas en el Servlet controlador e invocadas por los formularios.
Buena suerte!!!