You are on page 1of 6

Desarrollo de Aplicaciones JavaEE, laboratorio 5 Creacin de la Aplicacin BrokerTool.

Pgina 1 de 6
Desarrollo de Aplicaciones Java EE.
Laboratorio 5.
Desarrollo Inicial de la Aplicacin BrokerTool.
Objetivo General.
Crear la aplicacin llamada BrokerTool en su versin preliminar. Esta aplicacin
ser utilizada en la mayora de los ejercicios del curso. En esta primera versin se
crearn tres servlets que en conjunto se utilizarn para desplegar los detalles de la
informacin de un cliente.
Ejercicio 1. Implementacin del Servlet CustomerDetails.
1. Cree un proyecto de NetBeans de tipo Enterprise Application llamado
BrokerTool. Deje marcadas las opciones de creacin de los mdulos war y ejb
con los nombres de default, BrokerTool-war y BrokerTool-ejb. El mdulo ejb
ser utilizado posteriormente. Note que estos mdulos aparecen como
proyectos en NetBeans.
Nota. En los prximos laboratorios trabajaremos con el proyecto BrokerTool-
war, no con el proyecto BrokerTool. BrokerTool es el nombre del
proyecto general que contiene los mdulos web y ejb. Posteriormente
utilizaremos el proyecto BrokerTool-ejb.
2. Cree el paquete trader en el proyecto BrokerTool-war.
3. Copie a este paquete los siguientes archivos proporcionados en la carpeta
MaterialLab5:
BrokerException.java
BrokerModel.java
BrokerModelImpl.java
BrokerDelegate.java
Customer.java
CustomerShare.java
Stock.java
Desarrollo de Aplicaciones JavaEE, laboratorio 5 Creacin de la Aplicacin BrokerTool. Pgina 2 de 6
y examine cuidadosamente su contenido. Es importante familiarizarse con
estos archivos porque sern usados muy frecuentemente en los laboratorios
del curso.
4. Cree un nuevo servlet en el proyecto BrokerTool-war llamado CustomerDetails,
en un nuevo subpaquete de trader llamado trader.web. Se sugiere usar el alias
/custdetails en el URL pattern. No olvide marcar la casilla Add Information to
Deployment Descriptor (web.xml).
5. Modifique el archivo web.xml (Deployment Descriptor) para poner este alias del
servlet (custdetails) como pgina de bienvenida default. (Note que no se pone
la diagonal del alias).
6. Dentro de los postulados out.println del mtodo processRequest del servlet,
empiece a general la respuesta que ser un archivo HTML completo que
consista de dos tablas que aparezcan ms o menos como el siguiente ejemplo:
Nota. En la carpeta MaterialLab05 se proporciona un archivo llamado
TemplateCustomerDetails.html que contiene los postulados de HTML para
generar la forma anterior.
7. Primero incluya una tabla que contenga en cada columna ligas de html las
siguientes pginas que crearemos posteriormente:
<a href=custdetails>Customer Details</a>
<a href=custcontrol>All Customers</a>
<a href=Stocks.jsp>Stocks</a>
8. A continuacin y antes de construir la segunda tabla del HTML, defina 3
variables locales de clase String llamadas id, name y addr e inicialcelas con el
String nulo (por ejemplo String id = ). Obtenga el atributo llamado customer
del HttpRequest que es un objeto de clase Customer. (Este objeto se colocar
en el request en el siguiente ejercicio). Si este atributo no es nulo, guarde en
Customer Details All Customers Stocks
Customer Name
Customer Identity
Customer Address
Enviar Enviar
Enviar Enviar
Desarrollo de Aplicaciones JavaEE, laboratorio 5 Creacin de la Aplicacin BrokerTool. Pgina 3 de 6
las variables locales definidas anteriormente los valores de los atributos id,
name y addr, utilizando los mtodos getters de la clase Customer.
9. Ahora cree una forma de HTML que contenga la segunda tabla mostrada
anteriormente. La accin de la forma debe apuntar al alias custcontrol del
Servlet Customer Controller que se desarrollar ms adelante. La tabla debe
contener 3 campos de texto y cuatro botones como se puede ver en el
ejemplo. Asigne nombres significativos tanto a los campos de texto como a los
botones.
10. Verifique que el valor de la variable local id del cliente sea de longitud mayor a
cero. Si es as, agregue otra fila a la tabla que se est construyendo que
contenga una referencia al portafolio del cliente. La referencia debe ser
parecida al siguiente ejemplo:
<a href=portfcontrol?customerIdentity="+ id + ">View Portfolio</a>
11. Incluya ahora los tags de cierre de la tabla y de la forma.
12. Finalmente, recupere un atributo del request de clase String llamado message
y si ste no es nulo, despliegue el valor del atributo que es un mensaje de
error, en color rojo despus de la forma seguido de una lnea horizontal. Este
atributo ser generado por el Servlet CustomerController que se desarrollar
en el siguiente ejercicio y contendr los mensajes de error generados por la
aplicacin.
13. Construya el proyecto BrokerTool-war, haga el deploy y pruebe nada ms que
la aplicacin despliegue la forma generada por el servlet CustomerDetails
correctamente.
Nota. Aunque creamos una Enterprise Application, se debe hacer el deploy
de BrokerTool-war y no de BrokerTool. No se puede hacer todava
el deploy de BrokerTool porque tiene un mdulo ejb nulo.
Ejercicio 2. Creacin del Servlet CustomerController.
1. En el paquete trader.web, cree un nuevo servlet llamado CustomerController,
poniendo como URL pattern /custcontrol. No olvide marcar la casilla Add
Information to Deployment Descriptor (web.xml).
2. En el mtodo processRequest, lleve a cabo lo siguiente:
2.1. Remueva los postulados response.setContentType y PrintWriter out =
response.getWriter() generados por NetBeans. (No deben existir porque
este servlet simplemente transferir el control y no generar respuesta).
Desarrollo de Aplicaciones JavaEE, laboratorio 5 Creacin de la Aplicacin BrokerTool. Pgina 4 de 6
2.2. Obtenga una instancia del BrokerDelegate va el mtodo esttico
getInstance() de esta clase.
2.3. Obtenga una instancia del RequestDispatcher para transferir el control al
servlet CustomerDetails.
2.4. Obtenga los valores de los parmetros de Customer Identity, Customer
Name y Customer Address del cliente, de la forma CustomerDetails,
desarrollada en el ejercicio anterior que son pasados a este servlet.
2.5. Obtenga el valor del parmetro de la forma que representa alguno de los
botones que se haya presionado en la forma CustomerDetails para llamar
a este servlet. Dependiendo del botn que se haya presionado, realice las
siguientes acciones:
2.5.1. Si fue el botn Get Customer, use el BrokerDelegate para buscar el
cliente con el Customer Identity como parmetro. Guarde el objeto
Customer como un atributo del request llamado customer y utilice el
Request Dispatcher obtenido anteriormente para transferir el control
al servlet CustomerDetails.
2.5.2. Si fue el botn Update Customer, use el BrokerDelegate para
actualizar la informacin del cliente con los nuevos valores obtenidos
de la forma, guarde el objeto como atributo customer en el request y
utilice el Request Dispatcher obtenido anteriormente para transferir el
control al servlet CustomerDetails.
2.5.3. Si fue el botn Add Customer, use el BrokerDelegate para crear un
nuevo objeto Customer con la informacin pasada en la forma
CustomerDetails. Guarde el objeto Customer como un atributo del
request llamado customer y utilice un Request Dispatcher para
transferir el control al servlet CustomerDetails.
2.5.4. Si fue el botn Delete Customer, use el BrokerDelegate para borrar
el cliente con el Customer Identity correspondiente y utilice el
Request Dispatcher obtenido anteriormente para transferir el control
al servlet CustomerDetails.
2.5.5. En todos los casos, maneje los errores que se puedan presentar,
capturando la excepcin BrokerException y guardando el mensaje de
error proporcionado por la excepcin en el atributo message. A
continuacin transfiera el control a CustomerDetails usando el
request dispatcher.
Note que la excepcin BrokerException es provocada en la clase
BrokerModelImpl cuando existan errores.
2.6. Si NO SE UTILIZ un botn para llamar a este servlet, use el
BrokerDelegate para obtener un arreglo de todos los clientes y
almacnelo en un atributo del request llamado customers y utilice el
Desarrollo de Aplicaciones JavaEE, laboratorio 5 Creacin de la Aplicacin BrokerTool. Pgina 5 de 6
Request Dispatcher para transferir el control a la pgina allCustomers.jsp
que ser desarrollada en otro laboratorio.
Ejercicio 3. Creacin del Servlet PortfolioController.
1. En el paquete trader.web, cree un nuevo servlet llamado PortfolioController,
poniendo como URL pattern /portfcontrol. No olvide marcar la casilla Add
Information to Deployment Descriptor (web.xml).
2. En el mtodo processRequest, lleve a cabo lo siguiente:
2.1. Obtenga el parmetro correspondiente al campo Customer Identity.
2.2. Obtenga una instancia del BrokerDelegate va el mtodo getInstance.
2.3. Utilizando el mtodo getAllCustomersShares del BrokerDelegate obtenga
un arreglo de objetos CustomerShare.
2.4. Obtenga el objeto Customer con el mtodo getCustomer del
BrokerDelegate.
2.5. Ponga los atributos shares y customer en el request con los valores
obtenidos en los puntos anteriores.
2.6. Utilice un Request Dispatcher para transferir el control a la pgina
portfolio.jsp que ser desarrollada en otro laboratorio.
2.7. En caso de que el cliente no tenga portafolio se generar la excepcin
BrokerException. En el bloque catch del manejo de la excepcin, es
necesario guardar el mensaje de error proporcionado por sta en el
atributo message, y a continuacin transferir el control a la pgina
portfolio.jsp usando el request dispatcher.
3. Construya el proyecto, haga el deploy y pruebe la aplicacin. Desde luego,
algunas de las funciones de la aplicacin todava no funcionan. Deben
funcionar correctamente los botones de Get Customer, Add Customer, Update
Customer y Delete Customer nicamente. Pruebe dar de alta algn cliente,
hacerle cambios, consultarlo y posteriormente borrarlo. Tambin pruebe que
aparezca un mensaje adecuado cuando no exista el cliente o cuando se intente
aadir un cliente ya existente. En la clase BrokerModelImpl puede ver los datos
de algunos clientes que por el momento estn hard-coded.
Desarrollo de Aplicaciones JavaEE, laboratorio 5 Creacin de la Aplicacin BrokerTool. Pgina 6 de 6
Ejercicio 4. Manejo de Sesiones.
En este ejercicio, se incluir el manejo de sesiones en la aplicacin, para que en
cada request aparezca el nombre del usuario que est en sesin.
1. Modifique el servlet CustomerDetails de la siguiente manera:
1.1. Al principio del mtodo processRequest agregue una pequea forma que
se despliegue solamente cuando es el primer request, es decir, que no
haya sesin activa. Esta forma deber solicitar el nombre del usuario de
la aplicacin en un campo de texto y tener un botn de submit. La accin
de la forma deber invocar el servlet CustomerController.
1.2. Cuando ya exista una sesin para el cliente agregue el cdigo necesario
para desplegar el nombre del usuario al principio de la forma html que
despliega CustomerDetails. Obtenga el nombre del usuario de un atributo
de la sesin que ser colocado por el CustomerController.
2. Modifique el servlet CustomerController de la siguiente manera:
2.1. Cheque si el botn que se oprimi fue el de Submit de la forma que
solicita el nombre del usuario. Si es as, lea el parmetro correspondiente
al nombre del usuario y gurdelo en un atributo de la sesin y de
inmediato transfiera el control a CustomerDetails utilizando el request
dispatcher. Note que, de acuerdo a la lgica de la aplicacin, cuando se
invoque al servlet CustomerController necesariamente habr ya una
sesin activa.
2.2. En caso de que no se haya oprimido el botn Submit prosiga con la lgica
existente del servlet.
3. Haga el deploy y las pruebas de la aplicacin. En el primer request deber
aparecer nicamente la forma que solicita el nombre del usuario. Al oprimir el
botn submit, deber aparecer la pantalla de Customers precedida con el
nombre del usuario. Pruebe nuevamente la funcionalidad de la aplicacin,
notando que en cada request seguir apareciendo el nombre del usuario al
principio de la forma.
4. Si cierra el browser, lo vuelve a abrir y carga de nuevo la aplicacin, deber
aparecer nuevamente la forma de solicitud del nombre del usuario.
5. Puede probar la aplicacin desde otra PC en el laboratorio, notando que se
crear una nueva sesin.
FIN DEL LABORATORIO 5.