Crear tu Primera Aplicación Web Real con Tomcat 4 y MySQL

Form_Modificar.jsp muestra un formulario HTML con los valores actuales del libro. Tambi�n tiene un bot�n para enviar el formulario y un enlace para abortar la solicitud.

.�Prop�sito de la P�gina Form_Modificar.jsp

El prop�sito de esta p�gina es producir una p�gina web que muestre los datos del libro a modificar. El usuario podr�a o modificar los datos del formulario y enviar el formulario para su procesamiento transfiriendo el control a la p�gina Modificar.jsp o abortar el proceso seleccionando un enlace de vuelta a la p�gina Index.jsp. La siguiente imagen nos muestra un ejemplo de la p�gina Form_Modificar.jsp:

.�Crear el Aspecto de la P�gina Form_Modificar.jsp

Este c�digo HTML crea el aspecto de la p�gina con un enlace en la parte inferior hacia la p�gina Index.jsp etiquetado como "Volver a la P�gina Inicial [el libro no se modificar�]".

<%@ page language="java" import="java.util.*, libreria.*" %>

<html>
    <head>
        <title>Librer�a -- Modificando el Libro <%= request.getParameter ("id") %></title>
    </head>
    <body bgcolor="#ffffee">
        <h1><center>Librer�a -- Modificando el Libro <%= request.getParameter ("id") %></center></h1>

        -- aqu� va el c�digo que recupera el libro a modificar --

        -- aqu� va el c�digo para mostrar el formulario --

         <hr>
        <center>
            <destacar><a href="Index.jsp">Volver a la P�gina Inicial 
                 [el libro no se modificar�]</a></destacar>
        </center>
    </body>
</html>

.�Recuperar los Datos del libro a Modificar

Este c�digo Java recupera el ejemplar de libreria.LibrosBD almacenado en el atributo BaseDatos de la aplicaci�n web por libreria.ContextListener:

        LibrosBD librosBD = (LibrosBD) application.getAttribute ("BaseDatos");

Luego obtiene de la base de datos el libro cuyo id se ha pasado como par�metro a esta p�gina desde Index.jsp:

        Libro libro = (Libro) librosBD.getLibro (request.getParameter ("id"));

.�Mostrar el Formulario

Este c�digo HTML mezclado con c�digo Java crea un formulario cuya acci�n es "postear" los datos modificados del libro que hay en los campos de entrada a la p�gina Modificar.jsp:

    <form method="post" action="Modificar.jsp">

Uno de estos campos es un campo oculto que contiene el id del libro a modificar -- esto nos asegura que el par�metro id pasado desde la p�gina Index.jsp se pasa a la p�gina Modificar.jsp.

    <input name="id" type="hidden" value="<%= libro.getId () %>">

Luego se muestra una tabla; en la columna izquierda de la tabla se muestran los nombres de los campos; la columna derecha contiene los campos de entrada pre-rellenos con los datos existentes:

            <table align="center" cellpadding="2" cellspacing="2" border="1" 
                       width="80%" bgcolor="#dddddd">
                <tr>
                    <th>ISBN:</th>
                    <td><input name="isbn" type="text" value="<%= libro.getIsbn () %>"></td>
                </tr>
                <tr>
                    <th>Editorial:</th>
                    <td><input name="editorial" type="text" value="<%= libro.getEditorial() %>"></td>
                </tr>
                <tr>
                    <th>Autor:</th>
                    <td><input name="autor" type="text" value="<%= libro.getAutor () %>"></td>
                </tr>
                <tr>
                    <th>Categor�a:</th>
                    <td><input name="categoria" type="text" value="<%= libro.getCategoria () %>"></td>
                </tr>
                <tr>
                    <th>T�tulo:</th>
                    <td><input name="titulo" type="text" value="<%= libro.getTitulo () %>"></td>
                </tr>
                <tr>
                    <th>Ubicaci�n:</th>
                    <td><input name="ubicacion" type="text" value="<%= libro.getUbicacion () %>"></td>
                </tr>
            </table>

Luego se define un campo oculto que simula la pulsaci�n del bot�n submit cuando se pulsa la tecla return:

    <input name="pagemode" type="hidden" value="submit">

Luego se muestra el bot�n de env�o del formulario etiquetado "Modificar el Libro nnn":

    <input align="center" type="submit" value="Modificar el Libro <%= request.getParameter ("id")%>">

Cuando se pulsa el bot�n de env�o, se pasan los par�metros isbn, editorial, autor, categoria, titulo y ubicacion a la p�gina Modificar.jsp

