Professional Documents
Culture Documents
www.gamma.fm
Reservados todos los derechos. Ni la totalidad ni parte de este libro puede reproducirse o
transmitirse por ningn procedimiento electrnico o mecnico, incluyendo fotocopia,
grabacin magntica o cualquier almacenamiento de informacin y sistema de
reproduccin, sin permiso previo y por escrito de los titulares del Copyright.
Prefacio
En pocos aos, Internet ha invadido casi todos los aspectos de la vida. Podemos comunicarnos a travs de Internet de distintas formas (correo electrnico,
radio y televisin online, telefona IP). Podemos comprar diversos productos
en Internet (libros, discos, entradas de cine). Podemos conocer gente a travs
de Internet (chat, foros de discusin). Para que todo ello funcione, hacen falta
profesionales especializados en programacin en Internet.
En este libro se trata una pequea porcin de la programacin en Internet:
la programacin de aplicaciones web. Las aplicaciones web se encuadran dentro
de las arquitecturas cliente/servidor. En concreto, en este libro se estudia como
programar la parte cliente, los clientes web. Las tecnologas que se contemplan
son HTML y JavaScript. Existen otras tecnologas, como ActiveX o applets,
pero no estn estandarizadas como HTML y JavaScript.
Este libro se complementa con otro de prxima aparicin que tratar la
programacin de aplicaciones web desde el lado del servidor. En l se mostrarn
las tecnologas que se emplean para programar los servidores web: CGI, ASP,
JSP, etc.
Evidentemente, existen programas que permiten crear pginas HTML sin
tener ni idea de HTML. Pero igual que se puede conducir un coche sin tener
ni idea de mecnica o pilotar un avin sin tener ni idea de aerodinmica o de
motores a reaccin, conviene conocer lo que se tiene entre manos para poder
obtener el mximo partido. La programacin de aplicaciones web no consiste
slo en crear pginas web muy bonitas, con muchas imgenes y colores; hay
que validar la entrada del usuario, acceder a bases de datos, etc.
Este no es un libro sobre programacin bsica, donde se expliquen conceptos como variable, bucle de repeticin, expresin lgica o recursividad. Es necesario poseer un nivel mnimo de programacin para poder abordar los temas
que tratan sobre JavaScript. Sin embargo, cualquiera que haya programado en
iii
Prefacio
ndice general
Prefacio
ndice general
ndice de cuadros
ndice de guras
ndice de acrnimos
1. Arquitecturas cliente/servidor
iii
v
xi
xiii
xv
1.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . .
1.2. Separacin de funciones . . . . . . . . . . . . . . . . . .
1.3. Modelos de distribucin en aplicaciones cliente/servidor
1.3.1. Presentacin distribuida . . . . . . . . . . . . . .
1.3.2. Aplicacin distribuida . . . . . . . . . . . . . . .
1.3.3. Datos distribuidos . . . . . . . . . . . . . . . . .
1.4. Arquitecturas de dos y tres niveles . . . . . . . . . . . .
1.5. Descripcin de un sistema cliente/servidor . . . . . . . .
. . .
. . .
. . .
web
. . .
. . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
2
3
3
4
4
4
5
5
8
8
9
10
11
11
vi
ndice general
2.4.
2.3.2.
Intranet . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
2.3.3.
Extranet . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
Ventajas y desventajas . . . . . . . . . . . . . . . . . . . . . . .
13
3. HTML
15
3.1.
Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.2.
Evolucin de HTML
17
3.3.
. . . . . . . . . . . . . . . . . . . .
19
3.4.
21
3.5.
. . . . . . . . . . . . . . . . . . . . . . . .
22
3.5.1.
23
3.5.2.
. . . . . . . . . . . . . . . . .
25
3.6.
Metadatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
3.7.
Etiquetas HTML . . . . . . . . . . . . . . . . . . . . . . . . . .
28
3.8.
29
3.8.1.
Encabezados de secciones
. . . . . . . . . . . . . . . . .
30
3.8.2.
Formatos de caracteres . . . . . . . . . . . . . . . . . . .
32
3.8.3.
La etiqueta <FONT> . . . . . . . . . . . . . . . . . . .
32
3.8.4.
36
Listas
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
3.9.1.
Listas de denicin . . . . . . . . . . . . . . . . . . . . .
41
3.9.2.
Listas ordenadas
3.9.3.
Listas no ordenadas
3.9.
3.10. Colores
. . . . . . . . . . . . . . . . . . . . . .
42
. . . . . . . . . . . . . . . . . . . .
45
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
47
47
3.11. Enlaces
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
48
50
. . . . . . . . . . . . . . . . .
. . . . . . . . . .
51
3.12. Tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
. . . . . . . . . . . . . . . . . . . . . .
57
. . . . . . . . . . . . . . . . . . . .
58
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
60
. . . . . . . . . . .
61
3.14. Formularios . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
vii
ndice general
. . . . . . . . . . . . . . . .
63
67
. . . . . . . . . . . . . . . . . . . .
67
67
67
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
69
3.15. Marcos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
70
75
. . . . . . . . . . . . . . . .
76
. . . . . . . . . . . . . . . . . .
76
76
76
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . .
77
. . . . . . . . . . . . . . . . . . .
77
77
77
78
3.16.10.Los enlaces
78
. . . . . . . . . . . . . . . . . . . . . . . . .
4. Lenguajes de script
79
4.1.
Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
79
4.2.
. . . . . . . . . . . . .
80
4.3.
Para qu sirven . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
4.4.
81
5. JavaScript
5.1.
5.2.
87
Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
88
5.1.1.
Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . .
89
5.1.2.
. . . . . . .
90
5.1.3.
JavaScript y Java . . . . . . . . . . . . . . . . . . . . . .
90
5.1.4.
Versiones
91
5.1.5.
JavaScript y ECMA
. . . . . . . . . . . . . . . . . . . .
93
5.1.6.
JScript . . . . . . . . . . . . . . . . . . . . . . . . . . . .
95
5.1.7.
. . . . . . . . . .
95
El lenguaje
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
96
5.2.1.
Caractersticas bsicas . . . . . . . . . . . . . . . . . . .
96
5.2.2.
Comentarios . . . . . . . . . . . . . . . . . . . . . . . . .
98
viii
5.3.
5.4.
5.5.
ndice general
5.2.3.
Declaracin de variables . . . . . . . . . . . . . . . . . .
98
5.2.4.
5.2.5.
5.2.6.
Operadores
5.2.7.
. . . . . . . . . . . . . . . . . . 100
. . . . . . . . . . . . . . . . . . . . . . . . . 103
Sentencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
5.3.1.
Condicionales . . . . . . . . . . . . . . . . . . . . . . . . 105
5.3.2.
De repeticin . . . . . . . . . . . . . . . . . . . . . . . . 108
5.3.3.
Funciones
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
5.4.1.
5.4.2.
Objetos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
5.5.1.
Creacin de objetos
. . . . . . . . . . . . . . . . . . . . 121
5.5.2.
Mtodos de un objeto
5.5.3.
. . . . . . . . . . . . . . . . . . . 122
5.6.
Tratamiento de cadenas
5.7.
Operaciones matemticas
. . . . . . . . . . . . . . . . . . . . . 128
Validacin de formularios
. . . . . . . . . . . . . . . . . . . . . 132
5.8.
. . . . . . . . . . . . . . . . . . . . . . 123
5.8.1.
5.8.2.
5.8.3.
Validacin numrica
. . . . . . . . . . . . . . . . . . . . 138
145
6.1.
Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
6.2.
6.3.
. . . . . . . . . 146
6.2.1.
6.2.2.
6.2.3.
Objeto history
6.2.4.
6.2.5.
6.2.6.
. . . . . . . . . . . . . . . . . . . . . . . 157
173
. . . . . . . 175
ndice general
. . . . . . . . . . . . . . . . . . . . . . . . . 177
. . . . . . . . . . . . . . . . . . . 179
. . . . . . . . . . . . . . . . . . . . . . . . 186
. . . . . . . . . . . . . . . 187
. . . . . . . . . . . . . . . . . . 189
. . . . . . . . . . . . . . . . . . . 191
B. Colores en HTML
193
. . . . . . . . . . . . 193
194
201
. . . . . . . . . . . . . . . . . 204
Bibliografa
ndice alfabtico
. . . . . . . . . . . . . . 207
. . . . . . . . . . . . . . . . . . . . 211
217
219
ndice de cuadros
3.1.
3.2.
3.3.
3.4.
Versiones de HTML . . . . . . . . . . .
Caracteres con un signicado especial en
Caracteres especiales . . . . . . . . . . .
Diferencias entre GIF y JPEG . . . . . .
. . . . .
HTML .
. . . . .
. . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
18
26
26
59
5.1.
5.2.
5.3.
5.4.
5.5.
5.6.
5.7.
5.8.
xi
ndice de guras
1.1.
1.2.
1.3.
1.4.
Separacin de funciones
Presentacin distribuida
Aplicacin distribuida .
Datos distribuidos . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
4
4
5
3.1.
3.2.
3.3.
3.4.
3.5.
3.6.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
xiii
25
31
33
35
37
39
40
42
44
46
49
50
52
52
54
54
56
59
62
66
xiv
ndice de guras
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
71
. . . . . . . . . . . . . . . . .
75
85
69
5.1.
5.2.
5.3.
5.4.
Validacin numrica
. . . . . . . . . . . . . . . . . . . . . . . . 143
6.1.
6.2.
. . . . . . . . . 147
6.3.
6.4.
6.5.
6.6.
. . . . . . . . . . . . . . . . . 162
. . . . . . . 195
. . . . . . . . . . . . . . . . . . 198
. . . . . . . . . . . . 205
. . . . . . . . . . . . 210
. . . . . . . . . . . . . . . . . . . . . . 215
ndice de acrnimos
ASP Active Server Pages
xvi
ndice de acrnimos
Fichero que almacena funciones ejecutables o datos que pueden ser usa-
para cambiar dinmicamente el contenido de una pgina web. Desgraciadamente, los dos navegadores mayoritarios poseen distintos modelos de
objetos.
Compuserve.
In-
HTTP
RFC 2616 de junio de 1999). Una de las principales ventajas de esta
xvii
ndice de acrnimos
Java.
Microsoft. Se programan
Microsoft
Internet Explorer como Netscape Communicator aceptan este formato.
xviii
ndice de acrnimos
Notacin de los colores en la que cada color se representa como una com-
componen un documento. Se emplea para manejar grandes documentos que sufren constantes revisiones y se imprimen en distintos formato.
Desarrollado y estandarizado por
ISO en 1986.
WWW). Su protocolo de
HTTP, su lenguaje de creacin de documentos HTML
y sus sistema de direccionamiento de los recursos URL. Los navegadores
HTML escrito segn las normas que marca XML. Por tanto, se trata
XML y no tienen que confundirse entre
ndice de acrnimos
xix
Captulo 1
Arquitecturas cliente/servidor
Las aplicaciones web son un tipo especial de aplicaciones cliente/servidor. Antes de aprender a programar aplicaciones web conviene conocer las caractersticas
bsicas de las arquitecturas cliente/servidor.
ndice General
1.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . .
1.1.
Introduccin
1.2.
Separacin de funciones
1.2.
Separacin de funciones
Lgica de negocio (o aplicacin). Los ujos de trabajo pueden cambiarse segn las necesidades existentes de un procesador a otro.
Lgica de datos.
Si un sistema distribuido se disea correctamente, los tres niveles anteriores pueden distribuirse y redistribuirse independientemente sin afectar al
funcionamiento de la aplicacin.
1.3.
Segn como se distribuyan las tres funciones bsicas de una aplicacin (presentacin, negocio y datos) entre el cliente y el servidor, podemos contemplar
1.4.
1.4.
1.5.
1.
2.
4.
Normalmente la parte cliente se implementa haciendo uso de una interfaz grca de usuario, que permite la introduccin de datos a travs de
teclado, ratn, lpiz ptico, etc.