Ejemplo integrador del capítulo 7

Documentos relacionados
Struts. Sesión 2: La vista en Struts. ActionForms y taglibs propias. Especialista Universitario Java Enterprise

DESARROLLO DE APLICACIONES WEB Introducción a Struts Framework

Struts [parte I]

La vista: ActionForms y taglibs propias

Struts. Sesión 1. Introducción a Struts: el controlador y las acciones. Especialista Universitario Java Enterprise

Especialista Universitario Java Enterprise. Struts. Sesión 4: Introducción a Struts Depto. Ciencia de la Computación e IA

Curso Java Web (JSP's/Servlets)

Struts. Índice. Copyright Dept. Ciencia de la Computación e IA All rights reserved.

Fundamentos para el desarrollo de aplicaciones en la red. Tema: Frameworks de desarrollo sobre páginas JSP. Autor: Elías Niño

Requisitos. Universidad ORT Arquitectura de Software

Introducción a JSF con NetBeans

Experto Universitario Java Enterprise Spring

4. CODIFICACIÓN. Previo a la codificación además de instalar las respectivas herramientas es. importante tenerlas bien configuradas.

Vamos a mostrar el código fuente de la clase Persona y el del Servlet que imprime una lista de personas :

FUNCIONAMIENTO: FUNCIONALIDAD

INTERFACE ITERATOR DEL API JAVA. MÉTODO REMOVE PARA BORRAR OBJETOS EN COLECCIONES. EJERCICIOS Y EJEMPLO RESUELTO. (CU00919C)

Clase. geniería de la Computación. Departamento de Ciencias e Ing. Diego C. Martínez - DCIC-UNS

Java Struts Framework. Juan Fco. Rodríguez Hervella

A continuación en la figura D.1 se verá el código de una implementación del archivo struts-config.xml:

Lección 1 Introducción a Struts. uacosta@globalmentoring.com.mx

JSP (I) Aplicaciones Distribuidas

Mario Muñoz Organero & Norberto Fernández * Departamento de Ingeniería Telemática

Ingeniería del Software Separación entre Presentación y Lógica del Negocio

Laboratorio de Aplicaciones Telemáticas Ingeniería Técnica de Telecomunicación Especialidad en Telemática

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS

Lógica en páginas JSP (I)

Práctica No. 6. Manejo de Eventos con Javascript

Agosto. Un primer JSP. Guía rápida. [ h t t p : / / w w w. o p e n b o x e r m b. c o m / j a v a. p h p ]

Algoritmos y Estructuras de Datos Iteradores. Guillermo Román Díez

COMPONENTES COMUNES (T46BB)

4.4 Tutorial de JSP 2.0, JSTL y Apache Struts

Sistemas de Información 12/13 Ejercicios Tecnologías Web

PRACTICA JSP SEMANA 2

Java Session. Usando Java Session en aplicaciones web

Algoritmos y Estructuras de Datos: Ordenación y Colas con Prioridad. Guillermo Román Díez

Construcciones del Lenguaje Java

INTERFACE COLLECTION DE JAVA.UTIL DEL API JAVA. EJERCICIOS Y EJEMPLOS RESUELTOS. MÉTODOS ADD, REMOVE, SIZE. STREAMS (CU00917C)

Aplicaciones Web Mg. Abril Saire Peralta

Seguridad de la aplicación para servlets y JSP (página activas java)

Aplicaciones Web con Servlets y JSP (II)

Aplicaciones Web con Servlets y JSP (II)

PROGRAMACIÓN ORIENTADA POR OBJETOS EN JAVA

Grupo de Ingeniería del Software. Conceptos básicos de formularios HTML

De esta manera, cuando el usuario rellena un campo cómo el siguiente... <input type="text" name="telefono"> </form>

JAVASERVER PAGES (JSP)

ISJu: Técnicas de Programación Cartilla Teórica-Práctica Instalación del "Eclipse IDE for Java EE Developers" y el servidor "Apache Tomcat"

Aplicaciones Web (Curso 2015/2016)

Librería Estándar de Etiquetas JSP (JSTL JSP Standard Tag Library)

Curso Desarrollo Java Web con JSP, Servlets y el MVC

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

SERVLETS. Aplicaciones Distribuidas

Spring MVC. Desarrollo de Aplicaciones Empresariales

Manejo de eventos en JavaScript WEB-TECHNOLOGIES

Versión: 01. Fecha: 01/04/2013. Código: F004-P006-GFPI GUÍA DE APRENDIZAJE Nº 1 1. IDENTIFICACIÓN DE LA GUIA DE APRENDIZAJE

Entiendo los métodos de Java equals y hashcode

Escribir código HTML en los servlets es tedioso. que hay que utilizar las instrucciones print, println, etc. Es decir, HTML está dentro de java.

Curso de gráficos con Java y OpenFlashChart para aplicaciones web. Manual del alumno

Carrito de Compras con Servlet, Arreglos y Sesiones

J2EE Java 2 Enterprise Edition

CapÍtulo 3: Manejo de Forms.

USANDO SERVLETS EN UN SERVIDOR WEB RESIN

Arquitectura Java Web. Ing. Juan Zevallos Valle

Unidad 1.- Fundamentos de sitios web. El lenguaje HTML. Desarrollo de aplicaciones Web. Felipe LC

Algoritmos y Programación Orientada a Objetos I. Contenedoras de tamaño variable y uso de ciclos en otros contextos

Introducción a Java 10/02/2011. Tokens. Juan Manuel Fernández Peña Curso Rev Tokens. Tokens

INSERCIÓN DE UN REGISTRO CON PHP Y MYSQL

EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFACE ITERABLE DEL API DE JAVA Y MÉTODO ITERATOR. RECORRER COLECCIONES DE OBJETOS (CU00915C)

Ejercicios de MVC en Spring

Aplicaciones Web con Servlets y JSP (I)

Diseño Y Aplicaciones de Sistemas Distribuidos. Servlets. Joan Vila

4.5 Caso de estudio: diseño e implementación de las capas controlador y vista de MiniBank con JSTL y Jakarta Struts.

3.1 Escribiendo una aplicación en Struts

ArrayList en Java. Los principales métodos para trabajar con los ArrayList son los siguientes:

Ejemplos de Servlet y JSP Web Application Development

Spring. Sesión 5: Spring MVC (II) Validación e internacionalización

Transcripción:

Ejemplo integrador del capítulo 7 En esta sección, complementaria de todo lo visto en el Capítulo 7, realizaremos un ejemplo integrador: crearemos una página de ingreso de usuarios al sistema, donde tendremos que ingresar, además, una serie de combinaciones de datos en diferentes formatos. Un ejemplo integrador...2 Actividades...10 Resumen...9

2 APÉNDICE A. EJEMPLO INTEGRADOR DEL CAPÍTULO 7 Un ejemplo integrador Después de tantos tags, tantos atributos, tantas configuraciones y modos de uso, es menester presentar un ejemplo integrador donde usemos todas las etiquetas y, además, veamos cómo acceder a los datos desde el servidor. Vamos a crear una página de ingreso de usuarios al sistema. Estamos acostumbrados a tener que ingresar nombre de usuario y contraseña para acceder a muchos de ellos. Aquí vamos a tener que ingresar, además, una serie de combinaciones de datos en diferentes formatos, sin perder de vista la seguridad! Como primer paso, vamos a declarar el form del tipo LazyValidatorForm que vamos a usar: <form-bean name= loginform type= org.apache.struts.validator.lazyvalidatorform > <form-property name= seleccionaves type= java.lang.string[] /> </form-bean> Solo un atributo será de selección múltiple, y lo definimos como arreglo. Luego, declaramos las dos acciones: la que prepara el formulario y, también, la que lo procesa: <action path= /login type= capitulo7.action.verloginaction name= loginform scope= request > <forward name= ok path= /jsp/capitulo7/login.jsp /> </action> <action path= /procesarlogin type= capitulo7.action.procesarloginaction

DESARROLLO WEB CON JAVA DESDE CERO 3 name= loginform scope= request > <forward name= ok path= /jsp/capitulo7/portada.jsp /> <forward name= denegado path= /jsp/capitulo7/denegado.jsp /> </action> La primera acción nos envía a la página que muestra el formulario de ingreso; la segunda acción tiene dos posibilidades, dependiendo de si el usuario ingresó correctamente los datos o no. Veamos la primera acción, VerLoginAction: package capitulo7.action; import java.util.arraylist; import java.util.collection; import java.util.hashset; import java.util.vector; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import org.apache.struts.action.action; import org.apache.struts.action.actionform; import org.apache.struts.action.actionforward; import org.apache.struts.action.actionmapping; import org.apache.struts.util.labelvaluebean; import org.apache.struts.validator.lazyvalidatorform; public class VerLoginAction extends Action { public ActionForward execute(actionmapping map, ActionForm form, HttpServletRequest req, HttpServletResponse res) throws Exception { // Cast al tipo específico de objeto

4 APÉNDICE A. EJEMPLO INTEGRADOR DEL CAPÍTULO 7 LazyValidatorForm dyna = (LazyValidatorForm) form; // Una colección de bailes Collection bailes = new HashSet(); bailes.add(new LabelValueBean( Tango, t )); bailes.add(new LabelValueBean( Merengue, m )); bailes.add(new LabelValueBean( Vals, v )); bailes.add(new LabelValueBean( Swing, s )); // Una colección de aves Collection aves = new Vector(); aves.add(new LabelValueBean( Zorzal, z )); aves.add(new LabelValueBean( Colibri, c )); aves.add(new LabelValueBean( Golondrina, g )); aves.add(new LabelValueBean( Bencejo, b )); aves.add(new LabelValueBean( Chucao, ch )); // Una colección de letras griegas Collection letras = new ArrayList(); letras.add(new LabelValueBean( alfa, a )); letras.add(new LabelValueBean( beta, b )); letras.add(new LabelValueBean( gama, c )); letras.add(new LabelValueBean( delta, d )); letras.add(new LabelValueBean( epsilon, e )); dyna.set( bailes, bailes); dyna.set( aves, aves); dyna.set( letras, letras); // Queremos ir a la vista de nombre ok return map.findforward( ok );

DESARROLLO WEB CON JAVA DESDE CERO 5 Esta acción simplemente guarda unas colecciones en el formulario. En una aplicación más realista, estos datos seguramente estarían guardados en una base de datos o, al menos, en un archivo de propiedades y nunca en el código, pero, a los efectos del ejemplo, sirve. Notemos un detalle importante: las tres colecciones son implementadas por distintos tipos: HashSet, Vector y ArrayList. A la hora de mostrar las opciones o iterar, Struts itera sobre el tipo Collection sin importar qué clase específica es la que lo implementa. Este enfoque, sin embargo, necesita una precaución. En el primer caso, estamos usando un HashSet, que implementa un conjunto. La iteración sobre los elementos es desordenada, lo que implica que, en diferentes accesos a la página, podremos obtener los elementos en diverso orden. Esto puede confundir al usuario o ser proclive a errores si nuestra acción asume que los datos estaban en determinado orden. Veamos ahora la página JSP, donde hacemos extenso uso de los tags JSP que aprendimos en el capítulo. <%@ taglib uri= /tags/struts-html prefix= html %> <%@ taglib uri= /tags/struts-bean prefix= bean %> <%@ taglib uri= /tags/struts-logic prefix= logic %> <html:html> <html:form action= procesarlogin > <%-- Un campo de texto --%> Nombre de usuario: <html:text property= usuario size= 10 /><br/> <%-- Un campo de texto de tipo contraseña --%> Contraseña: <html:password property= clave size= 30 /><br/> <h3>igualdades</h3> <%-- Dos checkboxes fijos --%>

6 APÉNDICE A. EJEMPLO INTEGRADOR DEL CAPÍTULO 7 <html:checkbox property= e_i_pi />e<sup>i π</sup> = -1<br/> <html:checkbox property= abc />A<sup>2</sup> + B<sup>2</sup> = C<sup>2</sup><br/> <%-- Botones radio --%> <h3>baile</h3> <logic:iterate indexid= i id= bailebean name= loginform property= bailes > <html:radio property= baile idname= bailebean value= value /> <bean:write name= bailebean property= label /> <%-- Un salto de línea luego del segundo elemento solamente --%> <logic:equal name= i value= 1 > <br/> </logic:equal> </logic:iterate> <%-- Un conjunto de checkboxes en base a una colección --%> <h3>aves</h3> <logic:iterate id= ave name= loginform property= aves > <html:multibox property= seleccionaves > <bean:write name= ave property= value /> </html:multibox> <%-- Escribimos el nombre del ave --%> <bean:write name= ave property= label /> </logic:iterate> <%-- Una lista de selección simple --%> <h3>letras griegas</h3> <html:select property= letra size= 3 multiple= false > <html:optionscollection name= loginform property= letras label= label value= value />

DESARROLLO WEB CON JAVA DESDE CERO 7 </html:select><br/> <br/> <html:submit value= Enviar /> </html:form> </html:html> El resultado de esta página lo vemos en la Figura 1. Figura 1. Todos los tipos de ingreso de datos posibles en una página, usando tags de Struts. Por último, la clase que obtiene los datos del formulario los procesa y redirige la acción según estos:

8 APÉNDICE A. EJEMPLO INTEGRADOR DEL CAPÍTULO 7 package capitulo7.action; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import org.apache.struts.action.action; import org.apache.struts.action.actionform; import org.apache.struts.action.actionforward; import org.apache.struts.action.actionmapping; import org.apache.struts.validator.lazyvalidatorform; public class ProcesarLoginAction extends Action { public ActionForward execute(actionmapping map, ActionForm form, HttpServletRequest req, HttpServletResponse res) throws Exception { // Cast al tipo específico de objeto LazyValidatorForm dyna = (LazyValidatorForm) form; // Obtenemos todos los datos del formulario String usuario = (String) dyna.get( usuario ); TABLAS AVANZADAS El proyecto DisplayTag provee un paquete de tags muy poderosos para usar en las páginas JSP. Con ellos podremos crear tablas y manejar las columnas a mostrar, el ordenamiento, la paginación, los estilos y demás. Es un proyecto de código abierto. Su dirección web: http://displaytag.sourceforge.net.

DESARROLLO WEB CON JAVA DESDE CERO 9 String clave = (String) dyna.get( clave ); boolean e_i_pi = on.equals(dyna.get( e_i_pi )); boolean abc = on.equals(dyna.get( abc )); String baile = (String) dyna.get( baile ); String[] aves = (String[]) dyna.get( seleccionaves ); String letra = (String) dyna.get( letra ); // Comparamos los datos if (usuario.equals( juan ) && clave.equals( perez ) && e_i_pi &&!abc && baile.equals( s ) && letra.equals( b ) && aves.length == 2 && aves[0].equals( z ) && aves[1].equals( g )) { // Ingreso correcto return map.findforward( ok ); else { // Acceso denegado return map.findforward( denegado ); RESUMEN En esta sección, complementaria e integradora de todo lo visto en el Capítulo 7, creamos una página web de ingreso de usuarios al sistema.

10 APÉNDICE A. EJEMPLO INTEGRADOR DEL CAPÍTULO 7 Actividades TEST DE AUTOEVALUACIÓN 1 Complete el ejemplo integrador creando las páginas de salida correspondientes. 2 Modifi que el ejemplo integrador para que tome los textos de un archivo de recursos. PROFESOR EN LÍNEA Si tiene alguna consulta técnica relacionada con el contenido, puede contactarse con nuestros expertos: profesor@redusers.com.