Академический Документы
Профессиональный Документы
Культура Документы
Colección
Recursos Informáticos
Contenido
Podrá descargar algunos elementos de este libro en la página web de Ediciones ENI:
http:www.ediciones-eni.com
Escriba la referencia ENI del libro RIT6JEE en la zona de búsqueda y valide.
Haga clic en el título y después en el vínculo de descarga.
Introducción . . . . . . . . . . . . . . . . . . . 11
A. Introducción . . . . . . . . . . . . . . . . . . . . 15
A. Presentación . . . . . . . . . . . . . . . . . . . . 27
1. Funcionamiento . . . . . . . . . . . . . . . . . . . . . . 27
2. Las URL . . . . . . . . . . . . . . . . . . . . . . . . . 30
Servlets Capítulo 3
A. Presentación . . . . . . . . . . . . . . . . . . . . 45
1. Diálogo con un servlet . . . . . . . . . . . . . . . . . . . 45
2. Tratamientos realizados . . . . . . . . . . . . . . . . . . . 46
3. Clases e interfaces utilizadas . . . . . . . . . . . . . . . . . 47
G. Filtros . . . . . . . . . . . . . . . . . . . . . . . 91
1. Creación . . . . . . . . . . . . . . . . . . . . . . . . . 92
2. Declaración . . . . . . . . . . . . . . . . . . . . . . . . 93
H. Eventos . . . . . . . . . . . . . . . . . . . . . . 97
1. Eventos asociados a la aplicación . . . . . . . . . . . . . . . 97
2. Eventos asociados a sesiones . . . . . . . . . . . . . . . . 100
A. Presentación . . . . . . . . . . . . . . . . . . . . 125
1. Tratamiento de una página JSP por el servidor . . . . . . . . . 127
2. Elementos que constituyen una página JSP . . . . . . . . . . . 131
C. Scriptlets . . . . . . . . . . . . . . . . . . . . . 136
1. Declaración de variables o de métodos <%! %> . . . . . . . . 136
2. Inserción de instrucciones Java <% %> . . . . . . . . . . . . 137
3. Evaluación de una expresión <%= %> . . . . . . . . . . . . 137
4. Comentarios <%-- --%> . . . . . . . . . . . . . . . . . . 138
A. Presentación . . . . . . . . . . . . . . . . . . . . 155
A. Presentación . . . . . . . . . . . . . . . . . . . . 193
JDBC Capítulo 8
Anexos
A. Estructura general del descriptor de despliegue . . . . . 265
Índice . . . . . . . . . . . . . . . . . . . . . . . 282
Struts 2
El framework de desarrollo
de aplicaciones Java EE
Colección
Expert IT
Contenido
Podrá descargar algunos elementos de este libro en la página web
de Ediciones ENI: http://www.ediciones-eni.com.
Escriba la referencia ENI del libro EIT2STRU en la zona de búsqueda y valide.
Haga clic en el título y después en el vínculo de descarga.
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
2 Struts 2
El framework de desarrollo de aplicaciones Java EE
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 <package/> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.2 La etiqueta <include/>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.3 La etiqueta <action/> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.4 La etiqueta <result/> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.5 La etiqueta <param/> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.6 La etiqueta <constant/> . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.7 La etiqueta <global-results/> . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.8 La etiqueta <interceptors/> . . . . . . . . . . . . . . . . . . . . . . . . . . 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
Contenido 3
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 <s:form/> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
2.2 Los temas de presentación y el atributo theme . . . . . . . . . . . 126
2.3 La etiqueta <s:textfield/>. . . . . . . . . . . . . . . . . . . . . . . . . . . 129
4 Struts 2
El framework de desarrollo de aplicaciones Java EE
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 Struts 2
El framework de desarrollo de aplicaciones Java EE
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 <s:file/> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Contenido 7
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
8 Struts 2
El framework de desarrollo de aplicaciones Java EE
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
Contenido 9
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
10 Struts 2
El framework de desarrollo de aplicaciones Java EE
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