Aplicaciones con JSPs

0
83630

Proyectos con JSPs

Todo el que haya desarrollado alguna vez páginas HTML verá lo sencillo que
es construir aplicaciones en Java utilizando JSPs.

Vamos a empezar con ejemplos sencillos que iremos complicando …

Uno de los elementos claves en el desarrollo de aplicaciones es tener claro
el objetivo. El desarrollo de JSPs es un medio que vamos a utilizar con el fin
de crear un buscador de tutoriales.

Preparación del entorno

Vamos a usar Forte 4 (la versión gratuita … que esta basada en NetBeans y
que deja de estar soportada por SUN) para montar nuestro ejemplo .

Creamos el proyecto

Seleccionamos el directorio de trabajo.

Elegimos la carpeta deseada

Ahora creamos un modulo Web …. pulsando en File->new

Y convertimos la carpeta en una carpeta Web

Lectura de parámetros

Una página dinámica mal va a poder hacer su trabajo si no es capaz de leer
los datos que recibe de un formulario.

 

Vemos como queda nuestra página

Vamos a crear un formulario en HTML. Para ello nos podríamos ayudar del
FrontPage….. luego pegaremos el código.

Si pulsamos el botón de previsualización …. ya vemos nuestro formulario

Ahora debemos construir el JSP.

Le asignamos un nombre

Y vamos a leer el parámetro y mostrarlo en pantalla .. luego ya
haremos cosas un poco más complicadas.

Si volvemos a ver la página HTML

Y pulsamos el botón vemos que todo a funcionado.

Como hemos podido ver, la etiqueta <%=   %> permite
mostrar el valor de una variable.

Hay otra etiqueta dentro de las páginas JSP, todavía más
poderosa <% %>, ya que nos permite, de un modo sencillo, incluir cualquier
código Java dentro de nuestra página. 

<%@page contentType=»text/html» import=»java.util.*» %>
<html>
<head><title>JSP Page</title></head>
<body>

<% 
String cadena = request.getParameter(«palabras»);
int contador = 0;

StringTokenizer st = new StringTokenizer(cadena);
while (st.hasMoreTokens())
{
String SubCadena = st.nextToken();
contador++;

%>
<%= («\n<br> La subcadena es: <b>» + SubCadena + «</b>»)
%>
<%

}
%>

<%= «<br>Y el contador es: » + contador %>

</body>
</html>

 

Probamos nuestra página.

 

Y el resultado es

 

Creación de la base de datos

Ahora crearemos la base de datos donde almacenar la información
sobre los tutoriales.

Nos vamos al Control Center de MySQL (ver
tutorial asociado
)

  

Conectamos a ella

Creamos las tablas en la base de datos

Introducimos todos los campos

Guardamos y damos nombre a la tabla

Vemos el resultado generado

Ahora hacemos doble click sobre el nombre de la tabla … e insertamos
registros

 

Uso de JavaBeans

Ahora, podríamos tratar de insertar el código en nuestro JSP para ir a la
base de datos y buscar los tutoriales que tengan dentro de su descripción una
de las palabras clave.

Obviamente, no deberíamos mezclar la lógica de presentación y la lógica
de negocio por lo que vamos a meter el acceso a la base de datos en un
componente: Un JavaBean.

Un JavaBean es una clase Java donde se deben cumplir algunas reglas básicas
(que veremos en otro tutorial). Lo mejor es que creemos uno básico.

El funcionamiento será simple … insertaremos un JavaBean en nuestro JSP.
Le pasaremos como parámetro la variable que nos pasen desde el formulario y es
Bean recuperará los datos de la base de datos y nos proporcionará métodos
para saber los que hay e iterar por ellos.

Creamos un paquete donde meter nuestros Beans

Creamos el Bean

Le asignamos un nombre

Y vemos que se ha creado un monton de código de ejemplo ….

Si cambiamos el nombre de la propiedad …. todo cambiara automáticamente
(bueno … no es perfecto y algunas cosas se le olvidan y hay que cambiarlas a
mano). Ya tenemos una propiedad que se llama Cadena de Consulta.

Ahora añadimos el método que nos retorne la cantidad de elementos

Insertamos cada uno de los métodos con datos de pruebas

Ahora modificamos nuestro JSP para incluir el Bean …. tambien debemos
darnos cuenta que hemos cambiado de sitio nuestro Bean en el proyecto para que
cuelgue de la carpeta WEB_INF.

Si reejecutamos el código …. veremos que ya lo tenemos …… 

Vemos que se pasa bien el parámetro …. y que somos capaces de recuperar
las cadenas de vuelta …..

Ahora solo tenemos que ligar nuestro Bean con la base de datos …… Esto ya
es programación tradicional.

Podeir revisar algunos de los tutoriales que tenemos que os ensaña com trabajarcon Java y MySql

De todos modos .. vamos a completar de un modo rápido la aplicación.

Incluimos el path donde se encuentra el driver JDBC de mysql

 

Una vez que nos aparece en pantalla… lo copiamos y pegamos sobre el
directorio WEB-INF/Classes

Hemos insertado el  unas nuevas funciones para recuperar los datos de la
consulta.