.�C�digo Completo de la P�gina Form_Modificar.jsp

<%@ page language="java" import="java.util.*, libreria.*" %>

<html>
    <head>
        <title>Librer�a -- Modificando el Libro <%= request.getParameter ("id") %></title>
    </head>
    <body bgcolor="#ffffee">
        <h1><center>Librer�a -- Modificando el Libro <%= request.getParameter ("id") %></center></h1>
<%
        LibrosBD librosBD = (LibrosBD) application.getAttribute ("BaseDatos");
        Libro libro = (Libro) librosBD.getLibro (request.getParameter ("id"));
        if (libro != null){
%>
            <form method="post" action="Modificar.jsp">
            <input name="id" type="hidden" value="<%= libro.getId () %>">
            <table align="center" cellpadding="2" cellspacing="2" border="1" 
                       width="80%" bgcolor="#dddddd">
                <tr>
                    <th>ISBN:</th>
                    <td><input name="isbn" type="text" value="<%= libro.getIsbn () %>"></td>
                </tr>
                <tr>
                    <th>Editorial:</th>
                    <td><input name="editorial" type="text" value="<%= libro.getEditorial() %>"></td>
                </tr>
                <tr>
                    <th>Autor:</th>
                    <td><input name="autor" type="text" value="<%= libro.getAutor () %>"></td>
                </tr>
                <tr>
                    <th>Categor�a:</th>
                    <td><input name="categoria" type="text" value="<%= libro.getCategoria () %>"></td>
                </tr>
                <tr>
                    <th>T�tulo:</th>
                    <td><input name="titulo" type="text" value="<%= libro.getTitulo () %>"></td>
                </tr>
                <tr>
                    <th>Ubicaci�n:</th>
                    <td><input name="ubicacion" type="text" value="<%= libro.getUbicacion () %>"></td>
                </tr>
            </table>
            <br>
            <center>
                <input name="pagemode" type="hidden" value="submit">
                <input align="center" type="submit" value="Modificar el Libro 
                     <%= request.getParameter ("id") %>">
            </center>
<%
        }
        else {
%>
            <center>
                <h2><font color="#cc0000">No se pudo encontrar el libro  
                      <%= request.getParameter ("id") %></font></h2>
            </center>
<%
        }
%>
        <hr>
        <center>
            <destacar><a href="Index.jsp">Volver a la P�gina Inicial 
                   [el libro no se modificar�]</a></destacar>
        </center>
    </body>
</html>

.�Modificar.jsp

Modificar.jsp muestra en una tabla los campos modificados del libro recibido. Luego intenta modificar la base de datos y muestra el �xito o el fracaso del intento.

.�Prop�sito de la P�gina Modificar.jsp

El prop�sito de esta p�gina es producir una p�gina web con una tabla que muestre los par�metros del libro pasados desde la p�gina Form_Modificar.jsp; realmente realiza la actualizaci�n de la base de datos; muestra si la base de datos se ha actualizado con �xito o no; y espera hasta que el usuario pulse el enlace de vuelta a la p�gina Index.jsp. Aqu� tenemos un ejemplo de la p�gina Modificar.jsp:

.�Aspecto de la P�gina Modificar.jsp

Este c�digo HTML genera el aspecto de la p�gina con un enlace a Index.jsp en la parte inferior de la p�gina:

<%@ page language="java" import="java.util.*, libreria.*" %>

<html>
    <head>
        <title>Librer�a: Modificando el Libro  <%= request.getParameter ("id") %></title>
    </head>
    <body bgcolor="#ffffee">
        <h1><center>Librer�a: Modificando el Libro   <%= request.getParameter ("id") %></center></h1>

            -- aqu� va el c�digo que muestra la tabla --

            -- aqu� va el c�digo que actualiza la base de datos y muestra
               el �xito o el fracaso de la operaci�n --

        <center>
            <destacar><a href="Index.jsp">Volver a la P�gina Inicial</a></destacar>
        </center>
    </body>
</html>

.�Mostrar la Tabla

