on en... o Agradecimientos xix Acercadelautor xx Introducción xxi Código real para programadores formales Cómo está organizado este libro xxiii Convenciones xxvii Recursos en Web xxvii xxii PARTE 1 Servlets 2. I Y2.2 2 CAPÍTULO 1 Panorama de los servlets y las JavaServer Pages 4 1.1 Servlets s 1.2 Ventajasde losservletssobre el CGI"tradicional" 7 Eficientes 7 Adecuados 7 v
Poderosos 8 Transportables 8 Seguros 8 Económicos 9 1.3 JavaServer P~ges 9 la Ventajas de JSP 10 Comparado con ASP 1O Comparado con PHP 10 Comparado con los servlets 11 Comparado con SSI 11 ComparadoconJavaScript 1 1 Comparado con el HTMLestático 12 1.5 Instalacióny configuración 12 Cómo obtener el software de JSPy Servlet 12 Marcado o instalación de la documentación de los servlets y la APIdeJSP 14 Identificaciónde las clases para el compilador de Java 14 Empaquetado de las clases 15 Configure al servidor 16 Arranque el servidor 17 Compile e instale sus servlets 18 CAPÍTULO 2 Los primeros servlets 20 2.1 Estructura básica de los servlets 21 2.2 Un servlet sencillo que genera sólo texto 23 Comp,ilacióne instalación del servlet Cómo invocar al servlet 25 24 2.3 Un servlet que genera HTML 26 2.4 Empaquetado de los servlets 27 Cómo crear los servlets en paquetes 28 Cómo compilar a los servlets que están en paquetes Cómo invocar a los servlets que están en paquetes 2.5 Utilerías para generar HTMLsencillo 3I 2.6 Elciclo vital del servlet 34 El método init 34 El método service 36 29 30
Los métodos doget, dopost y doxxx 37 La interfaz SingleThreadModel 38 El método destroy 38 2.7 Un ejemplo del uso de los parámetros de carga inicial 39 2.8 Ejemplodel uso de la carga inicialdel servlet y de fechas de modificaciónde la página 44 2.9 Depuración de los servlets 50 2.10 WebClient: cómo hablar con los servidores Web en forma interactiva WebClient 52 HttpClient 55 NetworkClient 57 SocketUtil 59 CloseableFrame 60 LabeledTextField 61 Interruptible 63 52 CAPÍTULO 3 Manejo de las peticiones del cliente: datos del formulario 64 3.1 Elpapel de los formularios de datos 65 3.2 Cómo leer los datos del formulario desde los servlets 3.3 Ejemplo:cómo leer tres parámetros explícitos 67 3.4 Ejemplo:cómo leer todos los parámetros 70 3.5 Un servicio de envío de currículos 74 3.6 Cómo filtrar cadenas de caracteres específicos de HTML Código para el filtrado 88 Ejemplo 89 66 87 CAPÍTULO 4 Manejo de las peticiones del cliente: encabezados de petición 4.1 Lectura de los encabezados de petición desde los servlets 4.2 Cómo desplegar todos los encabezados 96 4.3 Encabezados de petición HTTP 1.1 98 4.4 Cómo enviar páginasweb comprimidas 4.5 Cómo restringir el acceso a páginasweb IQ4 107 94 HTTP 92
CAPÍTULO S Acceso a las variables están dar CGI 114 5.1 Equivalenteen los servlets de las variables CGI 116 5.2 Un servlet que muestra las variables CGI 119 CAPÍTULO 6 Generación de la respuesta del servidor: códigos de estado HTTP 122 6.1 Cómo especificar los códigos de estado 124 6.2 Código de estado HTTP 1.1Ysu propósito 126 6.3 Una interfaz hacia diversos motores de búsqueda 135 CAPÍTULO 7 Generación de la respuesta del servidor: encabezados de respuesta HTTP 142 7.1 Cómo establecer los encabezados de respuesta desde los servlets 143 7.2 Encabezados de respuesta HTTP 1.1Ysu significado 145 7.3 Estado persistente del servlet y páginasde recarga automática 154 7.4 Uso de conexiones HTTP persistentes 163 7.5 Cómo usar los servlets para generar imágenes GIF 168 CAPÍTULO 8 Manejo de las cookies 178 8. I Beneficiosde las cookies 179 Identificaciónde un usuario durante una sesión de comercio electrónico 180 Cómo evitar el nombre de usuario y la contraseña Valores propios en un sitio 180 Enfoque de los anuncios 181 8.2 Algunos problemas con las cookies 181 8.3 LaAPI de cookies de los servlets 183 Cómo generar cookies Atributos de cookies 183 183 Cómo colocar las cookies en los encabezados de respuesta Cómo leer las cookies del cliente 186 8.4 Ejemplos para establecer y leer las cookies 186 180 186
8.5 Utilerías básicas de las cookies 190 Cómo localizar las cookies con nombres específicos Cómogenerar lascookiesde largaduración 19 1 8.6 Una interfaz personalizada para un motor de búsqueda CAPÍTULO 9 Rastreo de sesiones 198 9.1 La necesidad de un rastreo de sesiones 199 Lascookies 200 Reescritura del URL 200 20I 191 190 Campos ocultos de formulario Rastreo de sesiones en los servlets 201 9.2 LaAPI para el rastreo de sesiones 201 Cómo buscar el objeto HttpSession asociado con la petición en curso 202 Cómo buscar información asociada con una sesión 202 Cómo asociar información con una sesión 205 Cómo finalizar las sesiones 206 Cómo cifrar los URLs enviados al cliente 206 9.3 Unservletque muestra un recuento de accesopor cada cliente 207 9.4 Una tienda virtual que utiliza un carrito de supermercado y el rastreo de sesiones 209 Cómo generar la interfaz 21O Manejo de los pedidos 215 Tras bambalinas:implementación de los elementos CarritoSupermercado y Catalogo 220 PARTE 2 JavaServer Pages 228 CAPÍTULO 10 Elementos de secuencias de comandos en JSP 230 10.1 Elementos para secuencias de comandos Texto de plantilla 234 10.2 Expresiones jsp 234 233
Variables predefinidas 234 SintaxisXMLde las expresiones 235 Uso de expresiones como valores de atributo 235 Ejemplo 236 10.3 Los scriptlet jsp< 238 Uso de los scriptlets para generar partes condicionales del archivo jsp 241 Sintaxisespecial de los scriptlets 242 loa Declaraciones jsp 242 Sintaxisespecial de declaración 244 10.5 Variables previamente definidas 244 CAPÍTULO 11 La directiva page de jsp: estructuración de los servlets generados 246 11.1 Elatributo import 248 Directorios para clases propias 248 Ejemplo 249 11.2 Elatributo contenttype 251 Cómo generar documentos de sólo texto Cómo generar hojas de cálculo de Excel 11.3 Elatributo isthreadsafe 258 1104 Elatributo session 259 11.5 Elatributo buffer 259 11.6 Elatributo autoflush 260 11.7 Elatributo extends 260 11.8 Elatributo info 260 11.9 Elatributo errorpage 261 11.10 Elatributo iserrorpage 261 11.11 Elatributo Language 264 11.12 SintaxisXMLpara las directivas 265 252 254 CAPÍTULO 12 Cómo incluir archivos y subprogramas en documentos jsp 266 12.1 Cómo incluir archivos al momento de traducir la página 268 12.2 Cómo incluir archivos al momento de hacer la petición 270
12.3 Cómo incluir subprogramas para el complemento de lava Elelemento jsp:plugin 275 Los elementos jsp:param y jsp:params 277 Elelemento jsp:fallback 278 Ejemplo:generación de texto sombreado 279 274 CAPÍTULO 13 Uso de los javabeans con jsp 286 13.1 Uso básico de los beans 288 Cómo acceder a las propiedades de beans 290 Cómo establecer las propiedades de beans: caso sencillo Cómo instalar las clases de beans 291 290 13.2 Ejemplo:StringBean 292 13.3 Cómo establecer las propiedades de beans 294 Cómo asociar propiedades individualescon parámetros de entrada Conversiones automáticas de tipos 300 Cómo asociar todas las propiedades con parámetros de entrada 13.4 Cómo compartir los beans 302 Creación condicional de los beans 304 CAPÍTULO 14 Generación de sus propias bibliotecas de etiquetas jsp 308 14.1 Componentes que constituyen a una biblioteca de etiquetas 310 Laclase controladora de etiquetas 310 Elarchivo Descriptor de la Bibliotecade Etiquetas 3 11 Elarchivo jsp 3 13 14.2 Cómo definir una etiqueta básica 314 La clase controladora de etiquetas. 315 Elarchivo Descriptor de la Biblioteca de Etiquetas 3 16 Elarchivo jsp 3 18 14.3 Cómo asignar atributos a las etiquetas 319 La clase controladora de etiquetas 3 19 Elarchivo Descriptor de la Bibliotecade Etiquetas 321 Elarchivo jsp 322 14.4 Cómo incluir la estructura de la etiqueta 323 298 301
La clase controladora de etiquetas 324 El archivo Descriptor de la Biblioteca de Etiquetas 326 El archivo jsp 328 14.5 Cómo incluir de manera opcional la estructura de la etiqueta 329 La clase controladora de etiquetas 329 Elarchivo TLD 331 Elarchivo jsp 332 14.6 Cómo manipular la estructura de la etiqueta 334 Laclase controladora de etiquetas 334 Elarchivo Descriptor de la Biblioteca de Etiquetas 335 Elarchivo jsp 336 14.7 Cómo incluir o manejar la estructura de la etiqueta en varias ocasiones Laclase controladora de etiquetas 338 Elarchivo Descriptor de la Biblioteca de Etiquetas 340 Elarchivo jsp 341 14.8 Uso de etiquetas anidadas 341 Laclase controladora de etiquetas 342 Elarchivo Descriptor de la Bibliotecade Etiquetas 348 Elarchivo jsp 350 338 CAPÍTULO 15 Integración de los servlets y jsp 352 15.1 Cómo reenviar peticiones 354 Uso de recursos estáticos 354 Cómo proveer de información a la páginaobjetivo 355 Cómo interpretar los URLsrelativos en la páginaobjetivo Medios alternativos para obtener un RequestDispatcher 15.2 Ejemplo:un agente de viajes virtual 358 15.3 Cómo incluir contenido estático o dinámico 375 15.4 Ejemplo:como mostrar un resultado directo de los servlets y las jsps 377 15.5 Cómo reenviarpeticionesdesde páginasjsp 380 357 358
PARTE 3 Tecnología de apoyo 382 CAPÍTULO 16 Uso de los formularios HTML 384 16.1 Cómo transmiten los datos los formularios HTML 16.2 El elemento FORM 390 385 16.3 Controles de texto 395 Campos de texto 395 Campos de contraseña Áreas de texto 398 16.4 Botones 400 Botones de envio 40 I 397 Botones de restablecimiento 404 Botones de JavaScripty VBScript 405 16.5 Casillas de verificación y botones de radio 405 Casillas de verificación 406 Botones de radio 407 16.6 Cuadros combinados y cuadros de lista 409 16.7 Controles para la transferencia de archivos 412 16.8 Mapas de imágenes en el servidor 414 IMAGE-Mapas de imágenes estándar en el servidor ISMAP-Mapas de imágenes alternativos en el servidor 16.9 Campos ocultos 419 16.10 Cómo agrupar controles 420 16. 1I Cómo controlar el orden de tabulación 422 414 417 16.12Un servidorweb paradepuración 423 EchoServer 423 ThreadedEchoServer 427 NetworkServer 428 CAPÍTULO 17 Uso de los subprogramas como interfaces de los.servlets 17.1 Cómo enviar daros cs>n GET y mostrar la página resultante 432 434
17.2 Una interfaz para diversos motores de búsqueda 435 17.3 Cómo enviar datos con GET y procesar directamente los resultados (túnel HTTP) 438 Cómo leer datos ASCIIo binarios 439 Cómo leer estructuras de datos en serie 441 17.4 Un visor de consultas que utilizael envío de objetos en serie y el túnel HTTP 443 17.5 Cómo enviar datos mediante POST y procesar directamente los resultados (túnel HTTP) 450 17.6 Un subprograma que envía datos POST 453 17.7 Cómo omitir al servidor HTTP 459 CAPÍTULO 18 JDBC y la asociación de conexiones a bases de datos 460 18.1 Pasos básicos para utilizarjdbc 462 Cómo cargar el controlador 462 Cómo definir el URLde la conexión 463 Establecimiento de la conexión 464 Creación de una instrucción 465 Ejecuciónde una consulta 465 Procesamiento de los resultados 465 Cierre de la conexión 466 18.2 Ejemplo básico de jdbc 467 18.3 Algunas utilerías jdbc 473 18.4 Cómo aplicar las utilerías de la base de datos 482 18.5 Un visor de consultas interactivo 487 Código del visor de consultas 489 18.6 Instrucciones preparadas (consultas precompiladas) 497 18.7 Asociación de conexiones 50I 18.8 Asociación de conexiones: estudio de un caso 508 18.9 Cómo compartir asociaciones de conexiones 515 Cómo utilizar el contexto del servlet para compartir asociaciones de conexiones 5 I5 Cómo utilizar las clases únicas para compartir asociaciones de conexiones 5 16
APÉNDICE Referenciarápida de los servlets y jsp 518 A I Panoramade los servletsy lasjavaserverpages 5 19 Ventajas de los servlets 519 Ventajas de jsp 519 Software gratuito para tos servlets y jsp 5 19 Documentación 520 Compilación de los servlets: elementos CLASSPATH Directorios estándar de Tomcat 3.0 520 Directorios estándar de Tomcat 3.1 520 Directorios estándar de jswdk 1.0.1 520 Directorio estándar de JavaWeb Server 2.0 521 A2 Los primeros servlets 521 Servlet sencillo 521 Cómo instalar a los servlets Cómo invocar a los servlets Ciclo vital de los servlets 522 521 521 520 A3 Manejo de las peticiones del cliente: datos del formulario 523 Cómo leer parámetros 523 Servlet de ejemplo 523 Formulario de ejemplo 524 Cómo filtrar caracteres específicos de HTML 524 AA Manejo de las peticiones del cliente: encabezados de petición HTTP Métodos que leen encabezados de petición 524 Otra información de la petición 525 Encabezados de petición HTTP 1.1 comunes 525 AS Acceso a las variables estándar CGI 526 Facultades que no se trataron 526 Equivalenteen servlet de las variables CGI 526 A6 Generación de la respuesta del servidor: códigos de estado HTTP Formato de una respuesta HTTP 527 Métodos que establecen los códigos de estado 527 Categorías de los códigos de estado 527 Códigos de estado HTTP 1.1comunes 527. A7 Generación de la respuesta del servidor. encabezados de respuesta HTTP 528 524 527
Cómo establecer encabezados arbitrarios 528 Cómo establecer encabezados comunes 528 Encabezados de respuesta HTTP 1.1comunes Cómo generar imágenes GIF desde los servlets A8 Manejo de las'cookies 530 Usos típicos de las cookies Problemas con las cookies Uso general 530 Métodos de las cookies 530 A.9 Rastreo de sesiones 531 530 530 Cómo buscar información de sesiones: getvalue Cómo asociar información en una sesión: putvalue Métodos de HttpSession 532 Cifrado de los URLs 533 528 529 531 531 AIO Elementos de secuencias de comandos en JSP 533 Tipos de elementos de secuencias de comandos 533 Texto de plantilla 533 Variables predefinidas 533 AII AI2 Ladirectiva page de JSP:estructuración de los servlets generados Elatributo import 534 Elatributo contenttype 534 Ejemplo del uso de contenttype Ejemplo del uso de setcontenttype Elatributo isthreadsafe 535 Elatributo session 536 Elatributo buffer 536 Elatributo autoflush 536 Elatributo extends 536 Elatributo info 536 534 535 Elatributo errorpage 536 Elatributo iserrorpage 536 Elatributo language 537 SintaxisXML 537 Cómo incluir archivos y subprogramas en documentos JSP 537,Cómo incluir archivos al momento de traducir la página 537 Cómo incluir archivos al momento de hacer la petición 537 Subprogramas para el complemento de Java: caso sencillo 537 534
Atributos de jsp:plugin 537 Parámetros en HTML:jsp:param Texto alternativo 538 538 AI3 Uso de los javabeans con jsp 539 Necesidades básicas para que una clase sea un bean 539 Uso básico de los beans 539 Cómo asociar las propiedades con parámetros de entrada Cómo compartir los beans: el atributo scope de jsp:usebean Generación condicional de los beans 540 AI4 Creación de sus propias bibliotecas de etiquetas jsp 540 Laclase controladora de etiquetas 540 Elarchivo Descriptor de la Biblioteca de Etiquetas 541 Elarchivo jsp 541 Cómo asignar atributos a las etiquetas 541 Cómo incluir la estructura de la etiqueta 541 Cómo incluir opcionalmente la estructura de la etiqueta Cómo manejar la estructura de la etiqueta 542 Cómo incluir o manejar la estructura de la etiqueta en varias ocasiones 542 Cómo utilizar etiquetas anidadas 542 AIS Integración de los servlets y jsp 542 Idea principal 542 Sintaxispara el reenvío de peticiones 543 Reenvío a páginas HTMLnormales 543 539 540 542 Cómo ewblecer los beans compartidos de manera global 543 Cómo establecer los beans de sesión 543 Cómo interpretar los URLsrelativos en la página objetivo 543 Cómo obtener un RequestDispatcher por medios alternativos (sólo 2.2) 543 Cómo incluir contenido estático o dinámico 544 Cómo reenviar peticiones desde las páginasjsp 5.44 AI6 Uso de los formularios HTML 544 Elelemento FORM 544 Camposdete~o 544 Campos de contraseña 544 Áreas de texto 545 Botones de envío 545 Botones alternativos 545
Botones de restablecimiento 545 Botones de restablecimiento alternativos 545 Botones para secuencias de comandos 546 Botones alternativos para secuencias de comandos 546 Casillas de verificación 546 Botones de radio 546 Cuadros combinados 546 Controles para la transferencia de archivos 547 Mapas de imágenes en el servidor 547 Campos ocultos 547 Características de Internet Explorer 547 Al? Uso de los subprogramas como interfaces de los servlets 547 Cómo enviar datos con GET y mostrar la página resultante 547 Cómo enviar datos con GET y procesar directamente los resultados (túnel HTTP) 548 Cómo enviar datos en serie: el código del subprograma 549 Cómo enviar datos en serie: el código del servlet 549 Cómo enviar datos mediante POST y procesar directamente los resultados (túnel HTTP) 550 Cómo omitir al servidor HTTP 55I AI8 jdbc y la asociación de conexiones a bases de datos 552 Pasos básicos para utilizarjdbc 552 Utilerías para la base de datos 553 Instrucciones preparadas (consultas precompiladas) 553 Pasos para integrar la asociación de conexiones 554 índice 557