La aplicaci�n Libreria tiene siete p�ginas JSP. Cada una representa una p�gina Web que realiza una operaci�n independiente sobre la base de datos. El estado de la base de datos en cada p�gina es independiente de su estado en la p�gina anterior. Si la base de datos cambia debido a una solicitud de otro usuario, la p�gina Web lo detectar� y reaccionar� de la forma apropiada. Por ejemplo, si estamos modificando un libro y otro usuario borra ese libro antes de que confirmemos la solicitud de modificaci�n, la JSP nos notificar� el fallo al intentar modificar un libro que ahora no existe.
�La p�gina Index.jsp
Es la p�gina principal de la aplicaci�n web Libreria, y es la primera p�gina que se muestra a un usuario cuando entra en la aplicaci�n Web. Muestra una tabla con todos los libros que hay en la tabla Libros de la base de datos. Cada fila de la tabla muestra un libro individual, y enlaces para borrar o modificar es libro. La parte inferior de la p�gina tiene un enlace para poder a�adir nuevos libros.
- El enlace A�adir un Nuevo Libro pasa el control a la p�gina Form_Insertar.jsp.
- El enlace Borrar pasa el control a la p�gina Form_Borrar.jsp con el id del libro a borrar.
- El enlace Modificar pasa el control a la p�gina Form_Modificar.jsp con el id del libro a modificar.
�Prop�sito de la P�gina Index.jsp
El prop�sito de Index.jsp es producir una p�gina Web con una tabla que muestre el contenido de la tabla Libros de la base de datos, con enlaces para a�adir nuevos libros a la base de datos [Form_Insertar.jsp]; borrar libros espec�ficos de la base de datos [Form_Borrar.jsp]; y modificar libros espec�ficos en la base de datos [Form_Modificar.jsp].
La siguiente figura muestra un ejemplo de la p�gina principal de la aplicaci�n Libreria:

�Aspecto de la P�gina
Este c�digo HTML dibuja el aspecto de la p�gina con un enlace a Form_Insertar.jsp en la parte inferior de la p�gina
<%@ page language="java" import="java.util.*, libreria.*" %> <html> <head> <title>P�gina Principal de mi Librer�a</title> </head> <body bgcolor="#ffffee"> <h1><center>P�gina Principal de mi Librer�a</center></h1> --- Aqu� va el c�digo que muestra la tabla con los datos <hr> <center> <destacar><a href="Form_Insertar.jsp">A�adir un Nuevo Libro</a></destacar> </center> </body> </html>
�Mostrar la Tabla
Este c�digo HTML muestra la tabla y sus cabeceras:
<table align="center" cellpadding="2" cellspacing="2" border="1" width="80%" bgcolor="#dddddd"> <tr> <th>Autor</th> <th>Titulo</th> <th>Ubicacion</th> <th>Accion</th> <th>ID</th> </tr> -- Aqu� va el c�digo que muestra los datos </table>
�Bucle por Todas las Filas de la Tabla
Este c�digo Java recupera el ejemplar libreria.LibrosBD almacenado en el atributo BaseDatos de la aplicaci�n Web por libreria.ContextListener:
LibrosBD librosBD = (LibrosBD) application.getAttribute ("BaseDatos");
Luego se recupera un objeto Collection con el contenido de la base de datos:
Collection libros = librosBD.getLibros();
Si el objeto Collection no es nulo, y contiene alg�n libro [es decir, su tama�o es mayor que cero], se procesa el objeto Collection recuperando uno por uno todos sus libros:
if (libros != null) { if (libros.size () > 0) { for (Iterator iterator = libros.iterator(); iterator.hasNext(); ) { ... aqu� va el c�digo que muestra los datos de una fila... } } }
�Mostrar un Libro en un Fila de la Tabla
Este c�digo HTML mezclado con c�digo Java muestra un libro en una fila de la tabla. El c�digo Java simplemente recupera campos individuales desde el libro:libro.getAutor() devuelve el nombre del autor del libro; libro.getTitulo () devuelve el t�tulo del libro; libro.getUbicacion () devuelve la ubicaci�n del libro en nuestras estanter�as; y libro.getId () devuelve el id. En la primera columna de la tabla va el nombre del autor; en la segunda columna va el t�tulo; en la tercera columna va la ubicaci�n, en la cuarta columna un enlace a Form_Borrar.jsp, la palabra "o" y un enlace a Form_Modificar.jsp; y en la columna final va el id:
<tr> <td> <%= libro.getAutor () %> </td> <td> <%= libro.getTitulo () %> </td> <td> <%= libro.getUbicacion () %> </td> <td align="center"> <destacar><a href="Form_Borrar.jsp?id=<%= libro.getId () %>"> Borrar</a></destacar> o <destacar><a href="Form_Modificar.jsp?id=<%= libro.getId () %>"> Modificar</a></destacar> </td> <td align="center"> <%= libro.getId () %> </td> </tr>
Cuando se selecciona el enlace "Borrar" se le pasa el par�metro id a la p�gina Form_Borrar.jsp, y cuando se selecciona el enlace "Modificar" se le pasa el mismo par�metro a la p�gina Form_Modificar.jsp.
�C�digo Completo de la P�gina Index.jsp
<%@ page language="java" import="java.util.*, libreria.*" %> <html> <head> <title>P�gina Principal de mi Librer�a</title> </head> <body bgcolor="#ffffee"> <h1><center>P�gina Principal de mi Librer�a</center></h1> <table align="center" cellpadding="2" cellspacing="2" border="1" width="80%" bgcolor="#dddddd"> <tr> <th>Autor</th> <th>Titulo</th> <th>Ubicacion</th> <th>Accion</th> <th>ID</th> </tr> <% LibrosBD librosBD = (LibrosBD) application.getAttribute ("BaseDatos"); Collection libros = librosBD.getLibros(); if (libros != null) { if (libros.size () > 0) { for (Iterator iterator = libros.iterator(); iterator.hasNext(); ) { Libro libro = (Libro) iterator.next (); %> <tr> <td> <%= libro.getAutor () %> </td> <td> <%= libro.getTitulo () %> </td> <td> <%= libro.getUbicacion () %> </td> <td align="center"> <destacar><a href="Form_Borrar.jsp?id=<%= libro.getId () %>"> Borrar</a></destacar> o <destacar><a href="Form_Modificar.jsp?id=<%= libro.getId () %>"> Modificar</a></destacar> </td> <td align="center"> <%= libro.getId () %> </td> </tr> <% } } } %> </table> <br> <hr> <center> <destacar><a href="Form_Insertar.jsp">A�adir un Nuevo Libro</a></destacar> </center> </body> </html>