Curso de
Curso de
Java Server Pages
Java Server Pages
Nivel básico
Nivel básico
Manual del alumno
Manual del alumno
<JSP>
<JSP>
e
e
d
d
r
r
i
i
c
c
S
S
i
i
m
m
o
o
n
n
–
–
T
T
e
e
l
l
:
:
2
2
2
2
6
6
8
8
0
0
9
9
7
7
4
4
–
–
C
C
e
e
l
l
:
:
8
8
8
8
8
8
8
8
2
2
3
3
8
8
7
7
–
–
E
E
m
m
a
a
i
i
l
l
:
:
c
c
e
e
d
d
r
r
i
i
c
c
@
@
s
s
o
o
l
l
u
u
c
c
i
i
o
o
n
n
j
j
a
a
v
v
a
a
.
.
c
c
o
o
m
m
–
–
W
W
S
S
o
o
l
l
u
u
c
c
i
i
o
o
n
n
J
J
a
a
v
v
a
a
.
.
c
c
o
o
m
m
ÍÍ
ndice
ndice
Índice...2
Índice...2
1Introducción al curso...5
1Introducción al curso...5
1.1Objetivo de este curso...5
1.1Objetivo de este curso...5
1.2Manual 1.2Manual del del alumno..alumno...5...5
1.3Ejercicio 1.3Ejercicios s prácticos....prácticos...5...5
1.4Requisi 1.4Requisitos tos para para atender atender a a este este curso...curso...5...5
1.5Soporte después del curso...5
1.5Soporte después del curso...5
2Introducción al JSP...6
2Introducción al JSP...6
2.1¿Que es el JSP?...6
2.1¿Que es el JSP?...6
2.2¿Por 2.2¿Por qué qué utilizaríamutilizaríamos os el el JSP?...JSP?...6...6
2.3Navegadores web...6
2.3Navegadores web...6
3Arquitectura
J2EE...7
3Arquitectura
J2EE...7
3.1Introducción a la Tecnología y Conceptos J2EE...7
3.1Introducción a la Tecnología y Conceptos J2EE...7
3.2Componentes J2EE...7
3.2Componentes J2EE...7
3.3La 3.3La ArquitectArquitectura ura Java Java Naming Naming Directory Directory Interface Interface (JNDI)...(JNDI)...8...8
3.3.1Ejemplo de JNDI...8
3.3.1Ejemplo de JNDI...8
4El protocolo HTTP...9
4El protocolo HTTP...9
4.1Modelo 4.1Modelo de de consulta consulta / / respuesta respuesta HTTP....HTTP...9...9
4.2Detalles 4.2Detalles de de una una consulta..consulta...9...9
4.3Detalles de respuesta...10
4.3Detalles de respuesta...10
4.4Parámetro 4.4Parámetros s de de consulta..consulta...11...11
4.5Métodos de consulta...11
4.5Métodos de consulta...11
5Instalación del servidor JSP...13
5Instalación del servidor JSP...13
5.1Jakarta 5.1Jakarta Tomcat...Tomcat...13...13
5.2Instalación...13
5.2Instalación...13
5.3Configuración de Eclipse...13
5.3Configuración de Eclipse...13
5.4Verificació 5.4Verificación n de de la la instalacióninstalación...14...14
6Uso
6Uso de
de herramienta
herramienta y
y entorno...
entorno...
...
...
...
...
...
...
...
...
...
...
...
...
...15
...15
6.1Eclipse 6.1Eclipse...15...15
6.1.1Creació 6.1.1Creación n del del servidor...servidor...15...15
6.1.2Creación de un nuevo proyecto web...16
6.1.2Creación de un nuevo proyecto web...16
6.1.3Creación 6.1.3Creación de de la la página página de de índice....índice...17...17
7Utilización
7Utilización de
de los
los scriptlets...
scriptlets...
...
...
...
...
...
...
...
...
...
...
...
...
...
...20
...20
7.1¿Qué son los scriptlets?...20
7.1¿Qué son los scriptlets?...20
7.2Los 7.2Los scriptlet scriptlet de de declaración declaración de de variables...variables...20...20
7.3Los scriptlet de utilización de variables...20
7.3Los scriptlet de utilización de variables...20
7.4Los scriptlets de código...20
7.4Los scriptlets de código...20
©
7.5Agregar comentarios...21
7.5Agregar comentarios...21
8Utilización de directivas...22
8Utilización de directivas...22
8.1Directiva 8.1Directiva de de página....página...22...22
8.1.1Lista de parámetros para directiva de Página...22
8.1.1Lista de parámetros para directiva de Página...22
8.2Directiva de inclusión...23
8.2Directiva de inclusión...23
8.3Directiva taglib...23
8.3Directiva taglib...23
9Utilización de variables de sesión...24
9Utilización de variables de sesión...24
9.1Declaración 9.1Declaración de de variable variable de de sesión...sesión...24...24
9.2Recuper 9.2Recuperar ar el el valor valor de de un un variable variable de de sesión...sesión...24...24
9.3Invalidar una sesión...24
9.3Invalidar una sesión...24
9.4Otros métodos...24 9.4Otros métodos...24
10Objetos
implícitos...25
10Objetos
implícitos...25
10.1request...25 10.1request...25 10.2response...25 10.2response...25 10.3session...25 10.3session...25 10.4application...25 10.4application...25 10.5out...25 10.5out...25 10.6exception 10.6exception...25...2511Los
formularios...26
11Los
formularios...26
11.1Creación 11.1Creación del del formulario..formulario...26...2611.2Tratamie 11.2Tratamiento nto del del formulario...formulario...26...26
12Elementos
12Elementos de
de acciones
acciones estándar...
estándar...
...
...
...
...
...
...
...
...
...
...
...
...
...29
...29
12.1<jsp:forward />...29 12.1<jsp:forward />...29 12.2<jsp:include />...29 12.2<jsp:include />...29 12.3<jsp:par 12.3<jsp:param>...am>...29...29 12.4<jsp:plugin>...29 12.4<jsp:plugin>...29 12.5<jsp:params>...30 12.5<jsp:params>...30 12.6<jsp:fallback>...30 12.6<jsp:fallback>...30 12.7<jsp:u 12.7<jsp:useBean>....seBean>...30...30 12.8<jsp:get 12.8<jsp:getProperty>..Property>...30...30 12.9<jsp:setProperty>...30 12.9<jsp:setProperty>...30
14.2.2<jsp:getProperty>...34 14.2.2<jsp:getProperty>...34 14.2.3<jsp:set 14.2.3<jsp:setProperty>...Property>...35...35 14.3Scope de un JavaBean...35 14.3Scope de un JavaBean...35
15Utilización
15Utilización de
de servlets...
servlets...
...
...
...
...
...
...
...
...
...
...
...
...
...
...36
...36
15.1¿Qué 15.1¿Qué es es un un servlet?...servlet?...36...36
15.2¿Para 15.2¿Para que que sirve sirve un un servlet?...servlet?...36...36
15.3Anatomía de un servlet...36
15.3Anatomía de un servlet...36
15.4Ciclo de vida de un servlet...37
15.4Ciclo de vida de un servlet...37
15.5Creación 15.5Creación de de un un servlet servlet simple....simple...37...37
15.6Uso 15.6Uso de de servlet servlet para para mostrar mostrar imágenes imágenes o o archivos archivos binarios....binarios...38...38
16El modelo MVC...43
16El modelo MVC...43
16.1¿Qué 16.1¿Qué es es el el modelo modelo MVC?...MVC?...43...43
16.2MVC 16.2MVC con con JSP JSP y y JavaBeans...JavaBeans...43...43
16.3MVC con JSP, JavaBeans y servlet...43
16.3MVC con JSP, JavaBeans y servlet...43
16.4MVC 16.4MVC con JSP, con JSP, servlet, servlet, JavaBeans JavaBeans y y EJB...EJB...4...444
17Ejercicios...45
17Ejercicios...45
18
18 Esquema
Esquema de
de la
la base
base de
de datos...
datos...
...
...
...
...
...
...
...
...
...
...
...
...46
...46
©
1 Introducci
1 Introducci
ó
ó
n al curso
n al curso
1.1 Objetivo de este curso
1.1 Objetivo de este curso
En este curso vamos a aprender el lenguaje JSP que nos permitir
En este curso vamos a aprender el lenguaje JSP que nos permitiráá crear pcrear pááginas web dinginas web dináámicas.micas.
1.2 Manual del alumno
1.2 Manual del alumno
Este manual del alumno es una ayuda para el alumno, para tenga un recuerdo del curso. Este manual contiene un Este manual del alumno es una ayuda para el alumno, para tenga un recuerdo del curso. Este manual contiene un resumen de las materias que se van a estudiar durante el curso, pero el alumno deber
resumen de las materias que se van a estudiar durante el curso, pero el alumno deberíía de a de tomar tomar notas pernotas personalessonales
para completas este manual. para completas este manual.
1.3 Ejercicios pr
1.3 Ejercicios pr
á
á
cticos
cticos
Para captar mejor la teor
Para captar mejor la teoríía, se hara, se haráán muchos ejercicios con los alumnos, para probar la teorn muchos ejercicios con los alumnos, para probar la teoríía y verificar laa y verificar la
integraci
integracióón de la materia.n de la materia.
Tambi
Tambiéén, el alumno podrn, el alumno podráácopiar sus ccopiar sus cóódigos en un disquete al fin del curso para llevarse, con fin de seguir la prdigos en un disquete al fin del curso para llevarse, con fin de seguir la práácticactica
en su hogar. en su hogar.
1.4 Requisitos para atender a este curso
1.4 Requisitos para atender a este curso
Una iniciaci
Una iniciacióón al lenguaje Java es requerida para seguir este curso. La creacin al lenguaje Java es requerida para seguir este curso. La creacióón y el manejo de objetos Java estn y el manejo de objetos Java estáá
considerada c
considerada cóómo asimilado antes de empezar este curso.mo asimilado antes de empezar este curso.
El conocimiento del lenguaje HTML y JavaScript son tambi
El conocimiento del lenguaje HTML y JavaScript son tambiéén requeridos para poder atender a este curso.n requeridos para poder atender a este curso.
Si el alumno tiene dificultades en un u otro capitulo, el debe sentirse libre de pedir explicaciones adicionales al Si el alumno tiene dificultades en un u otro capitulo, el debe sentirse libre de pedir explicaciones adicionales al profesor.
profesor.
Pero si aparece que el alumno no posee los requisitos m
Pero si aparece que el alumno no posee los requisitos míínimos para este curso, por respeto a los otros alumnos que yanimos para este curso, por respeto a los otros alumnos que ya
poseen esta materia, el alumno podr
poseen esta materia, el alumno podríía ser traslado para otro curso en el futuro, cuando el cumplira ser traslado para otro curso en el futuro, cuando el cumpliráá con los requisitos.con los requisitos.
1.5 Soporte despu
1.5 Soporte despu
é
é
s del curso
s del curso
Si tienes preguntas sobre la materia del curso en tus ejercicios pr
Si tienes preguntas sobre la materia del curso en tus ejercicios práácticos, puedes escribir tuscticos, puedes escribir tus
preguntas a [email protected]. preguntas a [email protected].
2 Introducci
2 Introducci
ó
ó
n al JSP
n al JSP
2.1 ¿Que es el JSP?
2.1 ¿Que es el JSP?
El JSP es una extensi
El JSP es una extensióón del lenguaje de programacin del lenguaje de programacióón Java, utilizado para crear pn Java, utilizado para crear pááginas web dinginas web dináámicas.micas.
El JSP necesita que un servidor web con capacidad JSP sea instalado y funcionando para poder ejecutar las p
El JSP necesita que un servidor web con capacidad JSP sea instalado y funcionando para poder ejecutar las pááginasginas
JSP. JSP.
El servidor va a compilar el c
El servidor va a compilar el cóódigo JSP y tratarlo en tiempo real, con la informacidigo JSP y tratarlo en tiempo real, con la informacióón viniendo n viniendo del cliente del cliente web, web, parapara
regresarle una pagina web adaptada, en tiempo real. regresarle una pagina web adaptada, en tiempo real. El servidor tiene tambi
El servidor tiene tambiéén capacidad de seguir el camino de un usuario, asn capacidad de seguir el camino de un usuario, asííccóómo de identificarlo.mo de identificarlo.
2.2 ¿Por qu
2.2 ¿Por qu
é
é
utilizar
utilizar
í
í
amos el JSP?
amos el JSP?
El JSP se necesita cuando la pagina web tiene que adaptarse en funci
El JSP se necesita cuando la pagina web tiene que adaptarse en funcióón del usuario, y cuando se necesita guardarn del usuario, y cuando se necesita guardar
valores de sesi
valores de sesióón del usuario.n del usuario.
Existen otros lenguaje que permiten eso, como el ASP o el PHP, pero el JSP tiene como aventaje que esta basado en el Existen otros lenguaje que permiten eso, como el ASP o el PHP, pero el JSP tiene como aventaje que esta basado en el lenguaje Java, y le tiene la herencia de su poder y de su portabilidad. Los servidores JSP existen para varios sistemas lenguaje Java, y le tiene la herencia de su poder y de su portabilidad. Los servidores JSP existen para varios sistemas operativos, entre otros Windows, Linux, y Unix.
operativos, entre otros Windows, Linux, y Unix. El JSP est
El JSP estáátambitambiéén utilizado en paquetes empresariales muy grande como el servidor de IBM Websphere, o eln utilizado en paquetes empresariales muy grande como el servidor de IBM Websphere, o el
servidor de aplicaci
servidor de aplicacióón de Oracle.n de Oracle.
El JSP es un est
El JSP es un estáándar de programacindar de programacióón Internet.n Internet.
2.3 Navegadores web
2.3 Navegadores web
Si los navegadores prueban todos de poder aplicar al m
Si los navegadores prueban todos de poder aplicar al mááximo las recomendaciones del HTML 4.0 existen ciertasximo las recomendaciones del HTML 4.0 existen ciertas
opciones, a dentro
opciones, a dentro o afuera del o afuera del HML estHML estáándar que sndar que sóólo ciertos navegadores soportan. Tambilo ciertos navegadores soportan. Tambiéén, un mismo cn, un mismo cóódigo nodigo no
aparecer
apareceráá siempre igual en un navegador e en otro.siempre igual en un navegador e en otro.
El JSP no est
El JSP no estááligado directamente con los navegadores, pero el HTML que generaran si. Asligado directamente con los navegadores, pero el HTML que generaran si. Asííque un cque un cóódigo generadodigo generado
podr
podríía funcionar bien en un navegador, y dar un resultado diferente en otro. Veremos diferente ejemplos en estea funcionar bien en un navegador, y dar un resultado diferente en otro. Veremos diferente ejemplos en este
curso. curso.
En este curso, utilizaremos dos navegadores diferentes: el Internet Explorer de Microsoft, y el Firefox de Mozilla. En este curso, utilizaremos dos navegadores diferentes: el Internet Explorer de Microsoft, y el Firefox de Mozilla.
©
3 Arquitectura J2EE
3 Arquitectura J2EE
3.1 Introducci
3.1 Introducci
ó
ó
n a la Tecnolog
n a la Tecnolog
í
í
a y Conceptos J2EE
a y Conceptos J2EE
Java 2 Enterprise Edition (J2EE) es una arquitectura multicapa para implementar aplicaciones de tipo empresarial y Java 2 Enterprise Edition (J2EE) es una arquitectura multicapa para implementar aplicaciones de tipo empresarial y aplicaciones basadas en la Web. Esta tecnolog
aplicaciones basadas en la Web. Esta tecnologíía soporta una gran variedad de tipos de aplicaciones desde aplicacionesa soporta una gran variedad de tipos de aplicaciones desde aplicaciones
Web de gran escala a peque
Web de gran escala a pequeññas aplicaciones cliente-servidor. El objetivo principal de la tecnologas aplicaciones cliente-servidor. El objetivo principal de la tecnologíía J2EE es crear una J2EE es crear un
simple modelo de desarrollo para aplicaciones empresariales utilizando componentes basados en el modelo de simple modelo de desarrollo para aplicaciones empresariales utilizando componentes basados en el modelo de aplicaci
aplicacióón. En este modelo dichos componentes utilizan servicios proporcionados por el contenedor, que de otro modon. En este modelo dichos componentes utilizan servicios proporcionados por el contenedor, que de otro modo
tendr
tendríían que estar incorporados en el can que estar incorporados en el cóódigo de la aplicacidigo de la aplicacióón. Observa que esto podrn. Observa que esto podríía no ser lo ideal para todos losa no ser lo ideal para todos los
escenarios: por ejemplo, una peque
escenarios: por ejemplo, una pequeñña aplicacia aplicacióón se cubrirn se cubriríía mejor utilizando una solucia mejor utilizando una solucióón de la tecnologn de la tecnologíía Java dea Java de
peso ligero (por ejemplo Servlets, JSPs, etc.). peso ligero (por ejemplo Servlets, JSPs, etc.).
3.2 Componentes J2EE
3.2 Componentes J2EE
Las aplicaciones J2EE est
Las aplicaciones J2EE estáán compuestas de diferentes componentes. Un componente J2EE es una unidad de softwaren compuestas de diferentes componentes. Un componente J2EE es una unidad de software
funcional auto-contenido que se ensambla dentro de una aplicaci
funcional auto-contenido que se ensambla dentro de una aplicacióón J2EE con sus clases de ayuda y ficheros y que sen J2EE con sus clases de ayuda y ficheros y que se
comunica con otros componentes de la aplicaci
comunica con otros componentes de la aplicacióón. La especificiacin. La especificiacióón J2EE define los siguientes componentes J2EE:n J2EE define los siguientes componentes J2EE:
1
1. . LLaass Aplicaciones Clientes Aplicaciones Clientes y losy los Applets Applets son componentes que se ejecutan en el lado del cliente.son componentes que se ejecutan en el lado del cliente. 2.
2. Los Los comcomponponententeses Java ServletJava Servlet la tecnologla tecnologííaa JavaServer PagesJavaServer Pages son componentes Web que se ejecutanson componentes Web que se ejecutan
en el lado del servidor. en el lado del servidor. 3
3. . LLooss Enterprise JavaBeansEnterprise JavaBeans (beans enterprise) son componentes de negocio que se ejecutan en el servidor(beans enterprise) son componentes de negocio que se ejecutan en el servidor de aplicacion.
de aplicacion.
Todos esos componentes se ensamblan en una aplicaci
Todos esos componentes se ensamblan en una aplicacióón J2EE, se verifica que estn J2EE, se verifica que estáán bien formados y que cumplen lan bien formados y que cumplen la
especificaci
especificacióón J2EE, y se despliegan en el entorno de produccin J2EE, y se despliegan en el entorno de produccióón, donde se ejecutan y son controlados por el servidorn, donde se ejecutan y son controlados por el servidor
de aplicaciones J2EE. de aplicaciones J2EE.
3.3 La Arquitectura Java Naming Directory Interface (JNDI)
3.3 La Arquitectura Java Naming Directory Interface (JNDI)
J2EE utiliza el API JNDI para acceder gen
J2EE utiliza el API JNDI para acceder genééricamente a servicios de nombrado y directorio utilizando la tecnologricamente a servicios de nombrado y directorio utilizando la tecnologííaa
Java. El API JNDI reside entre la aplicaci
Java. El API JNDI reside entre la aplicacióón y el servicio de nombres y hace que el servicio de nombres subyacente sean y el servicio de nombres y hace que el servicio de nombres subyacente sea
transparente para los componentes de la aplicaci transparente para los componentes de la aplicacióón:n:
Un cliente puede buscar referencias a componentes EJB u otros recursos en un servicio de nombres como el Un cliente puede buscar referencias a componentes EJB u otros recursos en un servicio de nombres como el mencionado arriba. El c
mencionado arriba. El cóódigo del cliente no se modifica, sin importar el servicio de nombres que se estdigo del cliente no se modifica, sin importar el servicio de nombres que se estééutilizando o enutilizando o en
qu
quéétecnologtecnologíía esta estéébasado, y esto no crea ninguna diferencbasado, y esto no crea ninguna diferencíía en el modo en que los clientes localizan los objetosa en el modo en que los clientes localizan los objetos
remotos mediante el API JNDI. remotos mediante el API JNDI. Para que una aplicaci
Para que una aplicacióón pueda interactuar con un servicio de nombre, este debe conocer las propiedades del servicion pueda interactuar con un servicio de nombre, este debe conocer las propiedades del servicio
JNDI al cual el quiere conectars
JNDI al cual el quiere conectarse. e. Estas propiedades son entre otras el tipo de Estas propiedades son entre otras el tipo de servicio JNDI (facory), servicio JNDI (facory), el domicilio IP yel domicilio IP y el Puerto del servicio.
el Puerto del servicio. 3.3.1
3.3.1
Ejemplo de JNDI
Ejemplo de JNDI
......
DataSource ds=null; DataSource ds=null;
InitialContext ctx = new InitialContext(); InitialContext ctx = new InitialContext();
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/"+datasourceName); ds = (DataSource) ctx.lookup("java:comp/env/jdbc/"+datasourceName); con = ds.getConnection(); con = ds.getConnection(); ... ... ©
4 El protocolo HTTP
4 El protocolo HTTP
El protocolo HTTP (HyperText Transport Protocol) es un protocolo que define en detalle c
El protocolo HTTP (HyperText Transport Protocol) es un protocolo que define en detalle cóómo un cliente y un servidormo un cliente y un servidor
deben comunicar entre ellos. El modelo de comunicaci
deben comunicar entre ellos. El modelo de comunicacióón HTTP es a la base del web. El protocolo se aplica a cualquiern HTTP es a la base del web. El protocolo se aplica a cualquier
servidor y cliente web. Vamos a examinar los detalles m
servidor y cliente web. Vamos a examinar los detalles máás importante del protocolo HTTP.s importante del protocolo HTTP.
4.1 Modelo de consulta / respuesta HTTP
4.1 Modelo de consulta / respuesta HTTP
El HTTP y los protocolos extendidos basados sobre el utilizan un modelo de comunicaci
El HTTP y los protocolos extendidos basados sobre el utilizan un modelo de comunicacióón simple, pero poderoso.n simple, pero poderoso.
De manera t
De manera tíípica, un cliente envpica, un cliente envíía una consulta para un recurso a un servidor, y el servidor contesta una respuestaa una consulta para un recurso a un servidor, y el servidor contesta una respuesta
que corresponde al recurso preguntado (o contesta con un mensaje de error). El recurso puede ser una p
que corresponde al recurso preguntado (o contesta con un mensaje de error). El recurso puede ser una páágina HTML,gina HTML,
o una aplicaci
o una aplicacióón que contesta con un contenido dinn que contesta con un contenido dináámico.mico.
Este modelo simple implica tres cosas que Usted tiene que ser conciente: Este modelo simple implica tres cosas que Usted tiene que ser conciente:
1.
1. El protocolo El protocolo HTTP es HTTP es un protocolo un protocolo sin estado. sin estado. Es decir que Es decir que el servidor nel servidor no guarda o guarda ningningúún informacin informacióón acercan acerca
del cliente depuse de haberle contestado, y por eso no puede reconocer que varias consultas de un mismo del cliente depuse de haberle contestado, y por eso no puede reconocer que varias consultas de un mismo cliente pueden ser relacionadas.
cliente pueden ser relacionadas. 2.
2. La La apapliclicacaciióón web no puede entregar una respuesta inmediato, como en aplicaciones locales. La velocidadn web no puede entregar una respuesta inmediato, como en aplicaciones locales. La velocidad
depende del ancho de banda disponible y de la carga del servidor. depende del ancho de banda disponible y de la carga del servidor. 3.
3. No hay No hay nada en enada en el protocolo ql protocolo que indica al ue indica al servidor como servidor como la consulta la consulta le ha llegado, le ha llegado, asasííque el servidor no puedeque el servidor no puede
distinguir diferente m
distinguir diferente méétodos de consulta. Por ejemplo, en servidor no puede distinguir una consulta generadatodos de consulta. Por ejemplo, en servidor no puede distinguir una consulta generada
por un clic en un enlace del uso del bot
por un clic en un enlace del uso del botóón 'atrn 'atráás' del navegador. Tambis' del navegador. Tambiéén, como el HTTP es sin estado, no sen, como el HTTP es sin estado, no se
puede a dentro del HTTP llamar a la p
puede a dentro del HTTP llamar a la páágina anterior.gina anterior.
4.2 Detalles de una consulta
4.2 Detalles de una consulta
Existen dos m
El
El ttíítulo HOST dice al servidor el nombre (hostname) utilizado en el URL. Un servidor puede tener varios nombres, ytulo HOST dice al servidor el nombre (hostname) utilizado en el URL. Un servidor puede tener varios nombres, y
este informaci
este informacióón permite distinguir mn permite distinguir múúltiple servidores virtuales utilizando un mismo proceso web.ltiple servidores virtuales utilizando un mismo proceso web.
El
El ttíítulotuloUser-AgentUser-Agent contiene informacicontiene informacióón sobre el tipo de navegador utilizado para hacer la consulta. El servidor pueden sobre el tipo de navegador utilizado para hacer la consulta. El servidor puede
utilizar este informaci
utilizar este informacióón para generar respuestas diferentes dependiendo del navegador (IE, Netscape, WAP, PDA,...).n para generar respuestas diferentes dependiendo del navegador (IE, Netscape, WAP, PDA,...).
Los t
Los tíítulostulosAcceptAcceptproveen informaciproveen informacióón sobre el idioma y el formato de archivo que el navegador acepta.n sobre el idioma y el formato de archivo que el navegador acepta.
4.3 Detalles de respuesta
4.3 Detalles de respuesta
El mensaje de la respuesta parece al de la consulta. El contiene tres partes: una l
El mensaje de la respuesta parece al de la consulta. El contiene tres partes: una líínea de estado, unos tnea de estado, unos tíítulos detulos de
respuesta, y el cuerpo de la respuesta. respuesta, y el cuerpo de la respuesta. Ejemplo de respuesta:
Ejemplo de respuesta: HTTP/1.0 200 OK
HTTP/1.0 200 OK
Last-Modified: Mon, 19 Dec 2004 20:21:42 GMT Last-Modified: Mon, 19 Dec 2004 20:21:42 GMT Date: Tue, 12 Jul 2005 13:12:10 GMT
Date: Tue, 12 Jul 2005 13:12:10 GMT Status: 200
Status: 200
Content-Type: text/html Content-Type: text/html
Servlet-Engine: Tomcat Web Server/3.2 Servlet-Engine: Tomcat Web Server/3.2 Content-Length: 59 Content-Length: 59 <html> <html> <body> <body> <h1>Hello World!</h1> <h1>Hello World!</h1> </body> </body> </html> </html> La
La llíínea de estado empieza con el nombre del protocolo, seguido por el cnea de estado empieza con el nombre del protocolo, seguido por el cóódigo de resultado y una breva descripcidigo de resultado y una breva descripcióón deln del
ccóódigo de resultado. Aqudigo de resultado. Aquíí el el ccóódigo de resultado es 200, que significa que salidigo de resultado es 200, que significa que salióóconconééxito.xito.
El mensaje de respuesta tiene t
El mensaje de respuesta tiene tíítulos, como el de consulta. En este ejemplo:tulos, como el de consulta. En este ejemplo:
El
El ttíítulotuloLast-ModifiedLast-Modified da la fecha y hora de cuando el recurso fue modificado porda la fecha y hora de cuando el recurso fue modificado por úúltima vez. El cliente puede utilizarltima vez. El cliente puede utilizar
esta informaci
esta informacióón para marcar la pn para marcar la páágina el su cachgina el su cachéé, y pedir en el futuro solamente las que fueron modificadas., y pedir en el futuro solamente las que fueron modificadas.
El
El ttíítulotuloContent-TypeContent-Type dice al navegador que tipo de datos contiene el cuerpo de la respuesta.dice al navegador que tipo de datos contiene el cuerpo de la respuesta.
El
El ttíítulotuloContent-LengthContent-Length dice al navegador el tamadice al navegador el tamañño del cuerpo de la respuesta.o del cuerpo de la respuesta.
Una l
Una líínea vacnea vacíía separa los ta separa los tíítulos del cuerpo de la respuesta. El cuerpo de la respuesta contiene el ctulos del cuerpo de la respuesta. El cuerpo de la respuesta contiene el cóódigo que serdigo que seráá
ense
enseññado en el navegador. Aquado en el navegador. Aquííuna simple puna simple páágina HTML.gina HTML.
El cuerpo puede contener p
El cuerpo puede contener pááginas HTML mginas HTML máás complicadas, u otro tipo de contenido (imagen, sonido, archivos complicadas, u otro tipo de contenido (imagen, sonido, archivo
comprimido,...).
comprimido,...). El cuerpo El cuerpo puede tambipuede tambiéén contener cn contener cóódigo que va generar otras consultas al servidor, como ladigo que va generar otras consultas al servidor, como la
inserci
insercióón de una imagen.n de una imagen.
©
Interacci
Interaccióón entre un cliente y un servidor webn entre un cliente y un servidor web
4.4 Par
4.4 Par
á
á
metros de consulta
metros de consulta
Se pueden pasar par
Se pueden pasar paráámetros de consulta a dentro del URL. Por eso, despumetros de consulta a dentro del URL. Por eso, despuéés del nombre de la ps del nombre de la páágina, hay quegina, hay que
mencionar un punto de pregunta '?' y uno a varios par
mencionar un punto de pregunta '?' y uno a varios paráámetros deparados por '&', con el nombre del parmetros deparados por '&', con el nombre del paráámetro, elmetro, el
signo '=', y el valor del par
signo '=', y el valor del paráámetro.metro.
Veremos ejemplos utilizando los formularios. Veremos ejemplos utilizando los formularios.
4.5 M
4.5 M
é
é
todos de consulta
todos de consulta
Ya hemos visto el uso del m
Ya hemos visto el uso del méétodo GET. Tambitodo GET. Tambiéén existe el mn existe el méétodo POST. La diferencia entre los dos es que el mtodo POST. La diferencia entre los dos es que el méétodotodo
GET pasa los par
GET pasa los paráámetros a dentro del URL, asmetros a dentro del URL, asííque se puede guardar f que se puede guardar f áácilmente en su lista de marcadores. Tambicilmente en su lista de marcadores. Tambiéén,n,
en navegador sabe que este m
en navegador sabe que este méétodo no puede datodo no puede daññar el servidor, asar el servidor, asííacepta de someter la consulta nuevamenteacepta de someter la consulta nuevamente
(refresca) sin alerta. (refresca) sin alerta. El
El mméétodo POST, en vez de pasar los partodo POST, en vez de pasar los paráámetros en el URL, les pasa a dentro del cuerpo de la consulta. Eso permitemetros en el URL, les pasa a dentro del cuerpo de la consulta. Eso permite
enviar consulta de tama
enviar consulta de tamañño o mmáás grande que 2000 caracteres, y sin que los pars grande que 2000 caracteres, y sin que los paráámetros aparecen en el URL.metros aparecen en el URL.
Como los par
Como los paráámetros estmetros estáán guardados a dentro del cuerpo de la consulta, la consulta no puede ser guardada tann guardados a dentro del cuerpo de la consulta, la consulta no puede ser guardada tan
f
f áácilmente en los marcadores, porque ademcilmente en los marcadores, porque ademáás del URL, debers del URL, deberááguardar el cuerpo de la consulta.guardar el cuerpo de la consulta.
Tambi
Tambiéén, cuando se proba de enviar de nuevo una encuesto POST (refresh) el navegador genera una alerto porquen, cuando se proba de enviar de nuevo una encuesto POST (refresh) el navegador genera una alerto porque
este acci
Ejemplo de formulario: Ejemplo de formulario:
<form action="/prueba.jsp" method="POST"> <form action="/prueba.jsp" method="POST"> Cuidad: <input name="cuidad" type="text"> Cuidad: <input name="cuidad" type="text"> Pais: <input name="pais" type="text"> Pais: <input name="pais" type="text"> <p> <p> <input type="SUBMIT"> <input type="SUBMIT"> </form> </form>
Ejemplo de consulta POST generada por el formulario arriba: Ejemplo de consulta POST generada por el formulario arriba: POST / prueba.jsp HTTP/1.0
POST / prueba.jsp HTTP/1.0 Host: www.businesssoft.com.ni Host: www.businesssoft.com.ni
User-Agent : Mozilla/4.5 [en] (WinNT; I) User-Agent : Mozilla/4.5 [en] (WinNT; I)
Accept: image/gif, image/jpeg, image/pjpeg, image/png, */* Accept: image/gif, image/jpeg, image/pjpeg, image/png, */* Accept-language : en Accept-language : en Accept-charset : iso-8859-1,*,utf-8 Accept-charset : iso-8859-1,*,utf-8 cuidad=Managua&pais=Nicaragua cuidad=Managua&pais=Nicaragua Ejemplo de Socket que se cone
Ejemplo de Socket que se conecta al servidor Web cta al servidor Web local (Tomcat), le envlocal (Tomcat), le envíía una consulta HTTP y recibe la pa una consulta HTTP y recibe la pááginagina
HTML. HTML. LeerWeb.java: LeerWeb.java: import java.io.*; import java.io.*; import java.net.*; import java.net.*; public class LeerWeb { public class LeerWeb {
public LeerWeb() throws Exception { public LeerWeb() throws Exception {
Socket s = new Socket("127.0.0.1", 8080); Socket s = new Socket("127.0.0.1", 8080); OutputStream os = s.getOutputStream(); OutputStream os = s.getOutputStream(); PrintStream ps = new PrintStream(os); PrintStream ps = new PrintStream(os); ps.print("GET / HTTP/1.0\r\n\r\n"); ps.print("GET / HTTP/1.0\r\n\r\n"); InputStream is = s.getInputStream(); InputStream is = s.getInputStream();
InputStreamReader isr = new InputStreamReader(is); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); BufferedReader br = new BufferedReader(isr); String line = br.readLine();
String line = br.readLine(); while (line!=null){ while (line!=null){ System.out.println(line); System.out.println(line); line=br.readLine(); line=br.readLine(); } } } }
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
LeerWeb test = new LeerWeb(); LeerWeb test = new LeerWeb(); }
} }
}
©
5 Instalaci
5 Instalaci
ó
ó
n del servidor JSP
n del servidor JSP
5.1 Jakarta Tomcat
5.1 Jakarta Tomcat
Para poder poner en pr
Para poder poner en prááctica el lenguaje JSP, necesitamos un servidor con capacidad JSP.ctica el lenguaje JSP, necesitamos un servidor con capacidad JSP.
Por eso, vamos a utilizar el famoso servidor Tomcat, de la fundaci
Por eso, vamos a utilizar el famoso servidor Tomcat, de la fundacióón Apache. El Tomcat hace parte deln Apache. El Tomcat hace parte del
proyecto Jakarta de la fundaci
proyecto Jakarta de la fundacióón Apache.n Apache.
El servidor Tomcat es un producto gratuito y libre: su c
El servidor Tomcat es un producto gratuito y libre: su cóódigo fuente estdigo fuente estáádisponible, al lado de lasdisponible, al lado de las
versiones compiladas. versiones compiladas. Tomcat est
Tomcat estáá disponible para varios sistemas operativos, y estdisponible para varios sistemas operativos, y estáámuy utilizado bajo Unix y Linux, por sus estabilidad.muy utilizado bajo Unix y Linux, por sus estabilidad.
5.2 Instalaci
5.2 Instalaci
ó
ó
n
n
Antes de instalar el servidor Tomcat (versi
Antes de instalar el servidor Tomcat (versióón 7.0), el Java JRE versin 7.0), el Java JRE versióón 1.6 o arriba tiene que ser instalado en eln 1.6 o arriba tiene que ser instalado en el
servidor. Para instalar Tomcat, en Windows existe un instalador, y en Linux basta con descomprimir el archivo zip o servidor. Para instalar Tomcat, en Windows existe un instalador, y en Linux basta con descomprimir el archivo zip o gz en una carpeta local (como su carpera /home/usuario).
gz en una carpeta local (como su carpera /home/usuario). Es importante de leer las notas de instalaci
Es importante de leer las notas de instalacióón para ver si no hay informaciones importante para nuestran para ver si no hay informaciones importante para nuestra
configuraci configuracióón.n.
5.3 Configuraci
5.3 Configuraci
ó
ó
n de Eclipse
n de Eclipse
Se requiere crear un servidor en Eclipse para poder manejar Tomcat desde Eclipse. Se requiere crear un servidor en Eclipse para poder manejar Tomcat desde Eclipse. Escoge la perspectiva Java EE, vista de servidores, y crear un nuevo servidor. Escoge la perspectiva Java EE, vista de servidores, y crear un nuevo servidor.
5.4 Verificaci
5.4 Verificaci
ó
ó
n de la instalaci
n de la instalaci
ó
ó
n
n
Para verificar si la instalaci
Para verificar si la instalacióón es exitosa, inicia el servidor desde Eclipsen es exitosa, inicia el servidor desde Eclipse
Luego abrimos un navegador web y vamos al domicilio:
Luego abrimos un navegador web y vamos al domicilio: http://localhost:8080http://localhost:8080
Por defecto, el servidor de Tomcat utiliza el puerto 8080, para no chocar con un eventual servidor Apache (puerto 80). Por defecto, el servidor de Tomcat utiliza el puerto 8080, para no chocar con un eventual servidor Apache (puerto 80). Ah
Ahíítenemos que encontrar la ptenemos que encontrar la páágina por defecto de Tomcat, o una pgina por defecto de Tomcat, o una páágina de error de Tomcat.gina de error de Tomcat.
©
6 Uso de herramienta y entorno
6 Uso de herramienta y entorno
6.1 Eclipse
6.1 Eclipse
Para dise
Para diseññar las par las pááginas JSP, vamos a utilizar la herramienta Eclipse Ganymede, en su verisginas JSP, vamos a utilizar la herramienta Eclipse Ganymede, en su verisóón J2EE o Reporting.n J2EE o Reporting.
Estos programas son libres y gratuitos, y funcionan bajo Windows como bajos Linux. Estos programas son libres y gratuitos, y funcionan bajo Windows como bajos Linux. 6.1.1
6.1.1
Creaci
Creaci
ó
ó
n del servidor
n del servidor
Eclipse integra la posibilidad de manejar una multitud de servidores web diferente desde Eclipse. Eso permita el Eclipse integra la posibilidad de manejar una multitud de servidores web diferente desde Eclipse. Eso permita el nuevo despliegue, de manera autom
nuevo despliegue, de manera automáática, del sitio desputica, del sitio despuéés de cada cambia. Y tambis de cada cambia. Y tambiéén permite visualizar la consolan permite visualizar la consola
del servidor en Eclipse, para una depuraci
del servidor en Eclipse, para una depuracióón n mmáás comoda.s comoda.
Para crear un servidor, presiona CTRL + N. Escoja 'Servidor' en la lista. Luego escoje el tipo 'Tomcat 7'. Para crear un servidor, presiona CTRL + N. Escoja 'Servidor' en la lista. Luego escoje el tipo 'Tomcat 7'.
6.1.2
6.1.2
Creaci
Creaci
ó
ó
n de un nuevo proyecto web
n de un nuevo proyecto web
Para crear nuestra primera pPara crear nuestra primera páágina JSP, necesitamos crear un nuevo sitio web en Tomcat. Por eso, en Eclipse, creamosgina JSP, necesitamos crear un nuevo sitio web en Tomcat. Por eso, en Eclipse, creamos
un nuevo proyecto de tipo 'Dynamic Web Project', que llamamos ‘curso’. un nuevo proyecto de tipo 'Dynamic Web Project', que llamamos ‘curso’.
Escojamos como 'Target Runtime' el servidor que hemos creado en el punto anterior. Como versi
Escojamos como 'Target Runtime' el servidor que hemos creado en el punto anterior. Como versióón de modulon de modulo
escojamos 3.0, y como configuraci
escojamos 3.0, y como configuracióón '<custom>'. n '<custom>'. Luego aceptamos Luego aceptamos los valores por deflos valores por defecto.ecto.
Una vez creado, validamos las propiedades del proyecto, y Una vez creado, validamos las propiedades del proyecto, y agregamos el proyecto al servidor Tomcat 7.
agregamos el proyecto al servidor Tomcat 7.
©
Para agregar el proyec
Para agregar el proyecto al servidor, hacer doble clic sobre to al servidor, hacer doble clic sobre el servidor en la pantalla abajo el servidor en la pantalla abajo a la derecha, escoja laa la derecha, escoja la pesta
pestañña 'Module' y agrega el proyecto 'curso'.a 'Module' y agrega el proyecto 'curso'.
6.1.3
6.1.3
Creaci
Creaci
ó
ó
n de la p
n de la p
á
á
gina de
gina de
í
í
ndice
ndice
Para poder probar el servidor, vamos a crear nuestra primera pPara poder probar el servidor, vamos a crear nuestra primera páágina JSP.gina JSP.
Por eso, hacemos un clic derecho sobre la carpeta WebContent del proyecto curso, en Eclipse, y elegimos ‘new’...’JSP'. Por eso, hacemos un clic derecho sobre la carpeta WebContent del proyecto curso, en Eclipse, y elegimos ‘new’...’JSP'.
Una vez elegido, mencionamos el nombre de la p
Una vez elegido, mencionamos el nombre de la páágina, que sergina, que serááindex.jsp. Todas la pindex.jsp. Todas la pááginas con extensiginas con extensióón JSP (.jsp enn JSP (.jsp en
minuscula) ser
minuscula) seráán traducidas por el servidor en un servlet (cn traducidas por el servidor en un servlet (cóódigo Java) y producirdigo Java) y produciráán una pn una páágina HTML como salida.gina HTML como salida.
Para probar si la p
Para probar si la páágina funciona, tenemos que llenarla con alggina funciona, tenemos que llenarla con algúún n ccóódigo JSP y/o HTML. Con un doble clic sobredigo JSP y/o HTML. Con un doble clic sobre
index.jsp abrimos su contenido. Miramos que ya viene con alg
index.jsp abrimos su contenido. Miramos que ya viene con algúún n ccóódigo pre-hecho.digo pre-hecho.
Vamos a modificar el c
Vamos a modificar el cóódigo de la manera siguiente, y lo guardamos:digo de la manera siguiente, y lo guardamos:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%> pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <html> <head> <head> <%! <%!
String titulo="Mi primera Página JSP"; String titulo="Mi primera Página JSP"; int nrPagina=1; int nrPagina=1; %> %> <title><%=titulo%></title> <title><%=titulo%></title> </head> </head> <body bgcolor="#FFFFFF"> <body bgcolor="#FFFFFF"> <h1><%=titulo%></h1> <h1><%=titulo%></h1> <hr> <hr> <p> <p>
Este es mi página en JSP numero <%= nrPagina%>. Este es mi página en JSP numero <%= nrPagina%>. </body>
</body> </html> </html>
En el futuro, no escribir
En el futuro, no escribiréé en el manual los encabezados generados por el entorno, comoen el manual los encabezados generados por el entorno, como <%@page...><%@page...> <!DOCTYPE....><!DOCTYPE....> porqueporque
no son obligatorio para que funciona bien el c no son obligatorio para que funciona bien el cóódigo.digo.
Iniciamos el servidor. Iniciamos el servidor.
Luego miramos el resultado con un navegador web en el domicilio:
Luego miramos el resultado con un navegador web en el domicilio: http://localhost::8080/curso/ http://localhost::8080/curso/ oo http://localhost:8080/curso/index.jsp
http://localhost:8080/curso/index.jsp
Por defecto, si ninguna p
Por defecto, si ninguna páágina esta especificada en el URL, el servidor busca primero la pgina esta especificada en el URL, el servidor busca primero la páágina index.html, luegogina index.html, luego
index.htm, y luego index.jsp. Este opci
index.htm, y luego index.jsp. Este opcióón puede ser modificada al nivel del servidor, y/o al nivel del sitio, en el archivon puede ser modificada al nivel del servidor, y/o al nivel del sitio, en el archivo
web.xml. web.xml.
©
As
As podemos ver que en la barra de aplicacipodemos ver que en la barra de aplicaci n como en la primera ln como en la primera l nea de la pnea de la p gina sale en valor de la variablegina sale en valor de la variable 'titulo'.
7 Utilizaci
7 Utilizaci
ó
ó
n de los scriptlets
n de los scriptlets
7.1 ¿Qu
7.1 ¿Qu
é
é
son los scriptlets?
son los scriptlets?
Los scriptlets son las etiquetas que permiten de delimitar el c
Los scriptlets son las etiquetas que permiten de delimitar el cóódigo JSP, que tiene que ser analizado por el servidordigo JSP, que tiene que ser analizado por el servidor
JSP, del c
JSP, del cóódigo HTML, que tiene que ser enviado al cliente como tal. Asdigo HTML, que tiene que ser enviado al cliente como tal. Asííel servidor JSP combina el cel servidor JSP combina el cóódigo HTML condigo HTML con
el resultado del c
el resultado del cóódigo JSP para obtener la pdigo JSP para obtener la páágina HTML que sergina HTML que serááregresada al cliente y leregresada al cliente y leíída por el navegador delda por el navegador del
cliente. cliente.
El JSP es la parte de la programaci
El JSP es la parte de la programacióón que se ejecuta al nivel del servidor, en contra deln que se ejecuta al nivel del servidor, en contra del JavaScriptJavaScript, que se ejecuta al, que se ejecuta al
lado del cliente. lado del cliente.
7.2 Los scriptlet de declaraci
7.2 Los scriptlet de declaraci
ó
ó
n de variables
n de variables
El scriptlet de declaraci
El scriptlet de declaracióón de variable sirven para declarar variable que sern de variable sirven para declarar variable que seráán accesible de desde cualquier lugar de lan accesible de desde cualquier lugar de la
p
páágina JSP. Son equivalente a variable de clase.gina JSP. Son equivalente a variable de clase.
Los scriptlets se utilizan generalmente a dentro de la cabecera, o en el cuerpo de la p
Los scriptlets se utilizan generalmente a dentro de la cabecera, o en el cuerpo de la páágina HTML, antes de losgina HTML, antes de los
scriptlets de c scriptlets de cóódigo.digo.
El scriptlet de declaraci
El scriptlet de declaracióón estn estááencerrada entre '<%!' y encerrada entre '<%!' y '%>' (sin las '%>' (sin las cuotas).cuotas).
Ejemplo: Ejemplo:
<%! String titulo="Mi primera Página JSP"; <%! String titulo="Mi primera Página JSP"; int nrPagina=1; %>
int nrPagina=1; %>
7.3 Los scriptlet de utilizaci
7.3 Los scriptlet de utilizaci
ó
ó
n de variables
n de variables
El scriptlet de utilizaci
El scriptlet de utilizacióón de variable sirven para mencionar el valor de una variable en el cn de variable sirven para mencionar el valor de una variable en el cóódigo HTML. Sdigo HTML. Sóólo puedelo puede
contener una variable, pero tambi
contener una variable, pero tambiéén se puede utilizar mn se puede utilizar méétodos de objetos existente, o nuevos objetos).todos de objetos existente, o nuevos objetos).
El scriptlet de declaraci
El scriptlet de declaracióón estn estáá encerrada entre '<%=' y encerrada entre '<%=' y '%>' (sin las cuotas), y '%>' (sin las cuotas), y no lleva punto-coma.no lleva punto-coma.
Ejemplo: Ejemplo:
<h1><%=titulo%></h1> <h1><%=titulo%></h1>
7.4 Los scriptlets de c
7.4 Los scriptlets de c
ó
ó
digo
digo
Un scriptlet de c
Un scriptlet de cóódigo estdigo estáá encerrado entre '<%' y '%>' (sin las cuotas).encerrado entre '<%' y '%>' (sin las cuotas).
Un scriptlet de c
Un scriptlet de cóódigo puede ser utilizado para escribir el cdigo puede ser utilizado para escribir el cóódigo Java que se ejecutara en la pdigo Java que se ejecutara en la páágina JSP. Se puedegina JSP. Se puede
utilizar para declara clases c
utilizar para declara clases cóómo para implementar esquema de decisimo para implementar esquema de decisióón a dentro de la pn a dentro de la páágina para que sea dingina para que sea dináámica.mica.
Los scriptlets se pueden utilizar a dentro de la cabecera, o en el cuerpo de la p
Los scriptlets se pueden utilizar a dentro de la cabecera, o en el cuerpo de la páágina HTML.gina HTML.
Si el scriptlet tiene que generar alg
Si el scriptlet tiene que generar algúún n ccóódigo HTML, hay dos posibilidades:digo HTML, hay dos posibilidades:
1
1. . eel l ccóódigo HTML se genera a dentro el cdigo HTML se genera a dentro el cóódigo Java utilizando el mdigo Java utilizando el méétodotodoout.printout.print ooout.printlnout.println
2.
2. se se abrabre un e un blobloque que de de ccóódigo Java, se cierra el scriptlet y se pone el cdigo Java, se cierra el scriptlet y se pone el cóódigo HTML cdigo HTML cóómo en una pmo en una páágina HTMLgina HTML
normal (pero se puede utilizar otros scriptlets a dentro de este c
normal (pero se puede utilizar otros scriptlets a dentro de este cóódigo).digo).
©
El scriptlet que genera c
El scriptlet que genera c digo HMTL tendrdigo HMTL tendr que estar puesto al lugar de destino en el cque estar puesto al lugar de destino en el c digo HTML. Asdigo HTML. As que deque de costumbre las p
costumbre las pááginas JSP contienen varios scriptlets. Primero, en la cabecera, un scriptlet con el cginas JSP contienen varios scriptlets. Primero, en la cabecera, un scriptlet con el cóódigo dedigo de
inicializaci
inicializacióón de las variables y el cn de las variables y el cóódigo que no genera cdigo que no genera cóódigo HTML, y en el cuerpo, el los lugares deseados, losdigo HTML, y en el cuerpo, el los lugares deseados, los
scriptlets que generaran c
scriptlets que generaran cóódigo HTML para completar el cdigo HTML para completar el cóódigo HTML fijo.digo HTML fijo.
Ejemplo no 1: Ejemplo no 1: <html> <html> <head> <head> <%! <%!
String titulo="Mi primera Página JSP"; String titulo="Mi primera Página JSP"; int nrPagina=1; int nrPagina=1; %> %> <title><%=titulo%></title> <title><%=titulo%></title> </head> </head> <body> <body> <h1><%=titulo%></h1> <h1><%=titulo%></h1> <hr> <hr> <p> <p>
Este es mi página en JSP numero Este es mi página en JSP numero <%
<%
nrPagina++; nrPagina++;
out.print ("<font color=red><b>"+nrPagina+"</b></font> y me conviene el JSP"); out.print ("<font color=red><b>"+nrPagina+"</b></font> y me conviene el JSP"); %>. %>. </body> </body> </html> </html> Ejemplo no 2: Ejemplo no 2: Por ejemplo, en el c
Por ejemplo, en el cóódigo siguiente, segdigo siguiente, segúún la hora del dn la hora del díía, se marcara 'Buenos da, se marcara 'Buenos díía', o 'Buenas tarde', o 'Buenas noche'.a', o 'Buenas tarde', o 'Buenas noche'.
<html> <html> <head> <head> <title>Saludo</title> <title>Saludo</title> </head> </head> <body bgcolor="white"> <body bgcolor="white">
<% java.util.Date clock = new java.util.Date( ); %> <% java.util.Date clock = new java.util.Date( ); %> <% if (clock.getHours( ) < 12) { %> <% if (clock.getHours( ) < 12) { %> <h1>Buenos días!</h1> <h1>Buenos días!</h1> <% } else if (clock.getHours( ) < 18) { %> <% } else if (clock.getHours( ) < 18) { %> <h1>Buenas tardes!</h1> <h1>Buenas tardes!</h1> <% } else { %> <% } else { %> <h1>Buenas noches!</h1> <h1>Buenas noches!</h1> <% } %> <% } %> </body> </body> </html> </html>
7.5 Agregar comentarios
7.5 Agregar comentarios
Para agregar comentarios en un scriptlet, se pueden utilizar los comentarios de Java :
Para agregar comentarios en un scriptlet, se pueden utilizar los comentarios de Java : ////para simple lpara simple líínea,nea,/*/*yy*/*/ para m
para múúltiple lltiple lííneas.neas.
Para comentarios afuera de un scriptlet, pueden utilizar los comentarios HTML, que son contenidos entre
Para comentarios afuera de un scriptlet, pueden utilizar los comentarios HTML, que son contenidos entre <!--<!--yy-->-->,, pero estos comentarios ser
pero estos comentarios seráán enviados al navegador del cliente y, an enviados al navegador del cliente y, aúún que no sern que no seráávisible en la pvisible en la páágina web, sergina web, seráánn
visible por el usuario si el pregunta al navegador de ense
8 Utilizaci
8 Utilizaci
ó
ó
n de directivas
n de directivas
Las directivas de p
Las directivas de pááginas dan informaciones sobre la pginas dan informaciones sobre la páágina al servidor JSP. No generan ninguna informacigina al servidor JSP. No generan ninguna informacióón visiblen visible
para el usuario, pero permite determinar la manera que el servidor va utilizar para tratar el c
para el usuario, pero permite determinar la manera que el servidor va utilizar para tratar el c óódigo JSP de la pdigo JSP de la páágina.gina.
Existen tres tipos de directivas: de p
Existen tres tipos de directivas: de páágina, de inclusigina, de inclusióón, n, yytaglibtaglib. Para adjuntar una directiva, hay que incluirla entre. Para adjuntar una directiva, hay que incluirla entre <<
%@
%@ yy%>%>. La instrucci. La instruccióón de directiva incluye el tipo de directiva, el parn de directiva incluye el tipo de directiva, el paráámetro de la directiva, el signo igual, y la valormetro de la directiva, el signo igual, y la valor del par
del paráámetro, en este orden.metro, en este orden.
8.1 Directiva de p
8.1 Directiva de p
á
á
gina
gina
La directiva de p
La directiva de páágina es la mgina es la máás utilizada. Ella permite de especificar informaciones relativas a la configuracis utilizada. Ella permite de especificar informaciones relativas a la configuracióón de lan de la
p
páágina JSP, como el tipo de contenido. Asgina JSP, como el tipo de contenido. Asíísi elsi elcontentType = "text/plain"contentType = "text/plain", la p, la páágina JSP resultando se ensegina JSP resultando se enseññara comoara como
texto normal, y no HTML. texto normal, y no HTML.
Ciertos navegadores, como Internet Explorer, quieren ser demasiado inteligente y corregir las supuesta errores del Ciertos navegadores, como Internet Explorer, quieren ser demasiado inteligente y corregir las supuesta errores del desarrollador, as
desarrollador, asííque mismo con la directiva de pque mismo con la directiva de páágina para indicar que es un texto normal, el lo tratara comogina para indicar que es un texto normal, el lo tratara como
HTML... HTML...
Esta aconsejado de incluir las directivas de p
Esta aconsejado de incluir las directivas de páágina en cima del cgina en cima del cóódigo, antes de la etiquetadigo, antes de la etiqueta <html><html>..
Ejemplo: Ejemplo: <%@ page contentType="text/plain" %> <%@ page contentType="text/plain" %> <html> <html> <head> <head>
<title>Test directiva de página</title> <title>Test directiva de página</title> </head>
</head>
<body bgcolor="white"> <body bgcolor="white">
La fecha de hoy es <%= new java.util.Date() %> La fecha de hoy es <%= new java.util.Date() %> </body>
</body> </html> </html>
8.1.1
8.1.1
Lista de par
Lista de par
á
á
metros para directiva de P
metros para directiva de P
á
á
gina
gina
AAttttriribubuto to DeDefefectctoo a
auuttooFFlluussh h ttrruue e EEssttáá verdadero (verdadero (truetrue) cuando el buffer de la p) cuando el buffer de la páágina debe ser enviadogina debe ser enviado
autom
automááticamente cuando estticamente cuando estáálleno, o falso (lleno, o falso (falsefalse) si una excepci) si una excepcióón debe sern debe ser
generada cuando esta lleno. generada cuando esta lleno. b
buuffffeer r 88kkb b EEssppeecciiffiicca a eel l ttaammaañño del buffer para esta po del buffer para esta páágina. El tamagina. El tamañño debe ser expresado eno debe ser expresado en
kilobytes, seguido de
kilobytes, seguido de kbkb, o tiene que ser la palabra clave, o tiene que ser la palabra clave nonenone(ninguna) para(ninguna) para deshabilitar la opci
deshabilitar la opcióón del uso de un buffer.n del uso de un buffer.
conte
contentTypntType e text/text/html html EspecEspecifica ifica el el tipo tipo MIME MIME de de la la respurespuesta esta genergenerada ada por por la la ppáágina, y de maneragina, y de manera
opcional, el tipo de caracteres de la p
opcional, el tipo de caracteres de la páágina fuente y de la respuesta.gina fuente y de la respuesta.
er
errororPrPagage e No No dedefefectcto o UnUna a ppáágina JSP que hay que ensegina JSP que hay que enseññar en case de error durante la ejecuciar en case de error durante la ejecucióón deln del
ccóódigo de la pdigo de la páágina.gina.
ext
extendends s No No defdefectecto o El El nomnombre bre comcomplepleto to de de la la claclase se JavJava a que que la la ppáágina JSP generada extiende. La clasegina JSP generada extiende. La clase
tiene que implementar el
tiene que implementar elJspPageJspPageo el interfazo el interfaz HttpJspPageHttpJspPage del paquetedel paquetejavax.servlet.jspjavax.servlet.jsp.. Nota que no est
Nota que no estáá recomendado de utilizar este atributo. Especificando su propiorecomendado de utilizar este atributo. Especificando su propio
superclass restringe la posibilidad del contenedor JSP de entregar una superclass superclass restringe la posibilidad del contenedor JSP de entregar una superclass especializada y de alto rendimiento.
especializada y de alto rendimiento. im
impoporrt t No No dedeffececto to DeDecclalarracaciióón de la importacin de la importacióón de clases o paquetes Java (separados por coma)n de clases o paquetes Java (separados por coma)
inf
info o No No defdefectecto o TexTexto to que que un un concontentenedoedor r web web puepuede de utiutilizlizar ar comcomo o desdescricripcipcióón de la pn de la páágina en sugina en su
interfaz de administraci interfaz de administracióón.n.
©