Categorías destacadas
programacion php    
Artículo
4
¡votar!

 Construir Aplicaciones EJB con JBoss, Lomboz y Eclipse


Crear los Clients Web

Este capítulo describe cómo crear los clientes en las capas de cliente/presentación para acceder o comunicarse con la capa de negocio. Los Servlets y las páginas JSP son dos ejemplos de clientes web que crearemos. En un patrón típico de Modelo-Vista-Controlador, el servlet actúa como el controlador y las páginas JSP como la vista (por supuesto que los datos son el modelo).

. Crear el Servlet AccessController:

  • Ve al explorador de paquetes y expande el nodo del proyecto Mystore, selecciona src, y pulsa con el botón derecho.
  • En el menú desplegalble selecciona New > Lomboz Servlet Wizard:
  • Introduce au.com.tusc.servlet como el nombre del paquete, AccessController como el nombre del servlet y selecciona los métodos que se muestran en la siguiente figura:
  • Pulsa Next y aparecerá la siguiente ventana. Añade un Web Module (Pulsa Browse.. y se mostrará una lista de los módulos web para este proyecto), en este caso es OnlineStore, seleccionalo. Introduce access como nombre del servlet y el mapeo de URL como ' /access/* '.
  • Pulsa Finish.

Esto creará un paquete llamado au.com.tusc.servlet en src y el servlet AccessController dentro de ese paquete:

Como puedes ver se han creado los cuatro métodos que seleccionamos en el wizard, y sólo necesitamos sus implementaciones.

Aparte de esto, se han generado algunos descriptores en web.xml, dentro de Web-Module OnlineStore/WEB-INF:

Estas etiquetas las ha generado el Servlet Creation Wizard, donde la etiqueta <url-pattern> especifica el nombre del path por el que se accederá al servlet. En este caso será http://localhost:8080/OnlineStore/access. (No es necesario tener el mismo <servlet-name> y <url-pattern>.)

web.xml contiene todos los descriptores de despliegue necesarios para desplegar servlets.

Lomboz crea dos páginas cuando creas un módulo web: index.jsp y error.jsp. Antes de ir más allá y mancharnos las manos con los servlets, veamos qué directorios y ficheros ha generado Lomboz dentro de Web Modules, en este caso OnlineStore:

Entre los ficheros de interés está web.xml, que es donde se sitúan los descriptores de despliegue, y targets.xml, que contiene información sobre el servidor en el que se desplegará (en este caso JBOSS), como se puede ver en este fragmento de código de targets.xml:

. Añadir un Método de Negocio:

Antes de empezar a implementar nuestro servlet, añadamos un método de negocio más al bean StoreAccess llamado getAllItems() con la siguiente firma:

public java.util.ArrayList getAllItems()

Este método devolverá todos los ítems que hay en MyStore llamando al método finder de ItemsLocalHome llamado findAll:

Ahora empecemos a implementar los métodos generados en el servlet.

. Implementar el Método init():

Este método es el responsable de inicializar servlets, por eso se le llama cuando un servlet se crea por primera vez y no se le llama de nuevo por cada petición de usuario.

Almacenaremos las referencias de nuestro bean StoreAccess en este método, ya que todos los interfaces de cliente disponibles están expuestos en StoreAccess.

Por eso, primero crea un contexto. Luego obtiene una referencia a un objeto StoreAccess buscándo el bean StoreAccess mediante el API JNDI.

Añade una variable storeAccessHome del tipo StoreAccessHome para almacenar la referencia obtenida apuntando al objeto.

Crea métodos de ayuda para obtener el contexto, el objeto Home y asigna la referencia a storeAccessHome como se ve abajo:

Nota:
Tenemos que apuntar a este objeto porque estámos accediento a un interface remoto. Si fuera un interface local, no necesitaríamos apuntar a este objeto.

. Implementar los Métodos doGet() y doPost():

Para implementar estos dos métodos crearemos un método de ayuda para proporcionar la funcionalidad de ámbos. La solicitud se delega a este método donde tiene lugar todo el procesamiento de la información. Un vez terminado el procesamiento de la lógica de negocio se reenvia la solicitud a la vista apropiada para su visualización, por ejemplo una página JSP.

Nota:
Esta aproximación está basada en el patrón Front Controller, donde el controlador actúa como punto central de contacto para manejar solicitudes, delegar procesamientos de negocio, y la coordinación con los componentes de reenvío, pero estos componentes siguen siendo los responsables del control de la vista y de la navegación. Este patrón sugiere la centralización del manejo de todas las peticiones de esta forma, pero también permite que se utilicen diferentes métodos controladores para diferentes tipos de solicitudes.
  • Añade un método llamado procesRequest con la siguiente firma:
    protected void processRequest (HttpServletRequest request, 
           HttpServletResponse response)
           throws ServletException, IOException 
    
  • Delega la solicitud desde doGet y doPost a este método:
  • Ahora implementa el método processRequest(). Este método está estructurado para comprobar el parámetro useraction dentro del objeto request. Si useraction está vacío construirá una URL para la pantalla de login y generará la página adecuada. Si useraction tiene algún valor lo examina. Si encuentra que la solicitud es mostrar ítems construye la URL para ello y genera una página que muestra todos los ítems. Finalmente, si hay algún error se genera una página especial para mostrarlos.
  • Añade los siguientes atributos para construir las diferentes URLs:
  • Crea un objeto session y obtén el valor del parámetro useraction del objeto request como se ve en el siguiente fragmento de código:
  • Si useraction está vacío, como lo estará inicialmente, construye la URL para la pantalla de login y genera la página llamando al método displayLoginScreen. Abajo tienes el código de este método:

    Este método llama a displayLoginDataFields para generar los campos de datos para el envío del formulario:

  • Una vez enviado el formulario, chequea para ver si la validación es correcta llamando al método loginUser, que llama al método loginUser en el bean StoreAccess:
  • Una vez finalizado esto, como se muestra arriba en el método processRequest, construye la URL para mostrar los items y los errores. Abajo puedes ver el código del método displayAllItems:

    Y abajo está el código del método displayLoginErrorScreen:

Todos estos métodos de ayuda se utilizan en el método processRequest, que está actuando como Controller y despacha la solicitud a la vista apropiada, como a la pantalla de login o a la pantalla que muestra los ítems.

Ya está terminado nuestro servlet, la implementación del resto de métodos se deja como ejercicio.

. Desplegar el Servlet AccessController:

  • Para poder desplegar el servlet ve a LombozJ2EE view.
  • Selecciona el módulo web OnlineStore pulsa con el botón derecho y selecciona Deploy module, asegúrate de que el servidor se está ejecutando:

El estado del despliegue aparece en la consola con mensajes como estos:

. Probar el Servlet:

Ve a tu navegador y accede al servlet utilizando la siguiente URL:

http://localhost:8080/OnlineStore/access

Donde access es la url de mapeo que se asigno al crear el servlet utilizando el Servlet Creation Wizard, y OnlineStore es el módulo web, donde reside el servlet.

Se mostrará la pantalla de login. Introduce ANDY como nombre de usuario y PASSWD como password. La siguiente pantalla será una lista de todos los ítems que hay en MyStore:

Ahora que ya hemos creado un servlet, vamos a acceder a este catálogo mediante una página JSP.

. Crear una Página JSP:

  • Ve a Package Explorer y expande el nodo del módulo Web OnlineStore, pulsa con el botón derecho y aparecerá un menú desplegable.
  • En ese menú selecciona New > Lomboz JSP Wizard:
  • Añade un fichero llamado showItems.jsp:
  • Pulsa Next > Menu, aparecerá el formulario Set JSP details, selecciona Select Add.. bajo la sección Beans, como se ve en la siguiente imagen. Aparecerá el menú para seleccionar beans, selecciona Add ID como itemData, Scope como page y Class como ItemData.
  • Pulsa OK. Ahora se podrán ver los detalles JSP seleccionados después de seleccionar las distintas opciones:
  • Pulsa Finish. Se creará un nuevo fichero llamado showItems.jsp dentro del módulo web OnlineStore:

. Modificar el método processRequest en el Servlet AccessController:

Ahora, para poder mostrar los ítems de MyStore desde una página JSP, tenemos que modificar el método proccessRequest del servlet AccessController.

  • Modificia el String ITEMS_SCREEN a "/showItems.jsp":
  • comenta la llamda al método displayAllItems de processRequest.
  • Añade un atributo Session llamado itemsList con el valor listItems.
  • Añade un Request Dispatcher y pasále buildUrl como argumento, que tiene la URL de la página showItems.jsp.
  • Reenvia esta solicitud al despachador para dibujar la página JSP.

Abajo puedes ver un fragmento de código del método processRequest modificado:

. Añadir HTML y Etiquetas JSP:

  • Primero importa los siguientes paquetes: au.com.tusc.cmp.*, java.util.ArrayList y java.util.Iterator.
  • Añade el HTML y las etiquetas JSP necesarias para acceder a los ítmes de MyStore.
  • Obtén itemsList del atributo session en el servlet AccessController.
  • Selecciona itemData como un atributo de página mediante pageContext.
  • Ahora muestra los atributos de itemData usando las etiquetas de acceso a propiedades de JSP:

La página JSP está completa.

  • Ve al módulo web OnlineStore, pulsa con el botón derecho y selecciona Lomboz J2EE..
  • En el menú selecciona Check All JSP Syntax.
  • Mira si hay algún error.
  • Ve al nodo OnlineStore, pulsa con el botón derecho y selecciona Lomboz J2EE..
  • En el menú selecciona Add WEB-INF/lib JARs to the Classpath:

. Desplegar el Módulo OnlineStore:

  • Para desplegar ve a LombozJ2EE view.
  • Selecciona el módulo web OnlineStore, pulsa con el botón derecho y selecciona Deploy module, asegúrate de que el servidor se está ejecutando.

En la consola podrás ver el estado del despliegue.

. Probar la página JSP:

Ve a tu navegador y accede al servlet utilizando la siguiente URL:

http://localhost:8080/OnlineStore/access

Donde access es la url de mapeo que se asigno al crear el servlet utilizando el Servlet Creation Wizard, y OnlineStore es el módulo web, donde reside el servlet.

Se mostrará la pantalla de login. Introduce ANDY como nombre de usuario y PASSWD como password. La siguiente pantalla será una lista de todos los ítems que hay en MyStore:

Felicidades! has creado una página JSP utilizando todos los componentes J2EE, que habías creado y se ha ejecutado con éxito.

Publicado por:
Administrador
Recomendar
a un amigo
Compartir
en redes
 
Comentarios
 
BBDD
Entornos de desarrollo
Entretenimiento
Herramientas
Internet
Lenguajes de script
Lenguajes imperativos
Lenguajes orientados a objeto
Otros lenguajes
Plataformas
Teoría
Varios
Copyright © 1998-2011 Programación en Castellano. Todos los derechos reservados
Datos legales | Politica de privacidad | Contacte con nosotros | Publicidad

Diseño web y desarrollo web. Un proyecto de los hermanos Carrero.

Red internet:
Juegos gratis | Servidores dedicados
Más internet: Password | Directorio de weblogs | Favicon