Jose Lenin Estrada Meza

Java
Home
EAServer 5.0
Power Builder 10.0
HTML
Componentes - Corba
Web Services
Java WEB y EAserver
Power Designer 11.0
Java
Tips de EAServer
MIGRANDO UN APLICATIVO EN CLIENTE SERVIDOR A WEB DISTRIBUIDO
Java Script
Curriculum Vitae

El uso principal que se hace de Internet e incluso de las redes internas (corporativas) es correo electrónico (e-mail), aunque actualmente hay un auge sorprendente de la navegación web . Los documentos web pueden contener variedad de texto, gráficos de todas clases y proporcionar enlaces hipertexto hacia cualquier lugar de la red. Los navegadores utilizan documentos escritos en lenguaje HTML. La combinación actual de navegadores HTML/WWW están limitados pues, a texto y gráficos. Si se quiere reproducir un sonido o ejecutar un programa de demostración, primero hemos de bajarnos (download) el fichero en cuestión y luego utilizar un programa en nuestro ordenador capaz de entender el formato de ese fichero, o bien cargar un módulo ( plug-in ) en nuestro navegador para que pueda interpretar el fichero que hemos bajado.

Hasta ahora, la única forma de realizar una página web con contenido interactivo, era mediante la interfaz CGI ( Common Gateway Interface ), que permite pasar parámetros entre formularios definidos en lenguaje HTML y programas escritos en Perl o en C. Esta interfaz resulta muy incómoda de programar y es pobre en sus posibilidades.

El lenguaje Java y los navegadores con soporte Java, proporcionan una forma diferente de hacer que ese navegador sea capaz de ejecutar programas. Con Java se puede reproducir sonido directamente desde el navegador, se pueden visitar home pages con animaciones, se puede enseñar al navegador a manejar nuevos formatos de ficheros, e incluso, cuando se pueda transmitir video por las líneas telefónicas, nuestro navegador estará preparado para mostrar esas imágenes.

Utilizando Java, se pueden eliminar los inconvenientes de la interfaz CGI y también se pueden añadir aplicaciones que vayan desde experimentos científicos interactivos de propósito educativo a juegos o aplicaciones especializadas para la televenta. Es posible implementar publicidad interactiva y periódicos personalizados. Por ejemplo, alguien podría escribir un programa Java que implementara una simulación química interactiva (una cadena de adn). Utilizando un navegador con soporte Java, un usuario podría recibir fácilmente esa simulación e interaccionar con ella, en lugar de conseguir simplemente un dibujo estático y algo de texto. Lo recibido cobra vida . Además, con Java podemos estar seguros de que el código que hace funcionar el experimento químico no contiene ningún trozo de código malicioso que dañe al sistema. El código que intente actuar destructivamente o que contenga errores, no podrá traspasar los muros defensivos colocados por las características de seguridad y robustez de Java.

Además, Java proporciona una nueva forma de acceder a las aplicaciones. El software viaja transparentemente a través de la red. No hay necesidad de instalar las aplicaciones, ellas mismas vienen cuando se necesitan. Por ejemplo, la mayoría de los navegadores del Web pueden procesar un reducido número de formatos gráficos (típicamente GIF y JPEG). Si se encuentran con otro tipo de formato, el navegador estándar no tiene capacidad para procesarlo, tendría que ser actualizado para poder aprovechar las ventajas del nuevo formato. Sin embargo, un navegador con soporte Java puede enlazar con el servidor que contiene el algoritmo que procesa ese nuevo formato y mostrar la imagen. Por lo tanto, si alguien inventa un nuevo algoritmo de compresión para imágenes, el inventor sólo necesita estar seguro de que hay una copia en código Java de ese algoritmo instalada en el servidor que contiene las imágenes que quiere publicar. Es decir, los navegadores con soporte Java se actualizan a sí mismos sobre la marcha, cuando encuentran un nuevo tipo de fichero o algoritmo.

 

PROGRAMACION Cuando se programa en Java, se coloca todo el código en métodos, de la misma forma que se escriben funciones en lenguajes como C.Comentarios
En Java hay tres tipos de comentarios:

// comentarios para una sola línea
/* comentarios de una o más líneas */
/** comentario de documentación, de una o más líneas */

Los dos primeros tipos de comentarios son los que todo programador conoce y se utilizan del mismo modo. Los comentarios de documentación, colocados inmediatamente antes de una declaración (de variable o función), indican que ese comentario ha de ser colocado en la documentación que se genera automáticamente cuando se utiliza la herramienta de Java, javadoc. Dichos comentarios sirven como descripción del elemento declarado permitiendo generar una documentación de nuestras clases escrita al mismo tiempo que se genera el código.

En este tipo de comentario para documentación, se permite la introducción de algunos tokens o palabras clave, que harán que la información que les sigue aparezca de forma diferente al resto en la documentación.Identificadores
Los identificadores nombran variables, funciones, clases y objetos; cualquier cosa que el programador necesite identificar o usar.

En Java, un identificador comienza con una letra, un subrayado (_) o un símbolo de dólar ($). Los siguientes caracteres pueden ser letras o dígitos. Se distinguen las mayúsculas de las minúsculas y no hay longitud máxima.

Serían identificadores válidos:

identificador nombre_usuario Nombre_Usuario _variable_del_sistema $transaccion

y su uso sería, por ejemplo:

int contador_principal; char _lista_de_ficheros; float $cantidad_en_Ptas;

Palabras clave
Las siguientes son las palabras clave que están definidas en Java y que no se pueden utilizar como indentificadores:

abstract continue for new switch boolean default goto null synchronized break do if package this byte double implements private threadsafe byvalue else import protected throw case extends instanceof public transient catch false int return true char final interface short try

class finally long static void

const float native super while

Palabras Reservadas
Además, el lenguaje se reserva unas cuantas palabras más, pero que hasta ahora no tienen un cometido específico. Son:

cast future generic inner operator outer rest var

Literales
Un valor constante en Java se crea utilizando una representación literal de él. Java utiliza cinco tipos de elementos: enteros, reales en coma flotante, booleanos, caracteres y cadenas, que se pueden poner en cualquier lugar del código fuente de Java. Cada uno de estos literales tiene un tipo correspondiente asociado con él.

Enteros:

byte 8 bits complemento a dos short 16 bits complemento a dos int 32 bits complemento a dos long 64 bits complemento a dos Por ejemplo: 21 077 0xDC00

Reales en coma flotante:

float 32 bits IEEE 754 double 64 bits IEEE 754 Por ejemplo: 3.14 2e12 3.1E12

Booleanos:

true false

Caracteres:

Por ejemplo: a t u???? [????] es un número unicode

Cadenas:

Por ejemplo: "Esto es una cadena literal"Arrays
Se pueden declarar en Java arrays de cualquier tipo:

char s[]; int iArray[];

Incluso se pueden construir arrays de arrays:

int tabla[][] = new int[4][5];

Los límites de los arrays se comprueban en tiempo de ejecución para evitar desbordamientos y la corrupción de memoria.

En Java un array es realmente un objeto, porque tiene redefinido el operador []. Tiene una función miembro: length. Se puede utilizar este método para conocer la longitud de cualquier array.

int a[][] = new int[10][3]; a.length; /* 10 */ a[0].length; /* 3 */

Para crear un array en Java hay dos métodos básicos. Crear un array vacío:

int lista[] = new int[50];

o se puede crear ya el array con sus valores iniciales:

String nombres[] = { "Juan","Pepe","Pedro","Maria" };

Esto que es equivalente a:

String nombres[]; nombres = new String[4]; nombres[0] = new String( "Juan" ); nombres[1] = new String( "Pepe" ); nombres[2] = new String( "Pedro" );

nombres[3] = new String( "Maria" );

No se pueden crear arrays estáticos en tiempo de compilación:

int lista[50]; // generará un error en tiempo de compilación

Tampoco se puede rellenar un array sin declarar el tamaño con el operador new:

int lista[]; for( int i=0; i < 9; i++ ) lista[i] = i;

Es decir, todos los arrays en Java son estáticos. Para convertir un array en el equivalente a un array dinámico en C/C++, se usa la clase vector, que permite operaciones de inserción, borrado, etc. en el array.Operadores
Los operadores de Java son muy parecidos en estilo y funcionamiento a los de C. En la siguiente tabla aparecen los operadores que se utilizan en Java, por orden de precedencia:

. [] () ++ -- ! ~ instanceof * / % + - << >> >>> < > <= >= == != & ^ | && || ? : = op= (*= /= %= += -= etc.) ,

Los operadores numéricos se comportan como esperamos:

int + int = int

Los operadores relacionales devuelven un valor booleano.

Para las cadenas, se pueden utilizar los operadores relacionales para comparaciones además de + y += para la concatenación:

String nombre = "nombre" + "Apellido";

El operador = siempre hace copias de objetos, marcando los antiguos para borrarlos, y ya se encargará el garbage collector de devolver al sistema la memoria ocupada por el objeto eliminado.Separadores
Sólo hay un par de secuencias con otros caracteres que pueden aparecer en el código Java; son los separadores simples, que van a definir la forma y función del código. Los separadores admitidos en Java son:

() - paréntesis. Para contener listas de parámetros en la definición y llamada a métodos. También se utiliza para definir precedencia en expresiones, contener expresiones para control de flujo y rodear las conversiones de tipo.

{} - llaves. Para contener los valores de matrices inicializadas automáticamente. También se utiliza para definir un bloque de código, para clases, métodos y ámbitos locales.

[] - corchetes. Para declarar tipos matriz. También se utiliza cuando se referencian valores de matriz.

; - punto y coma. Separa sentencias.

, - coma. Separa identificadores consecutivos en una declaración de variables. También se utiliza para encadenar sentencias dentro de una sentencia for.

. - punto. Para separar nombres de paquete de subpaquetes y clases. También se utiliza para separar una variable o método de una variable de referencia.

 

Parte I, Conocer JSP

Si hemos tenido la oportunidad de construir aplicaciones Web usando tecnologías como CGI y Servlets, estaremos acostumbrados a la idea de escribir un programa que genere la pagina entera (las partes estáticas y dinámicas) usando el mismo programa. Si estamos buscando una solución en la cual podamos separar las dos partes, no tenemos que buscar más. Las JavaServer Pages (JSP) están aquí.

Las páginas JSP permiten que separemos la presentación final de la lógica de negocio (capas media y final). Es un gran "Rapid Application Development" (RAD) de aplicaciones Web. Esta sección explica los conceptos y las ventajas de la tecnología JSP, y luego demostraremos cómo utilizar esta tecnología emocionante, y cómo crear componentes reutilizables para manejar formularios.

JavaServer Pages (JSP)

La tecnología JSP es una especificación abierta (y gratis) disponible y desarrollada por Sun Microsystems como un alternativa a Active Server Pages (ASP) de Microsoft, y son un componente dominante de la especificación de Java 2 Enterprise Edition (J2EE). Muchos de los servidores de aplicaciones comercialmente disponibles (como BEA WebLogic, IBM WebSphere, Live JRun, Orion, etcétera) ya utilizan tecnología JSP.

 

Componentes Reutilizables

El ejemplo del formulario anterior es simple en el sentido de que no hay mucho código implicado. Cuanto más código esté implicado, más importante es no mezclar la lógica del negocio con la presentación final en el mismo fichero. La separación de la lógica de negocio de la presentación permite cambios en cualquier sitio sin afectar al otro. Sin embargo, el código de producción JSP se debe limitar a la presentación final. Así pues, ¿cómo implementamos la parte de la lógica de negocio?

Aquí es donde los JavaBeans entran en juego. Esta tecnología es un modelo de componente portable, independiente de la plataforma que permite a los desarrolladors escribir componentes y reutilizarlos en cualquier lugar. En el contexto de JSP, los JavaBeans contienen la lógica de negocio que devuelve datos a un script en una página JSP, que a su vez formatea los datos devueltos por el componente JavaBean para su visualización en el navegdor. Una página JSP utiliza un componente JavaBean fijando y obteniendo las propiedades que proporciona.

 

Ejemplo: Usar JavaBeans con JSP

Ahora, veamos como modificar el ejemplo anterior, process.jsp para usar JavaBeans. En el formulario anterior había dos campos: name y email. En JavaBeans, son llamados propiedades. Por eso, primero escribimos un componente JavaBean con métodos setX getX, donde X es el nombre de la propiedad. Por ejemplo, si tenemos unos métodos llamados setName y getName entonces tenemos una propiedad llamada name. El ejemplo 5 muestra un componente FormBean.

Los buenos componentes deben poder interoperar con otros componentes de diferentes vendedores. Por lo tanto, para conseguir la reutilización del componente, debemos seguir dos reglas importantes (que son impuestas por la arquitectura JavaBeans):

Nuestra clase bean debe proporcionar un constructor sin argumentos para que pueda ser creado usando Beans.instantiate.

Nuestra clase bean debe soportar persistencia implementando el interface Serializable o Externalizable.

Ejemplo 5: FormBean.java

package userinfo;

import java.io.*;

public class FormBean implements Serializable {

private String name;

private String email;

public FormBean() {

name = null;

email = null;

}

public void setName(String name) {

this.name = name;

}

public String getName() {

return name;

}

public void setEmail(String email) {

this.email = email;

}

public String getEmail() {

return email;

}

}

Para poder usar el componente FormBean en el fichero JSP, necesitamos ejemplarizar el componente. Esto se hace usando la etiqueta <jsp:useBean>. La siguiente línea <jsp:setProperty> se ejecuta cuando se ha ejemplarizado el bean, y se usa para inicializar sus propiedades. En este caso, ambas propiedades (name y email) se configuran usando una sóla sentencia. Otra posible forma de configurar las propiedades es hacerlo una a una, pero primero necesitamos recuperar los datos desde el formulario. Aquí tenemos un ejemplo de como configurar la propiedad name:

<%! String yourname, youremail; %>

<% yourname = request.getParameter("name"); %>

<jsp:setProperty name="formbean" property="name"

value="<%=yourname%>"/>

Una vez que se han inicializado las propiedades con los datos recuperados del formulario, se recuperan los valores de las propiedades usando <jsp:getProperty> en la parte else, como se ve en el Ejemplo 6: Ejemplo 6: process2.jsp

<jsp:useBean id="formbean" class="userinfo.FormBean"/>

<jsp:setProperty name="formbean" property="*"/>

<HTML>

<HEAD>

<TITLE>Form Example</TITLE>

</HEAD>

<BODY BGCOLOR="#ffffcc">

<% if (request.getParameter("name")==null

&& request.getParameter("email") == null) { %>

<CENTER>

<H2>User Info Request Form </H2>

<form method="GET" action="process2.jsp">

<P>

Your name: <input type="text" name="name" size=27>

<p>

Your email: <input type="text" name="email" size=27>

<P>

<input type="submit" value="Process">

</FORM>

</CENTER>

<% } else { %>

<P>

<B>You have provided the following info</B>:

<P>

<B>Name</B>: <jsp:getProperty name="formbean" property="name"/>

<P>

<B>Email</B>: <jsp:getProperty name="formbean" property="email"/>

<% } %>

</BODY>

</HTML>

 

El uso principal que se hace de Internet e incluso de las redes internas (corporativas) es correo electrónico (e-mail), aunque actualmente hay un auge sorprendente de la navegación web . Los documentos web pueden contener variedad de texto, gráficos de todas clases y proporcionar enlaces hipertexto hacia cualquier lugar de la red. Los navegadores utilizan documentos escritos en lenguaje HTML. La combinación actual de navegadores HTML/WWW están limitados pues, a texto y gráficos. Si se quiere reproducir un sonido o ejecutar un programa de demostración, primero hemos de bajarnos (download) el fichero en cuestión y luego utilizar un programa en nuestro ordenador capaz de entender el formato de ese fichero, o bien cargar un módulo ( plug-in ) en nuestro navegador para que pueda interpretar el fichero que hemos bajado.

Hasta ahora, la única forma de realizar una página web con contenido interactivo, era mediante la interfaz CGI ( Common Gateway Interface ), que permite pasar parámetros entre formularios definidos en lenguaje HTML y programas escritos en Perl o en C. Esta interfaz resulta muy incómoda de programar y es pobre en sus posibilidades.

El lenguaje Java y los navegadores con soporte Java, proporcionan una forma diferente de hacer que ese navegador sea capaz de ejecutar programas. Con Java se puede reproducir sonido directamente desde el navegador, se pueden visitar home pages con animaciones, se puede enseñar al navegador a manejar nuevos formatos de ficheros, e incluso, cuando se pueda transmitir video por las líneas telefónicas, nuestro navegador estará preparado para mostrar esas imágenes.

Utilizando Java, se pueden eliminar los inconvenientes de la interfaz CGI y también se pueden añadir aplicaciones que vayan desde experimentos científicos interactivos de propósito educativo a juegos o aplicaciones especializadas para la televenta. Es posible implementar publicidad interactiva y periódicos personalizados. Por ejemplo, alguien podría escribir un programa Java que implementara una simulación química interactiva (una cadena de adn). Utilizando un navegador con soporte Java, un usuario podría recibir fácilmente esa simulación e interaccionar con ella, en lugar de conseguir simplemente un dibujo estático y algo de texto. Lo recibido cobra vida . Además, con Java podemos estar seguros de que el código que hace funcionar el experimento químico no contiene ningún trozo de código malicioso que dañe al sistema. El código que intente actuar destructivamente o que contenga errores, no podrá traspasar los muros defensivos colocados por las características de seguridad y robustez de Java.