Este c�digo HTML mezclado con c�digo Java muestra la tabla; en la columna izquierda se muestran los nombres de los campos; la columna derecha contiene los datos del libro recuperados de los par�metros:

        <table align="center" cellpadding="2" cellspacing="2" border="1" 
                   width="80%" bgcolor="#dddddd">
            <tr>
                <th>ISBN:</th>
                <td><%= request.getParameter ("isbn") %></td>
            </tr>
            <tr>
                <th>Editorial:</th>
                <td><%= request.getParameter ("editorial") %></td>
            </tr>
            <tr>
                <th>Autor:</th>
                <td><%= request.getParameter ("autor") %></td>
            </tr>
            <tr>
                <th>Categor�a:</th>
                <td><%= request.getParameter ("categoria") %></td>
            </tr>
            <tr>
                <th>T�tulo:</th>
                <td><%= request.getParameter ("titulo") %></td>
            </tr>
            <tr>
                <th>Ubicaci�n:</th>
                <td><%= request.getParameter ("ubicacion") %></td>
            </tr>
        </table>

.�Actualizar la Base de Datos y Mostrar el �xito o el Fracaso

Este c�digo Java mezclado con c�digo HTML recupera el ejemplar de libreria.LibrosBD almacenado en el atributo BaseDatos de la aplicaci�n por libreria.ContextListener:

            LibrosBD librosBD = (LibrosBD) application.getAttribute ("BaseDatos");

Esto construye un objeto Libro desde los par�metros pasados desde Form_Modificar.jsp:

            Libro libro = new Libro  (
                request.getParameter ("id"),
                request.getParameter ("isbn"),
                request.getParameter ("editorial"),
                request.getParameter ("autor"),
                request.getParameter ("categoria"),
                request.getParameter ("titulo"),
                request.getParameter ("ubicacion")
            );

Luego se modifica el libro en la base de datos:

    int rowsAffected = librosBD.modificarLibro (libro);

Si s�lo se ve afectada una fila por la actualizaci�n de la base de datos se muestra el mensaje "Se ha modificado el Libro nnn" en color verde, si no es as�, se muestra el mensaje "No se pudo modificar el libro nnn" en color rojo:

    if (rowsAffected == 1) {
%>
        <center>
            <h2><font color="#00cc00">Se ha modificado el Libro 
              <%= request.getParameter ("id") %></font></h2>
        </center>
<%
    }
    else {
%>
        <center>
            <h2><font color="#cc0000">No se Pudo modificar el Libro 
               <%= request.getParameter ("id") %></font></h2>
        </center>
<%
    }

.�C�digo Completo de la P�gina Modificar.jsp

<%@ page language="java" import="java.util.*, libreria.*" %>

<html>
    <head>
        <title>Librer�a: Modificando el Libro  <%= request.getParameter ("id") %></title>
    </head>
    <body bgcolor="#ffffee">
        <h1><center>Librer�a: Modificando el Libro   <%= request.getParameter ("id") %></center></h1>
        <table align="center" cellpadding="2" cellspacing="2" border="1" 
                   width="80%" bgcolor="#dddddd">
            <tr>
                <th>ISBN:</th>
                <td><%= request.getParameter ("isbn") %></td>
            </tr>
            <tr>
                <th>Editorial:</th>
                <td><%= request.getParameter ("editorial") %></td>
            </tr>
            <tr>
                <th>Autor:</th>
                <td><%= request.getParameter ("autor") %></td>
            </tr>
            <tr>
                <th>Categor�a:</th>
                <td><%= request.getParameter ("categoria") %></td>
            </tr>
            <tr>
                <th>T�tulo:</th>
                <td><%= request.getParameter ("titulo") %></td>
            </tr>
            <tr>
                <th>Ubicaci�n:</th>
                <td><%= request.getParameter ("ubicacion") %></td>
            </tr>
        </table>
<%
            LibrosBD librosBD = (LibrosBD) application.getAttribute ("BaseDatos");
            Libro libro = new Libro  (
                request.getParameter ("id"),
                request.getParameter ("isbn"),
                request.getParameter ("editorial"),
                request.getParameter ("autor"),
                request.getParameter ("categoria"),
                request.getParameter ("titulo"),
                request.getParameter ("ubicacion")
            );
        int rowsAffected = librosBD.modificarLibro(libro);
        if (rowsAffected == 1) {
%>
            <center>
                <h2><font color="#00cc00">Se ha modificado el Libro 
                    <%= request.getParameter ("id") %></font></h2>
            </center>
<%
        }
        else
        {
%>
            <center>
                <h2><font color="#cc0000">No se pudo modificar el Libro  
                     <%= request.getParameter ("id") %></font></h2>
            </center>
<%
        }
%>
        <hr>
        <center>
            <destacar><a href="Index.jsp">Volver a la P�gina Inicial</a></destacar>
        </center>
    </body>
</html>

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR