UNIVERSIDAD POLITECNICA DE EL SALVADOR
LENGUAJE DE PROGRAMACIÓN I ING. FRANCISCO SORIANO
II. INTRODUCCION.
Un JavaBean se puede definir como un componente de software reutilizable. Lo que esto
significa es que podemos escribir un JavaBean que luego pueden ser utilizados en una
variedad de otros basados en software de Java tales como aplicaciones, Servlets o páginas
JSP.
De esta manera podemos definir nuestra lógica de negocio dentro de un JavaBean y luego
utilizan sistemáticamente que la lógica en las aplicaciones por separado.
Mediante el uso de JavaBeans se puede separar completamente la lógica de negocio de la
generación de la pantalla. Esta es una filosofía importante que conduce a los sistemas mejor
estructurados y más fácil de mantener. En nuestro caso, debe utilizar la página de
JavaServer para generar dinámicamente la exhibición y también para manejar la interacción
del usuario. El JavaBean se haría cargo cuando necesite realizar algún procesamiento de
datos complejos o cuando se necesita el acceso a bases de datos o el sistema de archivos.
La otra ventaja del uso de JavaBeans es que la lógica de negocio puede ser utilizado por más
de una solicitud. Por ejemplo, tanto un cliente de aplicaciones basadas en Java y una página
JSP puede acceder a la misma JavaBean garantizando la misma funcionalidad.
Un último punto a destacar es que mediante el uso de JavaBeans puede dividir su equipo
de desarrollo de expertos en Java y los expertos en HTM. Los expertos de Java a escribir y
desarrollar las JavaBeans y los expertos en HTML se concentraría en el diseño de la
aplicación web.
Uso en JSP
• El protocolo HTTP tiene un funcionamiento muy simple: un cliente hace una petición de
documento, el servidor responde y termina la transacción. No almacena el estado de cada
petición, es un protocolo “sin estado”.
• Por esto, se van a utilizar los JavaBeans integrados en nuestro formulario para poder
almacenar el estado de éste a lo largo de toda la sesión.
• Existen otras alternativas, como son los cookies, la reescritura de la URL ó campos ocultos.
Escribir el Bean
• Lo primero es escribir el código en Java del Bean siguiendo el siguiente esqueleto.
– El constructor de la clase no tiene argumentos. – Por cada componente del formulario
tendremos una
Variable privada con el mismo nombre.
• private nombrePropiedad;– Cada variable tendrá dos métodos:
• Un método accesor:
» public String getNombrePropiedad(); • Y un método mutador:
» public void setNombrePropiedad (String name);
UNIVERSIDAD POLITECNICA DE EL SALVADOR
LENGUAJE DE PROGRAMACIÓN I ING. FRANCISCO SORIANO
Escribir el Bean
• Ejemplo si tenemos un formulario con un componente “text” llamada petición, el
Beans sería el siguiente:
public class EjemploBean{
private String peticion;
public EjemploBean() {
peticion = null;
}
public void setPeticion( String nombre ) {
peticion = nombre;
}
public String getPeticion()
{ return peticion;
}
}
Utilizar el Bean en JSP La acción <jsp:useBean>
La acción <jsp:useBean> indica a la página JSP que deseamos tener un Bean determinado
disponible, el contenedor de páginas JSP creará el Bean correspondiente o bien lo
recuperará del ámbito correspondiente si éste ya existe.
La sintaxis básica de esta acción es la siguiente:
<jsp:useBean id=”nombre” class=”nombreClase”/>
También tenemos esta otra posibilidad:
<jsp:useBean id=”nombre” class=”nombreClase”/>
código de inicialización </jsp:useBean>
Es decir podemos utilizar la sintaxis de una única línea, o bien la de varias líneas indicando
un código de inicialización que queramos que se ejecute, este código de inicialización sólo
se ejecutará si se crea el Bean..
A continuación comentamos los distintos atributos de la acción <jsp:useBean>.
UNIVERSIDAD POLITECNICA DE EL SALVADOR
LENGUAJE DE PROGRAMACIÓN I ING. FRANCISCO SORIANO
• id: es el identificador que vamos a utilizar dentro de la página JSP, y durante el resto
del ciclo de vida del Bean para hacer referencia al Bean que se crea o se utiliza. Se
puede elegir cualquier nombre para hacer referencia a un Bean, aunque se deben
seguir una serie de normas: este identificador debe ser único en la página, se
distingue entre mayúsculas y minúsculas, el primer carácter debes ser una letra, sólo
se permiten letras, números y carácter de subrayado (_), no se permiten por lo tanto
espacios.
• class: en este atributo se indica el nombre de la clase del Bean, a cada Bean le va a
corresponder una clase, al igual que sucede con los applets, que poseen una clase
principal que representa la clase del componente, para organizar los componentes
JavaBeans estas clases.
• scope: indica el ámbito que le va a corresponder al Bean, ya sabemos que existen
cuatro ámbitos distintos, y por lo tanto este atributo podrá tener los valores page,
request, session o application, por defecto se utiliza el ámbito de página (page).
Ámbito Accesibilidad Existencia
page Únicamente la página actual Hasta que la página se ha terminado de
mostrar o el control es redirigido hacia otro
recurso.
request Página actual y cualquiera que se Hasta que la petición se ha procesado
incluya o redirija completamente y la respuesta se ha enviado
al usuario.
session La petición actual y cualquiera de La vida de la sesión del usuario.
las siguientes peticiones que tengan
lugar en la misma ventana (sesión)
del navegador.
application La petición actual y cualquiera de La vida de la aplicación Web
las siguientes peticiones que
tengan lugar en la misma aplicación
Web.
En el Código siguiente se muestra un sencillo ejemplo de una página JSP para crear un Bean
con ámbito de página. Como se puede observar se ha utilizado la clase [Link] como
clase del Bean, lo normal es utilizar un componente JavaBeans pero para este ejemplo la
clase Date nos sirve perfectamente para mostrar como más tarde se puede acceder en la
página al Bean que se ha creado utilizando su identificador.
UNIVERSIDAD POLITECNICA DE EL SALVADOR
LENGUAJE DE PROGRAMACIÓN I ING. FRANCISCO SORIANO
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Acción jsp:useBean</title>
</head>
<body>
<jsp:useBean id="fecha" scope="page" class="[Link]"/>
<%=fecha%>
</body>
</html>
La acción <jsp:getProperty>
Este nueva acción forma parte de las acciones que nos permiten utilizar componentes
JavaBeans dentro de nuestras páginas JSP, en este caso la acción <jsp:getProperty> nos va
a permitir obtener el valor de la propiedad de un JavaBean creado en la página con el ámbito
correspondiente.
La sintaxis de esta acción es muy sencilla, no posee cuerpo y únicamente presenta dos
atributos o propiedades, como se puede observar a continuación.
<jsp:getProperty name=”nombreBean” property=”nombrePropiedad”/>
La propiedad name indica el identificador del Bean que hemos creado con la acción
<jsp:useBean>, y cuyo valor de la propiedad queremos obtener. Se corresponderá con el
valor del atributo id de la acción <jsp:useBean> correspondiente.
El atributo property indica el nombre de la propiedad del Bean cuyo valor se desea obtener.
El valor de la propiedad se mostrará como código HTML, reemplazando en tiempo de
ejecución a la acción <jsp:getProperty> correspondiente.
Esta acción accede al valor de la propiedad especificada del Bean correspondiente, la
convierte en un objeto de la clase String y la imprime en el flujo de salida de la página JSP.
La acción <jsp:setProperty>
Esta acción permite modificar las propiedades de los Beans a los que hacemos referencia
en nuestras páginas JSP a través de la acción <jsp:useBean>, es la acción complementaria a
la acción <[Link]>. Su sintaxis general es la que se muestra a continuación:
UNIVERSIDAD POLITECNICA DE EL SALVADOR
LENGUAJE DE PROGRAMACIÓN I ING. FRANCISCO SORIANO
<jsp:setProperty name=”nombreBean” detallesPropiedad/>
El atributo name tiene el mismo significado que en la acción vista anteriormente, es decir,
es el identificador del componente JavaBean al que se hace referencia en la página.
Los detalles de la propiedad son una serie de atributos que combinados entre sí permiten
asignar el valor a la propiedad del Bean de distinta forma. Así por ejemplo la forma de
establecer el valor de la propiedad de un Bean puede ser cualquiera de las que aparecen a
continuación:
• property=”*”
• property=”nombrePropiedad”
• property=”nombrePropiedad” param=”nombreParámetro”
• property=”nombrePropiedad” value=”valorPropiedad”
El valor de una propiedad de un Bean se pueden establecer a partir de varios elementos:
➢ En el tiempo de la petición dela página a partir de los parámetros existentes en el
objeto integrado request.
➢ En el tiempo de ejecución de la página a partir de la evaluación de una expresión
válida de JSP.
➢ A partir de una cadena de caracteres indicada o como una constante en la propia
página. A continuación se comentan todos los atributos de la acción
<jsp:setProperty>:
• name: nombre o identificador del Bean que se ha instanciado mediante la
acción <jsp:useBean>.
• property: el nombre de la propiedad del Bean cuyo valor se desea
establecer. Este atributo puede tener asignado un valor especial que el
asterisco (“*”). Si indicamos el asterisco, de forma automática la etiqueta
iterará sobre todos los parámetros del objeto request correspondiente
estableciendo los nombres de las propiedades del Bean que se coincidan con
el nombre de los parámetros del objeto request, asignándole el valor del
parámetro cuando se de dicha coincidencia. Si un parámetro del objeto
request posee el valor de vacío (“”) no se modificará el valor de la propiedad
del Bean. Con el asterisco podemos establecer el valor de varias propiedades
del Bean de una sola vez, más adelante lo veremos mediante un ejemplo.
• param: este atributo permite indica el nombre del parámetro del objeto
request que se va a utilizar para establecer el valor de la propiedad del Bean
indicadas en el atributo property.
Gracias a este atributo no es necesario que el Bean posea el mismo nombre
de propiedad que el parámetro del objeto request cuyo valor deseamos
UNIVERSIDAD POLITECNICA DE EL SALVADOR
LENGUAJE DE PROGRAMACIÓN I ING. FRANCISCO SORIANO
establecer para la propiedad. SI no se especifica el atributo param se asume
que el nombre de la propiedad y el nombre del parámetro del objeto request
es el mismo.
• value: contiene el valor que se va a asignar a la propiedad, puede ser una
cadena una expresión válida. Una acción <jsp:setProperty> no puede
presentar los atributos value y param al mismo tiempo.