Java Avanzado

Anuncio
2
Java Avanzado
Facultad de Ingeniería.
Escuela de computación.
Java Avanzado. Guía 13 3
Introducción Este manual ha sido elaborado para orientar al estudiante de Java Avanzado en el
desarrollo de sus prácticas de laboratorios, haciendo uso de este antes, durante y
después de la práctica, de tal forma que ofrece un método facilitador en su proceso
de enseñanza/aprendizaje durante esta asignatura.
En el desarrollo de esta asignatura se ha designado realizar las prácticas en 16
sesiones semanales de laboratorios, los que incluyen 11 prácticas, dos parciales y un
proyecto final durante los cuales, el estudiante aplicará los conceptos y las técnicas
fundamentalmente necesarias para el desarrollo de aplicaciones y soluciones
utilizando Java como lenguaje de programación.
Todas las guías de laboratorio están estructuradas de la siguiente forma:
- Objetivos
- Materiales y equipos
- Introducción teórica
- Procedimiento
- Bibliografía
- Hoja de evaluación( En caso de que la actividad sea evaluada )
La asignatura Java avanzado ,está dividida en ocho unidades durante el ciclo.
4
Java Avanzado, Guía 13
Facultad: Ingeniería.
Escuela: Computación.
Asignatura: Java Avanzado
Pág
Guía 13. Java Beans.
Tabla de Contenido
Contenido ---------------------------------------------------------------------------------------- 5
Objetivos ----------------------------------------------------------------------------------------- 5
Materiales y equipos --------------------------------------------------------------------------- 5
Introducción teórica --------------------------------------------------------------------------- 5
Procedimiento ----------------------------------------------------------------------------------- 7
Investigación ------------------------------------------------------------------------------------ 21
Bibliografía --------------------------------------------------------------------------------------- 21
Java Avanzado. Guía 13 5
Tema: Java Beans.
Contenidos
En esta guía se introducirá al desarrollo de aplicaciones orientadas a la web de forma
que se puedan manipular javabeans que separen la lógica de negocio de la
lógica/rutinas de presentación.
Objetivo Específico
a) Comprender el funcionamiento de los javabeans.
b) Manipular los javabeans de tal manera que pueda separar la lógica de
negocio de la presentación
Materiales y Equipo
a) Netbeans
b) JDKJava
c) Tomcat
Introducción Teórica
Java Beans
Los JSP’s pueden usar la idea Componentes para fabricar aplicaciones, como piezas
para construcción (Bulding block’s).
Los JavaBeans, son la respuesta (junto con los tag libs) para conseguir el objetivo de
los JSP’s de separar la parte dinámica de la parte estática de un contenido WEB.
Solo parte de la especificación de JavaBeans, es factible para usar junto con JSP’s, ya
que no se requiere de una integración con un entorno gráfico y la parte de
presentación debe ser separada de la programación.
Los eventos, no tendrán sentido, a menos que se integre el JavaBean dentro de un
Applet, puesto que la interacción con un browser no es 100% interactiva.
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áciles de mantener.
Se debe utilizar la página de JavaServer para generar dinámicamente la exhibición y
también para manejar la interacción del usuario.
6
Java Avanzado, Guía 13
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.
Mediante el uso de JavaBeans puede dividir un equipo de desarrollo de expertos en
Java y los expertos en HTML. Los expertos de Java a escribir y desarrollar las
JavaBeans y los expertos en HTML se concentrarán 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 tal motivo, se utilizan los JavaBeans integrados en un 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 o campos ocultos.
Escribir un 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 se tendrá 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);
Utilizar un Bean en JSP
• La acción <jsp:useBean>
La acción <jsp:useBean> indica a la página JSP que se desea 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.
Java Avanzado. Guía 13 7
La sintaxis básica de esta acción es la siguiente:
<jsp:useBean id=”nombre” class=”nombreClase”/>
También se tiene otra posibilidad:
<jsp:useBean id=”nombre” class=”nombreClase”/>
código de inicialización
</jsp:useBean>
Es decir se puede utilizar la sintaxis de una única línea, o bien la de varias líneas
indicando un código de inicialización que se quiere que se ejecute, este código de
inicialización sólo se ejecutará si se crea el Bean.
A continuación los distintos atributos de la acción <jsp:useBean>.
•
id: es el identificador que se va 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 caracter debe ser una letra, sólo
se permiten letras, números y guión bajo (_), 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, 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.
8
Java Avanzado, Guía 13
session
La petición actual y cualquiera La vida de la sesión del usuario.
de las siguientes peticiones que
tengan
lugar en la misma ventana
(sesión) del navegador.
application
La petición actual y cualquiera La vida de la aplicación Web
de las siguientes peticiones que
tengan lugar en la misma
aplicación Web.
La acción <jsp:getProperty>
Este nueva acción forma parte de las acciones que permiten utilizar componentes
JavaBeans dentro de las páginas JSP, en este caso la acción <jsp:getProperty> 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 ha creado con la acción
<jsp:useBean>, y cuyo valor de la propiedad que se quiere 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 se hace
referencia en las páginas JSP a través de la acción <jsp:useBean>, es la acción
complementaria a la acción <jsp.getProperty>. Su sintaxis general es la que se
muestra a continuación:
Java Avanzado. Guía 13 9
<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 puede establecer a partir de varios
elementos:
a) En el tiempo de la petición dela página a partir de los parámetros existentes en
el objeto integrado request.
b) En el tiempo de ejecución de la página a partir de la evaluación de una
expresión válida de JSP.
c) 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 se
indica 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 se puede establecer el valor de varias
propiedades del Bean de una sola vez.
10 Java Avanzado, Guía 13
•
param: este atributo permite indicar 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 se desea 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.
Java Avanzado. Guía 13 11
Procedimiento
A. Java Bean Sencillo
EnBibliografía
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
java.util.Date como clase del Bean, lo normal es utilizar un componente JavaBeans
pero
para
Guía
1 este ejemplo la clase Date sirve perfectamente para mostrar como más
tarde se puede acceder en la página al Bean que se ha creado utilizando su
identificador.
Crear un proyecto web con nombre guia13 y procurar seleccionar la opción “Use
dedicated folder for storing libraries” (utilizar un directorio dedicado para el
almacenamiento de librerias), este proyecto se utilizará en toda la practica.
BeanSencillo.jsp
Ejecución en navegador
B. Java Bean y JSP
En el Código siguiente se muestra un ejemplo de una página JSP que utiliza un Bean
creado en una clase java con métodos y atributos específicos para almacenar y tratar
información.
12 Java Avanzado, Guía 13
Bean1.jsp
Crear un clase llamada “ClienteBean” que será el bean en el paquete “guia13” que
se invocara desde la JSP.
ClienteBean.jsp
Ahora se crearan los métodos setXXX y getXXX correspondientes a estas propiedades.
Para ello utilizar la ayuda de netbens, de acuerdo a la siguiente pantalla.
Java Avanzado. Guía 13 13
Para generar los métodos se debe de sombrear las propiedades indicadas en el punto
cuatro, luego seleccionamos “Refactor” y por ultimo “Encapsulate Fields...” deber da
aparecer una pantalla como la siguiente.
Seleccionar la opción “Select All” y damos click en “Refactor”, todo ello debería
generar la siguiente estructura en la clase:
ClienteBean.jsp
14 Java Avanzado, Guía 13
Java Avanzado. Guía 13 15
Luego de compilada la clase ClienteBean.Java, hacer “Clean and Build” y “Deploy” y
ejecutar el archivo Bean1.jsp
Ejecución en navegador
C. JavaBeans y acciones
En el siguiente ejercicio se manipulara desde una jsp las propiedades creadas con las
acciones correspondientes:
Crear una Jsp que se llame “LenguajeFavorito” con el siguiente código:
LenguajeFavorito.jsp
16 Java Avanzado, Guía 13
Ahora crear el bean llamado “LenguajeBean” en el paquete “guia13” , este
contendrá las siguientes propiedades.
LenguajeBean.jsp
Crear los métodos setXXX y getXXX correspondientes, después de que sean creados
se deberá crear un nuevo método llamando getComentarios. El Bean debe quedar de
la siguiente manera:
LenguajeBean.jsp
Java Avanzado. Guía 13 17
Digitar el código de la página que recibirá los parámetros esta será llamada
“Bean2.jsp” , digitar el código siguiente.
Bean2.jsp
Ejecución en navegador
18 Java Avanzado, Guía 13
D. JavaBeans con acciones <jsp:getProperty> y <jsp:setProperty>.
En el siguiente ejemplo se manipula la información que contiene el Java Beans,
digitar el código de EnviarPersona.jsp
EnviarPersona.jsp
Crear el javabens con el nombre “PersonaBean” y en el paquete “guia13”. Agregar
las propiedades:
PersonaBean.jsp
Generar los métodos setXXX y getZZXXX correspondientes y agregar los métodos
getTipo() y getJoven() , de acuerdo al siguiente código:
PersonaBean.jsp
Java Avanzado. Guía 13 19
Crear la página jsp que recibirá los datos y que debe ser llamada “Persona.jsp” y
digitar el código siguiente:
Persona.jsp
20 Java Avanzado, Guía 13
Ejecución en un navegador
Java Avanzado. Guía 13 21
Investigación Complementaria
1. Crear una JSP que permita consultar, ingresar, eliminar y modificar registros en la
Guíatabla
3 employees (Guia12) utilizando Java Beans.
Bibliografía
Guía 4
• Aprendiendo Java 2 en 21 Días
Guía
3 Laura
fíaLemay,
• Cómo Programar en Java
Deitel, Harvey M.
Guía 4
fía
Descargar