Además, Java proporciona una nueva forma de acceder a las aplicaciones. El software viaja transparentemente a través de la red. No hay necesidad de instalar las aplicaciones, ellas mismas vienen cuando se necesitan. Por ejemplo, la mayoría de los navegadores del Web pueden procesar un reducido número de formatos gráficos (típicamente GIF y JPEG). Si se encuentran con otro tipo de formato, el navegador estándar no tiene capacidad para procesarlo, tendría que ser actualizado para poder aprovechar las ventajas del nuevo formato. Sin embargo, un navegador con soporte Java puede enlazar con el servidor que contiene el algoritmo que procesa ese nuevo formato y mostrar la imagen. Por lo tanto, si alguien inventa un nuevo algoritmo de compresión para imágenes, el inventor sólo necesita estar seguro de que hay una copia en código Java de ese algoritmo instalada en el servidor que contiene las imágenes que quiere publicar. Es decir, los navegadores con soporte Java se actualizan a sí mismos sobre la marcha, cuando encuentran un nuevo tipo de fichero o algoritmo.

 

PROGRAMACION Cuando se programa en Java, se coloca todo el código en métodos, de la misma forma que se escriben funciones en lenguajes como C.Comentarios
En Java hay tres tipos de comentarios:

// comentarios para una sola línea
/* comentarios de una o más líneas */
/** comentario de documentación, de una o más líneas */

Los dos primeros tipos de comentarios son los que todo programador conoce y se utilizan del mismo modo. Los comentarios de documentación, colocados inmediatamente antes de una declaración (de variable o función), indican que ese comentario ha de ser colocado en la documentación que se genera automáticamente cuando se utiliza la herramienta de Java, javadoc. Dichos comentarios sirven como descripción del elemento declarado permitiendo generar una documentación de nuestras clases escrita al mismo tiempo que se genera el código.

En este tipo de comentario para documentación, se permite la introducción de algunos tokens o palabras clave, que harán que la información que les sigue aparezca de forma diferente al resto en la documentación.Identificadores
Los identificadores nombran variables, funciones, clases y objetos; cualquier cosa que el programador necesite identificar o usar.

En Java, un identificador comienza con una letra, un subrayado (_) o un símbolo de dólar ($). Los siguientes caracteres pueden ser letras o dígitos. Se distinguen las mayúsculas de las minúsculas y no hay longitud máxima.

Serían identificadores válidos:

identificador nombre_usuario Nombre_Usuario _variable_del_sistema $transaccion

y su uso sería, por ejemplo:

int contador_principal; char _lista_de_ficheros; float $cantidad_en_Ptas;

Palabras clave
Las siguientes son las palabras clave que están definidas en Java y que no se pueden utilizar como indentificadores:

abstract continue for new switch boolean default goto null synchronized break do if package this byte double implements private threadsafe byvalue else import protected throw case extends instanceof public transient catch false int return true char final interface short try

class finally long static void

const float native super while

Palabras Reservadas
Además, el lenguaje se reserva unas cuantas palabras más, pero que hasta ahora no tienen un cometido específico. Son:

cast future generic inner operator outer rest var

Literales
Un valor constante en Java se crea utilizando una representación literal de él. Java utiliza cinco tipos de elementos: enteros, reales en coma flotante, booleanos, caracteres y cadenas, que se pueden poner en cualquier lugar del código fuente de Java. Cada uno de estos literales tiene un tipo correspondiente asociado con él.

Enteros:

byte 8 bits complemento a dos short 16 bits complemento a dos int 32 bits complemento a dos long 64 bits complemento a dos Por ejemplo: 21 077 0xDC00

Reales en coma flotante:

float 32 bits IEEE 754 double 64 bits IEEE 754 Por ejemplo: 3.14 2e12 3.1E12

Booleanos:

true false

Caracteres:

Por ejemplo: a t u???? [????] es un número unicode

Cadenas:

Por ejemplo: "Esto es una cadena literal"Arrays
Se pueden declarar en Java arrays de cualquier tipo:

char s[]; int iArray[];

Incluso se pueden construir arrays de arrays:

int tabla[][] = new int[4][5];

Los límites de los arrays se comprueban en tiempo de ejecución para evitar desbordamientos y la corrupción de memoria.

En Java un array es realmente un objeto, porque tiene redefinido el operador []. Tiene una función miembro: length. Se puede utilizar este método para conocer la longitud de cualquier array.

int a[][] = new int[10][3]; a.length; /* 10 */ a[0].length; /* 3 */

Para crear un array en Java hay dos métodos básicos. Crear un array vacío:

int lista[] = new int[50];

o se puede crear ya el array con sus valores iniciales:

String nombres[] = { "Juan","Pepe","Pedro","Maria" };

Esto que es equivalente a:

String nombres[]; nombres = new String[4]; nombres[0] = new String( "Juan" ); nombres[1] = new String( "Pepe" ); nombres[2] = new String( "Pedro" );

nombres[3] = new String( "Maria" );

No se pueden crear arrays estáticos en tiempo de compilación:

int lista[50]; // generará un error en tiempo de compilación

Tampoco se puede rellenar un array sin declarar el tamaño con el operador new:

int lista[]; for( int i=0; i < 9; i++ ) lista[i] = i;

Es decir, todos los arrays en Java son estáticos. Para convertir un array en el equivalente a un array dinámico en C/C++, se usa la clase vector, que permite operaciones de inserción, borrado, etc. en el array.Operadores
Los operadores de Java son muy parecidos en estilo y funcionamiento a los de C. En la siguiente tabla aparecen los operadores que se utilizan en Java, por orden de precedencia:

. [] () ++ -- ! ~ instanceof * / % + - << >> >>> < > <= >= == != & ^ | && || ? : = op= (*= /= %= += -= etc.) ,

Los operadores numéricos se comportan como esperamos:

int + int = int

Los operadores relacionales devuelven un valor booleano.

Para las cadenas, se pueden utilizar los operadores relacionales para comparaciones además de + y += para la concatenación:

String nombre = "nombre" + "Apellido";

El operador = siempre hace copias de objetos, marcando los antiguos para borrarlos, y ya se encargará el garbage collector de devolver al sistema la memoria ocupada por el objeto eliminado.Separadores
Sólo hay un par de secuencias con otros caracteres que pueden aparecer en el código Java; son los separadores simples, que van a definir la forma y función del código. Los separadores admitidos en Java son:

() - paréntesis. Para contener listas de parámetros en la definición y llamada a métodos. También se utiliza para definir precedencia en expresiones, contener expresiones para control de flujo y rodear las conversiones de tipo.

{} - llaves. Para contener los valores de matrices inicializadas automáticamente. También se utiliza para definir un bloque de código, para clases, métodos y ámbitos locales.

[] - corchetes. Para declarar tipos matriz. También se utiliza cuando se referencian valores de matriz.

; - punto y coma. Separa sentencias.

, - coma. Separa identificadores consecutivos en una declaración de variables. También se utiliza para encadenar sentencias dentro de una sentencia for.

. - punto. Para separar nombres de paquete de subpaquetes y clases. También se utiliza para separar una variable o método de una variable de referencia.

 

Parte I, Conocer JSP

Si hemos tenido la oportunidad de construir aplicaciones Web usando tecnologías como CGI y Servlets, estaremos acostumbrados a la idea de escribir un programa que genere la pagina entera (las partes estáticas y dinámicas) usando el mismo programa. Si estamos buscando una solución en la cual podamos separar las dos partes, no tenemos que buscar más. Las JavaServer Pages (JSP) están aquí.

Las páginas JSP permiten que separemos la presentación final de la lógica de negocio (capas media y final). Es un gran "Rapid Application Development" (RAD) de aplicaciones Web. Esta sección explica los conceptos y las ventajas de la tecnología JSP, y luego demostraremos cómo utilizar esta tecnología emocionante, y cómo crear componentes reutilizables para manejar formularios.

JavaServer Pages (JSP)

La tecnología JSP es una especificación abierta (y gratis) disponible y desarrollada por Sun Microsystems como un alternativa a Active Server Pages (ASP) de Microsoft, y son un componente dominante de la especificación de Java 2 Enterprise Edition (J2EE). Muchos de los servidores de aplicaciones comercialmente disponibles (como BEA WebLogic, IBM WebSphere, Live JRun, Orion, etcétera) ya utilizan tecnología JSP.

 

Componentes Reutilizables

El ejemplo del formulario anterior es simple en el sentido de que no hay mucho código implicado. Cuanto más código esté implicado, más importante es no mezclar la lógica del negocio con la presentación final en el mismo fichero. La separación de la lógica de negocio de la presentación permite cambios en cualquier sitio sin afectar al otro. Sin embargo, el código de producción JSP se debe limitar a la presentación final. Así pues, ¿cómo implementamos la parte de la lógica de negocio?

Aquí es donde los JavaBeans entran en juego. Esta tecnología es un modelo de componente portable, independiente de la plataforma que permite a los desarrolladors escribir componentes y reutilizarlos en cualquier lugar. En el contexto de JSP, los JavaBeans contienen la lógica de negocio que devuelve datos a un script en una página JSP, que a su vez formatea los datos devueltos por el componente JavaBean para su visualización en el navegdor. Una página JSP utiliza un componente JavaBean fijando y obteniendo las propiedades que proporciona.

 

Ejemplo: Usar JavaBeans con JSP

Ahora, veamos como modificar el ejemplo anterior, process.jsp para usar JavaBeans. En el formulario anterior había dos campos: name y email. En JavaBeans, son llamados propiedades. Por eso, primero escribimos un componente JavaBean con métodos setX getX, donde X es el nombre de la propiedad. Por ejemplo, si tenemos unos métodos llamados setName y getName entonces tenemos una propiedad llamada name. El ejemplo 5 muestra un componente FormBean.

Los buenos componentes deben poder interoperar con otros componentes de diferentes vendedores. Por lo tanto, para conseguir la reutilización del componente, debemos seguir dos reglas importantes (que son impuestas por la arquitectura JavaBeans):

Nuestra clase bean debe proporcionar un constructor sin argumentos para que pueda ser creado usando Beans.instantiate.

Nuestra clase bean debe soportar persistencia implementando el interface Serializable o Externalizable.

Ejemplo 5: FormBean.java

package userinfo;

import java.io.*;

public class FormBean implements Serializable {

private String name;

private String email;

public FormBean() {

name = null;

email = null;

}

public void setName(String name) {

this.name = name;

}

public String getName() {

return name;

}

public void setEmail(String email) {

this.email = email;

}

public String getEmail() {

return email;

}

}

Para poder usar el componente FormBean en el fichero JSP, necesitamos ejemplarizar el componente. Esto se hace usando la etiqueta <jsp:useBean>. La siguiente línea <jsp:setProperty> se ejecuta cuando se ha ejemplarizado el bean, y se usa para inicializar sus propiedades. En este caso, ambas propiedades (name y email) se configuran usando una sóla sentencia. Otra posible forma de configurar las propiedades es hacerlo una a una, pero primero necesitamos recuperar los datos desde el formulario. Aquí tenemos un ejemplo de como configurar la propiedad name:

<%! String yourname, youremail; %>

<% yourname = request.getParameter("name"); %>

<jsp:setProperty name="formbean" property="name"

value="<%=yourname%>"/>

Una vez que se han inicializado las propiedades con los datos recuperados del formulario, se recuperan los valores de las propiedades usando <jsp:getProperty> en la parte else, como se ve en el Ejemplo 6: Ejemplo 6: process2.jsp

<jsp:useBean id="formbean" class="userinfo.FormBean"/>

<jsp:setProperty name="formbean" property="*"/>

<HTML>

<HEAD>

<TITLE>Form Example</TITLE>

</HEAD>

<BODY BGCOLOR="#ffffcc">

<% if (request.getParameter("name")==null

&& request.getParameter("email") == null) { %>

<CENTER>

<H2>User Info Request Form </H2>

<form method="GET" action="process2.jsp">

<P>

Your name: <input type="text" name="name" size=27>

<p>

Your email: <input type="text" name="email" size=27>

<P>

<input type="submit" value="Process">

</FORM>

</CENTER>

<% } else { %>

<P>

<B>You have provided the following info</B>:

<P>

<B>Name</B>: <jsp:getProperty name="formbean" property="name"/>

<P>

<B>Email</B>: <jsp:getProperty name="formbean" property="email"/>

<% } %>

</BODY>

</HTML>

 

 

Enter content here

Enter supporting content here