diciembre
2
Datos Técnicos
Struts 2: El framework de desarrollo de aplicaciones Java EE
PDF | Spanish | 218 MB | 490 Páginas | ISBN: 9782746055421 | 1era Edición | Jérôme Lafosse | Mayo 2010 | Ediciones ENI | Enviado por Anónimo
Descripción
Este libro sobre Struts 2 se dirige a los desarrolladores Java que quieren tener un libro de referencia para la utilización del framework de Java EE más popular. El libro está dividido en 23 capítulos que explican el funcionamiento y la ejecución de proyectos Web a partir del framework.
Los primeros capítulos describen el framework de Java EE de referencia con sus servicios y su instalación a través del modelo de diseño MVC. Los capítulos 3 y 4 presentan un ejemplo concreto de proyecto de Struts 2 para gestionar los registros y la depuración. En el siguiente capítulo, el lector podrá conocer en detalle la administración de las acciones, el mapping, los formularios y las redirecciones. El capítulo 6 presenta de manera extensa la biblioteca de etiquetas de Struts.
En el resto del libro, el lector aprenderá a administrar los mensajes y la internacionalización, así como la validación de las entradas, los tipos y las conversiones. Un capítulo está dedicado al modelo de acceso a los datos, a la carga y descarga de datos y a la carga de las páginas.
El desarrollo de los interceptores se detalla ampliamente en el capítulo 14, así como la gestión de los resultados en el capítulo 15.
Los siguientes capítulos están dedicados a Ajax Struts y a los motores de plantillas, así como a la visualización de la información a través de XSLT. Los últimos capítulos se refieren a la utilización y el desarrollo de complementos con Struts, así como a la configuración cero y el lenguaje OGNL.
Cada concepto se expone de forma teórica y técnica para permitir a los diseñadores que tengan conocimientos en Java EE utilizar una API que facilita el desarrollo de aplicaciones Web. 

Contenido
Capítulo 1
Presentación
1. ¿Qué es un framework? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2. ¿Por qué utilizar un framework?. . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1 Normas y estándares. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 Framework y desarrollo Web. . . . . . . . . . . . . . . . . . . . . . . . . . 13
3. Los distintos tipos de framework . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4. ¿Qué framework elegimos?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5. Introducción a la programación en Java Entreprise Edition . . . . . . . 15
6. Struts 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
7. Struts 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
8. Instalación del framework Struts 2. . . . . . . . . . . . . . . . . . . . . . . . . 20
9. En resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Capítulo 2
Modelo de diseño MVC y Java EE
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2. Primer proyecto MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3. Proyecto MVC con filtro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4. En resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Capítulo 3
Empezar a usar Struts 2
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2. Funcionamiento general de Struts 2 . . . . . . . . . . . . . . . . . . . . . . . . 42
3. Los interceptores de Struts 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4. El archivo de configuración struts.xml . . . . . . . . . . . . . . . . . . . . . . 45
4.1 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.2 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.3 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.4 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.5 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.6 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.7 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.8 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5. Arquitectura de Struts 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
6. Los archivos de propiedades struts.properties y default.properties. . 56
7. El archivo de propiedades de la aplicación web.xml . . . . . . . . . . . . 60
8. El archivo de configuración struts-default.xml . . . . . . . . . . . . . . . . 61
9. Nuestra primera aplicación con Struts . . . . . . . . . . . . . . . . . . . . . . 62
10. En resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Capítulo 4
Gestión de los registros y de la depuración
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
2. Administración de la depuración. . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3. Administración de la creación de perfiles (Profiling) . . . . . . . . . . . . 75
4. En resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Capítulo 5
Gestión de las acciones
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
2. Clases de acción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3. Administración de los recursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.1 Acceso a los recursos por clase. . . . . . . . . . . . . . . . . . . . . . . . . 85
3.2 Acceso a los recursos por interfaz . . . . . . . . . . . . . . . . . . . . . . 87
3.3 Trasladar parámetros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
4. Administración dinámica del mapping . . . . . . . . . . . . . . . . . . . . . . 93
5. Invocación dinámica de métodos . . . . . . . . . . . . . . . . . . . . . . . . . . 98
6. Administración de los resultados . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.1 Redirección con parámetros. . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.2 Redirección sin parámetros . . . . . . . . . . . . . . . . . . . . . . . . . . 105
6.3 Redirección a una acción . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
6.4 Redirección encadenada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
6.5 FreeMarker y Velocity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
6.6 HttpHeader. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
6.7 Stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
6.8 XSLT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
6.9 PlainText. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
7. Administración de las excepciones . . . . . . . . . . . . . . . . . . . . . . . . 116
8. En resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Capítulo 6
Biblioteca de etiquetas de Struts
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
2. Las etiquetas de formulario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
2.1 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
2.2 Los temas de presentación y el atributo theme . . . . . . . . . . . 126
2.3 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
2.4 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . 129
2.5 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
2.6 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
2.7 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
2.8 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
2.9 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
2.10 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . 133
2.11 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
2.12 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . 141
2.13 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
2.14 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . 147
2.15 Otras etiquetas de los formularios de Struts . . . . . . . . . . . . . 150
3. Las etiquetas de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
3.1 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . 151
3.2 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
3.3 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
3.4 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
3.5 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
3.6 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
3.7 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
3.8 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
3.9 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
3.10 Las etiquetas , y . . . . . . . . . . . 159
3.11 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
3.12 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
3.13 La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
4. En resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Capítulo 7
Mensajes e internacionalización
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
2. Aplicación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
3. Acceso a las propiedades. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
4. Datos multilingües . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
5. Selección dinámica de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
6. Acceso a los recursos de las clases. . . . . . . . . . . . . . . . . . . . . . . . . 185
7. En resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Capítulo 8
Validación de entradas
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
2. Aplicación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
3. Validaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
3.1 required. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
3.2 requiredstring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
3.3 stringlength. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
3.4 int . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
3.5 date. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
3.6 e-mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
3.7 url . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
3.8 regex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
3.9 fieldexpression y expression. . . . . . . . . . . . . . . . . . . . . . . . . . 203
3.10 conversion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
3.11 visitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
4. Aplicación de un ejemplo completo . . . . . . . . . . . . . . . . . . . . . . . 209
5. Gestión de mensajes de error y SUCCESS. . . . . . . . . . . . . . . . . . . 215
6. Escribir un validador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
6.1 La interfaz Validator y las clases ValidatorSupport y
FieldValidatorSupport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
6.2 Declarar los validadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
6.3 Aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
6.4 Validación en las clases de acción . . . . . . . . . . . . . . . . . . . . . 231
7. En resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Capítulo 9
Gestión de los tipos y de las conversiones
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
2. Administración de las conversiones. . . . . . . . . . . . . . . . . . . . . . . . 236
3. Administración de los tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
4. Aplicación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
5. En resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Capítulo 10
Capa modelo y acceso a los datos
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
2. Aplicación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
3. El interceptor Preparable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
4. Acceso y manipulación de datos . . . . . . . . . . . . . . . . . . . . . . . . . . 264
4.1 El modelo Data Access Object DAO . . . . . . . . . . . . . . . . . . . 265
5. En resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
Capítulo 11
Gestión de la carga o upload de datos
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
2. La etiqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
3. El interceptor fileUpload. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
4. Carga única . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
5. Carga múltiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
6. Carga en Ajax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
7. En resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
Capítulo 12
Gestión de la descarga de datos
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
2. Resultado stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
3. Descarga dinámica de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
4. En resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
Capítulo 13
Gestión de la carga de páginas
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
2. Aplicación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
3. En resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
Capítulo 14
Desarrollar interceptores
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
2. Escribir un interceptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
3. En resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
Capítulo 15
Desarrollar resultados
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
2. Escribir un resultado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
3. En resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Capítulo 16
Gestión del doble clic o doble envío
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
2. Aplicación del testigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
3. En resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Capítulo 17
Struts y Ajax JQuery
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
2. Instalación del framework JavaScript . . . . . . . . . . . . . . . . . . . . . . 350
3. Tecnología Ajax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
4. Optimizaciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
4.1 Utilización de botones dinámicos . . . . . . . . . . . . . . . . . . . . . 363
4.2 Gestión de cuadros (box) dinámicos para las confirmaciones
y mensajes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
4.3 Utilización del complemento Widget. . . . . . . . . . . . . . . . . . . 368
4.4 Utilización de herramientas dinámicas . . . . . . . . . . . . . . . . . 373
4.5 Utilización de un servicio de autocompletado para
las búsquedas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
4.6 Gestión de clasificaciones dinámicas . . . . . . . . . . . . . . . . . . . 387
5. En resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
Capítulo 18
Los motores de plantillas
1. Velocity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
2. Cómo usar Velocity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
3. FreeMarker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
4. En resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
Capítulo 19
XSLT
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
2. Utilización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
3. En resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
Capítulo 20
Complementos de Struts
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
2. El complemento JFreeChart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
3. El complemento Tiles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
3.1 Página del formato de la plantilla . . . . . . . . . . . . . . . . . . . . . 422
3.2 Definición de la plantilla . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
3.3 Aplicación del complemento Tiles. . . . . . . . . . . . . . . . . . . . . 425
4. Escribir un complemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
5. Utilizar el complemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
6. Otros complementos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
7. En resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
Capítulo 21
Struts sin configuración
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
2. Configuración. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
3. Utilización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
3.1 Nomenclatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
3.2 Notación de acciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
3.3 Anotaciones de resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
3.4 Anotación de interceptores . . . . . . . . . . . . . . . . . . . . . . . . . . 442
3.5 Anotaciones de espacios de nombre. . . . . . . . . . . . . . . . . . . . 447
3.6 Anotaciones de las vistas. . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
3.7 Anotaciones de las excepciones . . . . . . . . . . . . . . . . . . . . . . . 448
3.8 Carga automática de la configuración . . . . . . . . . . . . . . . . . . 449
4. En resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
Anexo
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
2. Interceptores de Struts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
3. Object-Graph Navigation Language OGNL. . . . . . . . . . . . . . . . . . 454
4. En resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
Índice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
Acerca del Autor
Ingeniero en informática y graduado en la CNAM, Jérôme Lafosse trabaja como asesor, diseñador y formador en las tecnologías Java. Especialista en tecnologías Web, trabaja para fomentar las herramientas y soluciones de código abierto (Open Source) para el desarrollo de proyectos de Internet. También enseña la plataforma Java Enterprise Edition y el diseño de proyectos Web en Licenciaturas y Masters.
Enlaces
Struts.2.El.framework.de.desarrollo.de.aplicaciones.Java.EE-ENI
TurboBit | Uploaded | Drive | RapidGator | LoLas | 1Fichier | Mega | +ENLACES

[E.MAGNETICO] Struts.2.El.framework.de.desarrollo.de.aplicaciones.Java.EE-ENI

Contraseña/Password: www.intercambiosvirtuales.org

Web del Autor

No somos responsables de los enlaces en la caja de comentarios sociales, usarlos bajo su propio juicio.
2
@gunsofledz 02/12/2014 21:58:00 #1

Muchas gracias Jimmy!!!! hay algo de Hibernate y Struts ???

@Jorge 02/12/2014 22:14:58 #2

Estos libros son caros y muy buenos los de sistemas operativos porfavor o los de redes y diseño

¿Algo que Comentar?

Tu avatar en los
comentarios

Sonrisa Triste, Afligido, Apenado Sonrisa Guiñar un ojo Burla, Broma, Sarástico Muerto de Risa Contento, Feliz Neutral, Sin Palabras Roll Eyes (Sarcástico) Conmocionado, Impresionado Confundido, Desorientado Chido, Bueno, Exelente, Lindo Sonrojado, Ruborizado, Avergonzado Risa Malvada, Malvado Enojado, Enfadado Sorpresa, Asombro, Admiración Loco, Enojado, Enfadado y con Ideas Disparatadas Llanto, Lloro, Desconsuelo Exclamación, Imprecación Idea, Opinión Flecha Enojado        

Tenga en Cuenta: La moderación de comentarios está habilitada y puede retrasar tu comentario. No hay necesidad de volver a enviar su comentario.