ESTE NO ES EL MODO OPTIMO DE HACERLO… ES SOLO UN EJEMPLO

    public String retornaConsulta() {
        return ejecuta("select * from tutoriales");
    }


    void depura(String mensaje) {
        System.out.println(mensaje);
    }

    String ejecuta(String consultaGenerada)
    {
        depura("Empezamos");

        // REGISTER DRIVER
        try
        {
            Driver d = (Driver)Class.forName("com.mysql.jdbc.Driver").newInstance();
        }
        catch (Exception e)
        {
            System.out.println(e);
        }

        // GET CONNECTION
        Connection con = null;

        try
        {
            depura("Recuperamos conexión");
            con = DriverManager.getConnection("jdbc:mysql://localhost/tutoriales","","");
        }
        catch(Exception e)
        {
            System.out.println(e);
        }

        // GET CONNECTION WARNINGS
        SQLWarning warning = null;
        try
        {
            warning = con.getWarnings();

            if (warning == null)
            {
                System.out.println("No Warnings");
                // return;
            }

            while (warning != null)
            {
                System.out.println("Warning: "+warning);
                warning = warning.getNextWarning();
            }
        }
        catch (Exception e)
        {
            System.out.println(e);
        }

        // CREATE STATEMENT
        java.sql.Statement stmt = null;

        try
        {
            stmt = con.createStatement();
        }
        catch (Exception e)
        {
            System.out.println(e);
        }

        // EXECUTE QUERY
        ResultSet results = null;
        try
        {

            results = stmt.executeQuery(consultaGenerada);
        }
        catch (Exception e)
        {
            System.out.println(e);
        }

        // GET ALL RESULTS
        StringBuffer buf = new StringBuffer();

        try
        {
            ResultSetMetaData rsmd = results.getMetaData();
            int numCols = rsmd.getColumnCount();
            int i, rowcount = 0;

            // get column header info
            for (i=1; i <= numCols; i++) {
                if (i > 1) buf.append(",");
                buf.append(rsmd.getColumnLabel(i));
            }
            buf.append("\n");

            // break it off at 100 rows max
            while (results.next() && rowcount < 100) {
                // Loop through each column, getting the column
                // data and displaying

                for (i=1; i <= numCols; i++) {
                    if (i > 1) buf.append(",");
                    buf.append(results.getString(i));
                }
                buf.append("\n");
                rowcount++;
            }

            System.out.println(buf);
            results.close();

        }
        catch (Exception e)
        {
            System.out.println(e);
            return e.getMessage();
        }

        depura("Finalizamos");
        return buf.toString();
    }
    

Con esto podemos ver en pantalla lo que se retorna .. que no es poco ….
para ver como generar este código de modo automático podemos visitar otro
tutorial …… JDBC
automático

Insertamos algún registro más en la base de datos

Cambiando el código de nuestro Bean

Y nuestro JSP se vería como

<%@page contentType=»text/html» import=»java.util.*» %>
<html>
<head><title>JSP Page</title></head>
<body>

<jsp:useBean id=»beanconsulta» scope=»request» 
class=»roberto.AccesoTutores» />

<jsp:setProperty name=»beanconsulta» 
property=»cadenaConsulta» param=»palabras» />

Tutoriales disponibles para la consulta:<b><br> <%= beanconsulta.retornaConsulta() %> </b>
<br>

<% 
int numeroElementos = beanconsulta.retornaNumeroElementos();

for (int i=0; i < numeroElementos; i++)
{
%>
<br><%= beanconsulta.retornaLink(i) %>
<br><%= beanconsulta.retornaTitulo(i) %>
<br><%= beanconsulta.retornaDescripcion(i) %>
<br><br>
<%
}
%>

</body>
</html>

Realizamos la petición:

Y obtenemos la respuesta

Ahora solo nos queda darle un toque para que el diseño gráfico
sea un poco más agradable.

<%@page contentType=»text/html» import=»java.util.*» %>
<html>
<head><title>JSP Page</title></head>
<body>

<jsp:useBean id=»beanconsulta» scope=»request» 
class=»roberto.AccesoTutores» />

<jsp:setProperty name=»beanconsulta» property=»cadenaConsulta» param=»palabras» />

<% beanconsulta.retornaConsulta(); %>

<p><b>Resultado de la Consulta:&nbsp; </b>Encontrados <b> <%= beanconsulta.retornaNumeroElementos() %></b> resultados.</p>

<br>
<table border=»1″ width=»90%» bordercolor=»#FFFFFF» cellspacing=»0″ cellpadding=»0″ height=»41″ bgcolor=»#800000″>
<tr>
<td width=»33%» align=»left» height=»18″ bordercolor=»#800000″><b><font color=»#FFFFFF»>Título</font></b></td>
<td width=»67%» align=»left» height=»18″ bordercolor=»#800000″><b><font color=»#FFFFFF»>Descripción</font></b></td>
</tr>

<% 
int numeroElementos = beanconsulta.retornaNumeroElementos();

for (int i=0; i < numeroElementos; i++)
{
%>
<tr>
<td width=»33%» align=»left» height=»18″ bordercolor=»#800000″ bgcolor=»#FFFFFF»> 

<a href=»<%= beanconsulta.retornaLink(i) %>»><%= beanconsulta.retornaTitulo(i) %></a>

</td>
<td width=»67%» align=»left» height=»18″ bordercolor=»#800000″ bgcolor=»#FFFFFF»><%= beanconsulta.retornaDescripcion(i) %>

</td>
</tr>
<%
}
%>

</table>
</body>
</html>

 

 

Bueno …..  creo que para ser un primer ejemplo … hemos hecho muchas
cosas …. en próximos tutoriales veremos más ejemplo del desarrollo con JSPs
y la combinación con otros componentes.

Ultimo cambio 06/25/2003

Sobre el
Autor ..

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad