Manual Java Web - ADSI - SENA (Versión Final) 2012
Manual Java Web - ADSI - SENA (Versión Final) 2012
DESARROLLAR UN
PROYECTO WEB DE
JAVA CON MYSQL
SENA - ADSI
Yeimmy Lee
Contenido
GUÍA PARA DEARROLLAR UN PROYECTO WEB DE JAVA CON MYSQL ................................................ 2
PASO 1. Crear la base de datos ........................................................................................................... 3
PASO 2. Crear proyecto web en netbeans .......................................................................................... 4
PASO 3. Crear paquetes en la carpeta de recursos............................................................................. 6
PASO 4. Incluir la librería JDBC ............................................................................................................ 8
PASO 5. Crear las clases Value Object ............................................................................................... 11
PASO 6. Crear la clase conexión ........................................................................................................ 14
Paso 7. Crear las clases Data Access Object ...................................................................................... 16
PASO 8. Crear el controlador: Servlet ............................................................................................... 29
PASO 9. Crear los JSP......................................................................................................................... 43
GUÍA PARA DESARROLLAR UN PROYECTO WEB DE JAVA CON MYSQL
En este documento voy a tratar de explicar los pasos básicos para poder hacer este proyecto. Yo
les envío el código fuente para que ustedes se puedan guiar.
BD
La recomendación es trabajar de abajo para arriba, es decir, empezar por la base de datos, luego el
modelo, controlador y vista, en ese orden. No es obligatorio, es una recomendación.
PASOS
Les recuerdo los nueve pasos mencionados en clase, en este tutorial los pasos tendrán unos pequeños
ajustes:
1
Como anexos se adjuntará el archivo .sql con la base de datos.
PASO 2. Crear proyecto web en netbeans
Creamos un proyecto web en netbeans. Para esto seleccionamos Archivo (File) y después Nuevo
proyecto (New Project)
Nos abre un asistente, donde seleccionamos en Categorías (Categories) la opción Java Web, y en el
siguiente panel Proyectos (Projects), seleccionamos Web Application. Clic en Siguiente (Next).
En la siguiente pantalla nos solicita un nombre y una ubicación. Clic en Siguiente (Next)
En la siguiente pantalla nos pregunta qué servidor queremos usar. Clic en Finalizar (Finish).
PASO 3. Crear paquetes en la carpeta de recursos
Creamos tres paquetes: (controlador, modelo.dao y modelo.vo). Para ello simplemente nos
ubicamos sobre la carpeta Source Packages, y seleccionamos Nuevo (New) y luego elegimos la
opción Paquete Java (Java Package).
Nos carga un asistente que nos solicita el nombre del paquete y damos clic en Finalizar (Finish)
De este mismo modo creamos los otros dos paquetes, nuestra aplicación va quedando así:
Para que la conexión a MySQL funcione debemos importar la librería con el driver JDBC para mySQL,
para esto vamos a las propiedades del proyecto. Clic derecho sobre el proyecto y seleccionamos
Propiedades (Properties).
Seleccionamos la opción Adicionar Librería (Add Library…). Nos carga la siguiente ventana:
Ahí buscamos la librería MySQL JDBC Driver, damos clic en Adicionar Librería (Add Library), nos
deja nuevamente en la ventana de propiedades, allí damos clic en Aceptar (OK).
Si la librería no aparece en el listado de librerías, se puede buscar en Internet, y se carga el archivo
por la opción Agregar JAR/Carpeta (Add JAR/Folder)2.
2
Como parte de los elementos anexos a este documento se enviará el JAR del driver JDBC para MySQL.
PASO 5. Crear las clases Value Object
En la capa de Modelo vamos a tener dos tipos de elementos: Clases VO (Value Object) y clases
DAO (Data Access Object), que nos permiten manipular la información de la base de datos.
Son la representación de cada una de las tablas de nuestra base de datos, es decir por cada tabla
en nuestro modelo de datos vamos a crear una clase Value Object. Es recomendable que la clase
tenga el mismo nombre de la tabla y termine con las letras VO, para así identificar rápidamente
que esa clase es un Value Object. Cada Clase VO, va a tener como atributos los campos de la tabla
y los métodos serán los get y set para encapsular cada atributo.
Ejemplo: la tabla aprendiz tiene siete campos: id_aprendiz, nombre, direccion, telefono,
correo, fecha_nacimiento y ficha. Entonces la clase AprendizVO tendrá siete atributos
privados, siete métodos get y siete métodos set.
Clase AprendizVO
Siguiendo estas recomendaciones generamos las clases Value Object para las otras dos tablas, sin
embargo para el VO de la tabla Calificaciones hay una pequeña diferencia, debido a que esta tabla
solamente tiene el id del aprendiz, el id de la evidencia y el puntaje obtenido, el VO se complementa
un poco para mostrar información útil en la lista, entonces vamos a crear cinco atributos: idAprendiz,
nombreAprendiz, idEvidencia, nombreEvidencia, puntaje. La clase CalificacionVO quedaría así:
Clase CalificacionVO
La clase VO de la tabla Evidencia si se crea igual que la de Aprendiz, es decir, únicamente con los
atributos correspondientes a los campos de la tabla.
PASO 6. Crear la clase conexión
Teniendo en cuenta que siempre se debe hacer la conexión y la desconexión a la base de datos, se
crea una clase que se encargue de hacer esas dos tareas y todos los DAO heredarán de esa clase. A
esta clase la vamos a llamar ConexionDAO.
Clase ConexionDAO
import java.sql.Connection;
import java.sql.DriverManager;
//Conectarme a la BD
this.con = DriverManager.getConnection(
"jdbc:mysql://localhost/notas",
"root",
"root");
} catch (Exception e) {
System.out.println("Error: " + e.getMessage());
}
}
Esta clase tiene únicamente dos métodos: conectar y desconectar. A continuación de explican
algunas cosas importantes en esta clase:
LÍNEA EXPLICACIÓN
Class.forName("com.mys Así se importa el Driver JDBC de MySQL
ql.jdbc.Driver");
this.con = Con esta línea realizamos la conexión. El método getConnection()
DriverManager. recibe tres parámetros:
getConnection("jdbc:my 1. "jdbc:mysql://localhost/notas" //es la cadena de
sql://localhost/notas"
, "root", "root");
conexión, lo sombreado usted debe personalizarlo, la
palabra localhost representa el servidor de base de datos,
en aplicaciones académicas normalmente está en el mismo
servidor por eso se pone localhost, la palabra notas
representa el nombre de la base de datos, en mi caso la base
de datos se llama notas. Lo demás queda igualito.
2. "root" //es el usuario del servidor de bases de datos. El
mismo que usa en heidiSQL.
3. "root" //es la clave del servidor de bases de datos. El
mismo que usa en heidiSQL.
Ahora, también por cada tabla del modelo de datos, se debe crear una clase DAO, que es la que
nos permite hacer las operaciones sobre cada tabla. Por lo tanto, se creará una clase por cada
tabla, la recomendación es que el nombre de la case sea el mismo nombre de la tabla terminada por
la palabra DAO, también para que sea fácil de identificar.
En cada una de esas clases, se deben crear, cómo mínimo cuatro métodos. Las operaciones básicas
(sentencias DML) son Insert, Update, Delete y Select, estas cuatro operaciones son conocidas en
programación como CRUD (Create, Retrieve, Update y Delete). También nos toca crear un método
que traiga un registro por ID (esto nos sirve cuando vamos a editar o hacer alguna operación en un
registro específico).
Y a su vez, es importante entender que para poder hacer una consulta en la base de datos se
deben seguir estos tres pasos:
Conexión
Ejecución de sentencia
Declarar sentencia
Preparar sentencia
Ejecutar sentencia
Desconexión
Teniendo listo el Driver y la clase ConexionDAO. Ahora si creamos cada una de las clase DAO para
cada una de las tablas de nuestra base de datos. Recuerde que todos los DAO deben heredar de la
clase ConexionDAO. A continuación muestro la clase AprendizDAO, va a tener cinco métodos:
insertar, actualizar, eliminar, seleccionar y obtenerPorId.
Clase AprendizDAO
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import modelo.vo.AprendizVO;
public AprendizDAO() {
lista = new ArrayList<AprendizVO>();
}
} catch (Exception e) {
System.out.println("Error: " + e.getMessage());
} finally {
//paso 3: Desconectar de la BD
desconectar();
}
}
} catch (Exception e) {
System.out.println("Error:" + e.getMessage());
} finally {
//paso 3: Desconectar de la BD
desconectar();
}
}
} catch (Exception e) {
System.out.println("Error:" + e.getMessage());
} finally {
//paso 3: Desconectar de la BD
desconectar();
}
}
while (rs.next()) {
this.aprendizVO = new AprendizVO();
this.aprendizVO.setId(rs.getLong(1));
this.aprendizVO.setNombre(rs.getString(2));
this.aprendizVO.setDireccion(rs.getString(3));
this.aprendizVO.setTelefono(rs.getLong(4));
this.aprendizVO.setCorreo(rs.getString(5));
this.aprendizVO.setFechaNacimiento(rs.getDate(6));
this.aprendizVO.setFicha(rs.getString(7));
this.lista.add(this.aprendizVO);
} catch (Exception e) {
System.out.println("Error:" + e.getMessage());
} finally {
//paso 3: Desconectar de la BD
desconectar();
}
}
while (rs.next()) {
this.aprendizVO = new AprendizVO();
this.aprendizVO.setId(rs.getLong(1));
this.aprendizVO.setNombre(rs.getString(2));
this.aprendizVO.setDireccion(rs.getString(3));
this.aprendizVO.setTelefono(rs.getLong(4));
this.aprendizVO.setCorreo(rs.getString(5));
this.aprendizVO.setFechaNacimiento(rs.getDate(6));
this.aprendizVO.setFicha(rs.getString(7));
}
} catch (Exception e) {
System.out.println("Error:" + e.getMessage());
} finally {
//paso 3: Desconectar de la BD
desconectar();
}
}
}
Recordemos que cada vez que vayamos a ejecutar una sentencia debemos conectarnos, ejecutar
la sentencia y desconectarnos. A continuación se explican algunas líneas clave:
LÍNEA EXPLICACIÓN
String consulta = "INSERT INTO Aquí se empieza a armar la sentencia SQL, en lugar
aprendiz (id_aprendiz, nombre, de los valores se ponen comodines (?). Más adelante
direccion, telefono, se enviaran los valores a esos comodines.
correo,fecha_nacimiento, ficha)
VALUES (?,?,?,?,?,?,?)";
pstm.setString(5,
this.aprendizVO.getCorreo());
pstm.setDate(6,
this.aprendizVO.getFechaNacimien
to());
pstm.setString(7,
this.aprendizVO.getFicha());
this.aprendizVO.setCorreo(rs.ge
tString(5));
this.aprendizVO.setFechaNacimie
nto(rs.getDate(6));
this.aprendizVO.setFicha(rs.get
String(7));
El DAO de Calificaciones tiene también una pequeña diferencia y es que como creamos la clase
CalificacionVO con dos atributos adicionales, tenemos que consultar información de las tres tablas
para poder obtener la información a guardar en todos los atributos. Para eso debemos hacer una
consulta con JOIN, quedaría más o menos de esta forma:
Lo anterior es para las consultas (select), la inserción si es normal, y toca tener en cuenta que
para actualizar y eliminar tenemos que enviar los dos id (aprendiz y evidencia) o de lo contrario se
modificarían o eliminarían elementos que no son. Otra cosa a tener en cuenta, es que se crea un
método adicional que se llama listarNotasAprendiz(), el cual nos permite conocer todas las
notas de un aprendiz específico, esta consulta se usa en un botón que se pone en la
administración de aprendices, en la lista frente a cada aprendiz irá un botón que dice Ver
Calificaciones, ese botón usará este método. La clase quedaría así:
Clase CalificacionDAO
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import modelo.vo.CalificacionVO;
public CalificacionDAO() {
lista = new ArrayList<CalificacionVO>();
}
} catch (Exception e) {
System.out.println("Error: " + e.getMessage());
} finally {
//paso 3: Desconectar de la BD
desconectar();
}
}
while (rs.next()) {
this.calificacionVO = new CalificacionVO();
this.calificacionVO.setIdAprendiz(rs.getLong(1));
this.calificacionVO.setNombreAprendiz(rs.getString(2));
this.calificacionVO.setIdEvidencia(rs.getInt(3));
this.calificacionVO.setNombreEvidencia(rs.getString(4))
; this.calificacionVO.setPuntaje(rs.getFloat(5));
this.lista.add(this.calificacionVO);
} catch (Exception e) {
System.out.println("Error:" + e.getMessage());
} finally {
//paso 3: Desconectar de la BD
desconectar();
}
}
} catch (Exception e) {
System.out.println("Error:" + e.getMessage());
} finally {
//paso 3: Desconectar de la BD
desconectar();
}
}
} catch (Exception e) {
System.out.println("Error:" + e.getMessage());
} finally {
//paso 3: Desconectar de la BD
desconectar();
}
}
while (rs.next()) {
this.calificacionVO = new CalificacionVO();
this.calificacionVO.setIdAprendiz(rs.getLong(1));
this.calificacionVO.setNombreAprendiz(rs.getString(2));
this.calificacionVO.setIdEvidencia(rs.getInt(3));
this.calificacionVO.setNombreEvidencia(rs.getString(4))
; this.calificacionVO.setPuntaje(rs.getFloat(5));
}
} catch (Exception e) {
System.out.println("Error:" + e.getMessage());
} finally {
//paso 3: Desconectar de la BD
desconectar();
}
}
while (rs.next()) {
this.calificacionVO = new CalificacionVO();
this.calificacionVO.setIdAprendiz(rs.getLong(1));
this.calificacionVO.setNombreAprendiz(rs.getString(2));
this.calificacionVO.setIdEvidencia(rs.getInt(3));
this.calificacionVO.setNombreEvidencia(rs.getString(4))
; this.calificacionVO.setPuntaje(rs.getFloat(5));
this.lista.add(this.calificacionVO);
}
} catch (Exception e) {
System.out.println("Error:" + e.getMessage());
} finally {
//paso 3: Desconectar de la BD
desconectar();
}
}
}
La clase EvidenciaDAO si se generará igual que la clase AprendizDAO, con los cinco métodos
explicados al inicio.
PASO 8. Crear el controlador: Servlet
Como controlador vamos a usar un Servlet. El cual nos permite recibir las peticiones de todos los
formularios y devolver una respuesta. Para crearla debemos hacer dos pasos: Crear una clase que
herede de HttpServlet y crear un archivo de configuración llamado web.xml en la carpeta Web
Pages/WEB-INF.
Se crea una clase en el paquete controlador, cualquier nombre (recomendación poner nombres
dicientes y claros), en mi caso la llamaré Controlador. Dicha clase debe heredar de HttpServlet. La
clase nos permite implementar varios métodos para recibir las peticiones de los formularios. Para
nuestro caso vamos a implementar el método doPost() El cual recibe dos parámetros un objeto de
la clase HttpServletRequest y HttpServletResponse, respectivamente. Este método recibe todas
las peticiones de los formularios que en la propiedad method tengan el valor POST. El esqueleto
de la clase nos quedaría así:
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
}
}
Dentro del método doPost, vamos a recibir todas las peticiones y vamos a decidir qué toca hacer
con un switch.
<web-app>
<servlet>
<servlet-name>Controlador</servlet-name>
<servlet-class>controlador.Controlador</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Controlador</servlet-name>
<url-pattern>/controlador</url-pattern>
</servlet-mapping>
</web-app>
El servlet recibe información de los formularios, para obtener cada campo se debe utilizar el método:
getParameter() del objeto HttpServletRequest. Ejemplo:
Con esta línea se obtiene el valor de un campo llamado opcion. En todos los formularios vamos a
tener un campo oculto llamado opcion que nos va a permitir saber qué operación se debe realizar.
Para devolver valores a los jsp, debemos usar las siguientes líneas:
LÍNEA EXPLICACIÓN
RequestDispatcher Se crea un objeto de la clase RequestDispatcher, la cual nos permite
vista = null; decirle al servlet cual jsp vamos a mostrar.
req.setAttribute("apre Con esta línea enviamos los valores que necesitemos al jsp. Se debe
ndices", lista); envía con el método setAttribute(), el cual recibe dos
parámetros: el nombre con el que lo vamos a obtener en el jsp y el
valor que queremos enviar.
Sabiendo cómo obtener los valores y cómo devolver información, vamos a empezar a armar el
switch. Recordemos que el switch se arma porque todos los formularios van a llegar al mismo
método doPost() y con el campo opcion sabremos qué acción ejecutar.
A continuación se muestra el esqueleto con el switch y más adelante se explicará cómo se da solución
a cada opción para la tabla Aprendiz. También se deja una opción 99 que es la que nos lleva al index
y en el default muestra un mensaje de opción no válida. Al final después del switch se hace el
forward.
3
Esta es una opción adicional que aparece en el listado de aprendices
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//objetos DAO
AprendizDAO aprendizDAO;
EvidenciaDAO evidenciaDAO;
CalificacionDAO calificacionDAO;
//objetos VO
AprendizVO aprendizVO;
EvidenciaVO evidenciaVO;
CalificacionVO calificacionVO;
//un entero id, se usará al actualizar y eliminar
int id , id2;
//variables para el manejo de las fechas
int anio, mes, dia;
Calendar fecha;
switch (opcion) {
default:
//enviamos un mensaje para indicar que están solicitando una
opción no válida
req.setAttribute("mensaje", "Esta opción no ha sido
implementada.");
//le decimos a cual opción ir después de dar clic en el
botón Aceptar del JSP de respuesta
req.setAttribute("opcion", "99");
//Indica cual JSP va a mostrar la información enviada
vista = req.getRequestDispatcher("respuesta.jsp");
break;
}
vista.forward(req, res);
Ese era el esqueleto, a continuación explicaré cada opción para la tabla aprendiz y de la tabla
calificaciones, usted tendrá que implementarlo para la tabla evidencias.
1. Listar: Dentro de la opción 1 del switch, simplemente tenemos que listar a los aprendices,
para eso llamamos al método listar() de la clase AprendizDAO, esto deja disponible la
información en el atributo lista de este mismo objeto. Le enviamos la lista al jsp con el
método setAttribute() y le decimos al requestDispatcher que el jsp es listarAprendiz.jsp.
3. Insertar: En esta opción se obtienen los valores del formulario y se llama al método insertar()
de la clase AprendizDAO. Al final, se muestra el archivo respuesta.jsp, antes de eso se envía
un mensaje de transacción exitosa.
break;
4. Mostrar formulario para actualizar: En esta opción se debe obtener el id que se desea
actualizar, con ese id se busca en la base de datos con el método obtenerPorId() de la
clase AprendizDAO, se envían los datos al JSP y se muestra el jsp actualizarAprendiz.jsp.
break;
5. Actualizar: En esta opción se obtienen los valores del formulario y se llama al método
actualizar de la clase AprendizDAO. Al final, se muestra el archivo respuesta.jsp, antes de
eso se envía un mensaje de transacción exitosa.
break;
break;
Con esto ya tenemos todas las operaciones para la tabla aprendiz, para las otras tablas tenemos que
repetir desde el case 1 hasta el 6, haciendo los ajustes para que haga las transacciones en la tabla
adecuada. Para la siguiente tabla empezaría en 7, y la otra en 13.
Como se había indicado, en este manual se va a mostrar cómo se implementan las operaciones
para la tabla Aprendiz y para la tabla Calificaciones, a continuación muestro las transacciones en la
tabla Calificaciones:
13. Listar: Dentro de la opción 13 del switch listamos las calificaciones, para eso llamamos al
método listar() de la clase CalificacionDAO, esto deja disponible la información en el
atributo lista de este mismo objeto. Le enviamos la lista al jsp con el método
setAttribute() y le decimos al requestDispatcher que el jsp es listarCalificaciones.jsp.
15. Insertar: En esta opción se obtienen los valores del formulario y se llama al método
insertar() de la clase CalificacionDAO. Al final, se muestra el archivo respuesta.jsp, antes de
eso se envía un mensaje de transacción exitosa.
break;
16. Mostrar formulario para actualizar: En esta opción se debe obtener los dos id (aprendiz y
evidencia) para conocer el registro que se desea actualizar, con estos id se busca en la
base de datos con el método obtenerPorId() de la clase CalificacionDAO, se envían los
datos al JSP y se muestra el jsp actualizarCalificacion.jsp.
break;
17. Actualizar: En esta opción se obtienen los valores del formulario y se llama al método
actualizar de la clase CalificacionDAO. Al final, se muestra el archivo respuesta.jsp, antes
de eso se envía un mensaje de transacción exitosa.
break;
18. Eliminar: Se obtienen los id (aprendiz y evidencia) del registro a eliminar, y se llama al
método eliminar de la clase CalificacionDAO, al final se muestra el archivo respuesta.jsp,
antes de eso se envía un mensaje de transacción exitosa.
break;
Con esto tenemos implementadas las opciones de la tabla Aprendiz y de la tabla Calificaciones,
quedaría faltando la tabla Evidencias.
PASO 9. Crear los JSP
En la última capa tenemos los archivos jsp. Básicamente los archivos que se deben crear son:
respuesta.jsp: Permite mostrar un mensaje por cada acción que realicemos en nuestro
sistema.
JPS específicos de cada tabla: Para poder hacer operaciones en las tablas, se deben crear
tres archivos por cada una de ellas:
listar: Es la pantalla donde vamos a mostrar el listado de elementos que hay en la base
de datos en una tabla específica, además debe tener botones de adicionar, actualizar y
eliminar.
INDEX.JSP
Este es primer archivo que muestra la aplicación, nos debe mostrar tres links uno para cada tabla.
Para que el controlador sepa qué opción queremos acceder vamos a hacer uso de una pequeña
función javascript. En el cuerpo del archivo, vamos a crear un formulario con tres links y un campo
oculto para manipular la opción:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>PROYECTO JAVA WEB - ADSI</title>
<script language="javascript">
function defineOpcion(opcion){
document.forms[0].opcion.value = opcion;
document.forms[0].submit();
}
</script>
</head>
<body>
<h1>APLICACIÓN JAVA WEB</h1>
<h2><em>by Yeimmy Lee</em></h2>
<form action="controlador" method="POST">
<input type="hidden" name="opcion" value=""/>
<input type="button" name="aprendiz"
value="Administrar Aprendiz" onclick="defineOpcion(1)"/>
<input type="button" name="evidecia"
value="Administrar Evidencias" onclick="defineOpcion(7)"/>
<input type="button" name="notas"
value="Administrar Notas" onclick="defineOpcion(13)"/>
</form>
</body>
</html>
RESPUESTA.JSP
Esta página va a ser llamada cada vez que nuestra aplicación realice alguna operación y necesite
mostrar un mensaje de respuesta, recibe un mensaje y una opción hacía donde debe dirigirse al
dar clic en Aceptar.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>PROYECTO JAVA WEB - ADSI</title>
</head>
<body>
LISTARAPRENDIZ.JSP
En este archivo se muestra un listado y los botones para administrar la tabla Aprendiz.
<!--importa las clases necesarias para poder manipular los elementos java -->
<%@page import="modelo.vo.AprendizVO"%>
<%@page import="java.util.Iterator"%>
<%@page import="java.util.ArrayList"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>PROYECTO JAVA WEB - ADSI</title>
INSERTARAPRENDIZ.JSP
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<title>PROYECTO JAVA WEB - ADSI</title>
<script language="javascript">
function defineOpcion(opcion){
document.forms[0].opcion.value = opcion;
document.forms[0].submit();
}
</script>
</head>
<body>
<h1>APLICACIÓN JAVA WEB</h1>
<h2><em>by Yeimmy Lee</em></h2>
<h2 style="text-align: center;">INSERTAR APRENDIZ</h2>
<form action="controlador" method="POST">
<input type="hidden" name="opcion" value="3" />
<br/>Identificación
<br/><input type="text" name="id_aprendiz" />
<br/>Nombre
<br/><input type="text" name="nombre" />
<br/>Dirección
<br/><input type="text" name="direccion" />
<br/>Teléfono
<br/><input type="text" name="telefono" />
<br/>Correo Electrónico
<br/><input type="text" name="correo" />
<br/>Fecha de Nacimiento
<em>(Por favor ingresarlo asi: aaaa-mm-dd</em>
<br/><input type="text" name="fecha_nacimiento" />
<br/>Ficha
<br/><input type="text" name="ficha" />
<br/><input type="submit" value="Guardar" />
<input type="button" name="volver"
value="Volver Administrar Aprendices"
onclick="defineOpcion(1)">
<input type="button" name="inicio"
value="Volver al Inicio" onclick="defineOpcion(99)">
</form>
</body>
</html>
ACTUALIZARAPRENDIZ.JSP
<!--importa las clases necesarias para poder manipular los elementos java -->
<%@page import="modelo.vo.AprendizVO"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>PROYECTO JAVA WEB - ADSI</title>
<script language="javascript">
function defineOpcion(opcion){
document.forms[0].opcion.value = opcion;
document.forms[0].submit();
}
</script>
</head>
<body>
Solo quedaría pendiente crear el listar, insertar y actualizar para las otras dos tablas. Ya con eso
tendríamos nuestra aplicación terminada. En los JSP de la tabla calificaciones, solamente toca
tener en cuenta que toca enviar dos id (evidencia y aprendiz) y que en el formulario de insertar se
van a mostrar unos select con la información que hay en la base de datos sobre aprendices y
evidencias, de resto todo es igual.
Es importante aclarar que, como en toda aplicación, hay muchas cosas que se pueden
perfeccionar tanto en programación como en la apariencia, el propósito de esta guía era mostrar
cómo se podía encarar un proyecto Java WEB con conexión a bases de datos MySQL desde ceros.
***