martes, 4 de junio de 2013
Ejercicios de clase. Clase 6: ejemplo de aplicación JSF
![]() |
| Aspecto del facelet index. Se solicitan los datos básicos del cliente y dos colores para determinar el aspecto que tendrá el curriculum del usuario |
![]() |
| Activando/Desactivando la casilla de verificación se pueden mostrar los colores con nombes o con código hexadecimal. |
![]() |
| El formulario valida los datos de entrada de manera que todos los campos son obligatorios y la edad debe estar entre 16 y 64 |
![]() |
| El currículum se muestra con los datos recogidos en el formulario de entrada y los colores seleccionados. |
![]() |
| Si el color frontal y de fondo seleccionados son el mismo, se nos redirige a una página de error. |
Aspectos a destacar:
El manejo de eventos (véase cómo se maneja el evento de cambio de estado de la casilla de verificación)
Los mecanismos de validación
Uso de los archivos de propiedades para el cambio inmediato de idioma (internacionalización)
Carga de archivos de propiedades usando anotaciones en vez de etiquetas en faces-config.xml
Uso de parámetros en el formateo de mensajes ({0},{1},... en los valores de los archivos de propiedades)
Reglas de navegación (tanto en faces-config.xml como en el asistente gráfico -pestaña PageFlow del archivo de configuración-)
Declaración de un Managed Bean en el archivo faces-config.xml como alternativa tradicional a las nuevas anotaciones.
lunes, 3 de junio de 2013
Ejercicios de clase. Clase 5: aplicación JSF básica.
Crea una aplicación JSF que disponga de dos facelets: uno que permita introducir un nombre en un formulario y otro que al recibir el formulario, visualice un saludo personalizado empleando el nombre introducido en el cuadro de texto, tal y como se muestra en las figuras:
![]() |
| El facelet index.xhtml visualiza un sencillo formulario para escribir un nombre |
![]() |
| El facelet confirmacion.xhtml visualiza un saludo empleando el nombre escrito en el formulario. |
Ten en cuenta los siguiente aspectos adicionales:
Utiliza una etiqueta <h:panelGrid> para que se organicen los elementos index.xhtml de manera que junto al cuadro de texto del nombre aparezcan los mensajes de error de las validaciones.
Los errores de validación deben mostrarse de color violeta.
El envío de datos de un facelet al otro debe hacerse mediante un Managed JavaBean con una propiedad "nombre" de tipo cadena.
Rellenar el campo nombre será obligatorio. En caso de dejarse vacío deberá aparecer el mensaje: "Debe completar el campo de nombre".
Comprueba que el texto introducido tiene una longitud de entre 5 y 15 caracteres. En caso de que no sea así, debe visualizarse el mensaje de validación por defecto precedido de "Campo nombre".
Haz que la etiqueta del campo de texto y los mensajes de los apartados d) y e) sean referenciados desde un archivo de propiedades "cadenas.properties" incluido en un paquete llamado "recursos" (para que funcione debes crear un archivo de configuración faces-config.xml y declarar recursos.cadenas y una variable para referenciarlo desde los facelets)
domingo, 2 de junio de 2013
Ejercicios de clase. Clase 5: servlets asíncronos.
En el siguiente enlace podrás descargar un proyecto web que cuenta con una sencilla página de inicio con un enlace a un servlet. Dicho servlet simula una tarea de 10 segundos de duración antes de producir la salida ¡HOLA, MUNDO! Este hecho provoca que, de cara al usuario, parezca que el servlet no responde debido a algún posible fallo cuando, en realidad, está en pleno proceso. Para evitar esta situación, a partir de la versión 3.0 se pueden crear servlets asíncronos que generen nuevos hilos de ejecución para evitar que los accesos lentos a algún recurso interfieran en la interacción con el usuario.
Modifica el servlet para que se comporte de forma asíncrona, creando un hilo que atienda la tarea lenta mientras el hilo principal del servlet atiende de inmediato la interacción con el usuario, tal y como se muestra en el siguiente diagrama:
Modifica el servlet para que cuando termine la tarea asíncrona capture un evento que le permita comunicarle este hecho al usuario, tal y como se muestra en la siguiente figura (simbólicamente, sólo mostraremos un mensaje en la consola de salida cuando se complete la tarea)
![]() |
| Consola del servidor |
Ejercicios de clase. Clase 5: filtros y wrappers.
Crea un proyecto web que contenga una página de inicio "index.jsp" que incluya dos hipervínculos a dos servlets, "Servlet1" y "Servlet2". Cada servlet se limitará a mostrar su nombre y contendrá un enlace para volver a la página de inicio. Una vez que la navegación entre la página de inicio y los servlets sea correcta:
![]() |
| La página de inicio index.jsp |
a) Crea un filtro que incremente un contador único cada vez que se accede a uno de los servlets. El valor del contador será enviado al servlet al que inicialmente iba dirigida la solicitud interceptada por el filtro para que éste muestre dicho valor en la salida.
![]() |
| Salida de uno de los servlets cuando es invocado desde el hipervínculo de la página de inicio |
b) Amplía el filtro del apartado anterior para que disponga de dos parámetros iniciales, "frecuenciaPublicidad" y "mensajePublicitario" de manera que cada cierto número de accesos a los servlets (indicado por "frecuenciaPublicidad") se muestre, a mayores, la cadena de texto almacenada en "mensajePublicitario".
![]() |
| Visualización de "mensajePublicitario" cada 5 accesos ("frecuenciaPublicidad) a cualquiera de los servlets |
Suscribirse a:
Entradas (Atom)


















