confidential // neoris 1 confidential // do not reproduce without prior written permission from...

24
Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris JavaServer Pages JSP

Upload: cesar-flores-quiroga

Post on 23-Jan-2016

245 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris JavaServer Pages JSP

Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris

JavaServer Pages

JSP

Page 2: Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris JavaServer Pages JSP

Confidential // Neoris 2

Agenda

¿Qué es JSP? ¿Qué puede hacer JSP? Plantilla de texto: HTML Estático Elementos de Script JSP Expresiones JSP Eventos JavaScript Scriptlets JSP Declaraciones JSP Directivas JSP Variables Predefinidas Acciones Convenciones de Comentarios y Caracteres de Escape

Page 3: Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris JavaServer Pages JSP

Confidential // Neoris 3

¿Qué es JSP?

JavaServer Pages (JSP) es una tecnología basada en el lenguaje Java que permite incorporar contenido dinámico a las páginas web.

los archivos JSP combinan HTML con etiquetas especiales y fragmentos de código Java.

Page 4: Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris JavaServer Pages JSP

Confidential // Neoris 4

¿Qué puede hacer JSP?

permite separar la parte dinámica de nuestras páginas Web del HTML estático.

se escribe el HTML regular de la forma normal, encerrando el código de las partes dinámicas en etiquetas especiales, las cuales empiezan con “<%” y terminan con “%>”

Ej:

- una página JSP que resulta algo así como " Thanks for ordering Web Programming:” para la URL

http://host/Test.jsp?title= Web+Programming:

el fichero debe tener extensión .jsp y debe ser instalado en el mismo sitio que una página Web normal.

internamente, la pagina JSP se convierte en un servlet normal, donde el HTML estático se imprime en el stream de salida estándar asociado con el método service del servlet .

Page 5: Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris JavaServer Pages JSP

Confidential // Neoris 5

hay tres tipos de construcciones JSP que podemos embeber en una página:

* Elementos de script:

- - permiten especificar código Java que se convertirá en parte del servlet resultante.

* Directivas:

- permiten controlar la estructura general del servlet.

* Acciones:

- - permiten especificar componentes que deberían ser usados.

- - permiten controlar el comportamiento del motor JSP.

Page 6: Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris JavaServer Pages JSP

Confidential // Neoris 6

Plantilla de Texto: HTML estático

gran porcentaje de las páginas JSP consistirán en HTML estático, conocido como plantilla de texto.

este HTML se parece al HTML normal, sigue la mismas reglas de sintaxis, y simplemente "pasa a través" del cliente por el servlet creado para manejar la página.

puede ser creado con cualquier herramienta para generar páginas Web.

la única excepción a la regla de que "la plantilla de texto se pasa tal y como es“, es que, si queremos tener "<%" en la salida, necesitamos poner "<\%" en la plantilla de texto.

Page 7: Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris JavaServer Pages JSP

Confidential // Neoris 7

Elementos de Script JSP

permiten insertar código Java dentro del servlet que se generará desde la página JSP actual.

Hay tres formas:

* Expresiones de la forma que son evaluadas e insertadas en la salida.

* Scriptlets de la forma que se insertan dentro del método service del servlet.

* Declaraciones de la forma que se insertan en el cuerpo de la clase del servlet fuera de

cualquier método existente.

una expresión JSP se usa para insertar valores Java directamente en la salida.

tiene la siguiente forma:

Page 8: Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris JavaServer Pages JSP

Confidential // Neoris 8

Expresiones JSP

la expresión Java es evaluada, convertida a un string, e insertada en la página.

esta evaluación se realiza durante la ejecución (cuando se solicita la página) y así tiene total acceso a la información sobre la solicitud.

Ej: esto muestra la fecha y hora en que se solicitó la página:

Current time:

hay un gran número de variables predefinidas. Algunos de estos objetos implícitos son:

* request, el HttpServletRequest;

* response, el HttpServletResponse;

* session, el HttpSession asociado con el request (si existe).

* out, el PrintWriter (una versión con buffer del tipo JspWriter) usada para enviar la salida al cliente.

* Ej:

Your hostname:

Page 9: Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris JavaServer Pages JSP

Confidential // Neoris 9

Scriptlets JSP

permiten insertar código arbitrario dentro del método servlet que será construido al generar la página

tienen la siguiente forma:

tienen acceso a las mismas variables predefinidas que las expresiones.

Ej:

si queremos que la salida aparezca en la página resultante, tenemos que usar la variable out:

Page 10: Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris JavaServer Pages JSP

Confidential // Neoris 10

Declaraciones JSP

permiten definir métodos o campos que serán insertados dentro del cuerpo principal de la clase servlet.

tienen la siguiente forma:

no generan ninguna salida, se usan en conjunción con expresiones JSP o scriptlets.

Ej: tenemos un fragmento de JSP que imprime el número de veces que se ha solicitado la pagina actual desde que el servidor

Se arranco:

Page 11: Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris JavaServer Pages JSP

Confidential // Neoris 11

Directivas JSP

afectan a la estructura general de la clase servlet.

tienen la siguiente forma:

también podemos combinar múltiples selecciones de atributos para una sola directiva.

hay dos tipos principales de directivas:

* page:

- permite hacer cosas como importar clases, personalizar la superclase del servlet, etc

* include:

- permite insertar un fichero dentro de la clase servlet en el momento que el fichero JSP es traducido

servlet

Page 12: Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris JavaServer Pages JSP

Confidential // Neoris 12

… Directiva page

permite definir uno o más de los siguientes atributos sensibles a las mayúsculas:

* import="package.class" o import="package.class1,...,package.classN“

- permite especificar los paquetes que deberían ser importados

* contentType="MIME-Type" o contentType="MIME-Type; charset=Character- Set”

- especifica el tipo MIME de la salida.

- el valor por defecto es text/html

* isThreadSafe="true|false".

- true (por defecto) indica un procesamiento, donde múltiples peticiones pueden procesarse

simultáneamente con un sólo ejemplar del servlet

- false indica que el servlet debería implementar SingleThreadModel, con peticiones enviadas

serialmente o con peticiones simultáneas siendo entregadas por ejemplares separados del servlet.

Page 13: Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris JavaServer Pages JSP

Confidential // Neoris 13

* session="true|false".

- true (por defecto), indica que la variable, predefinida session (del tipo HttpSession) debería unirse a

la sesión existente si existe una, si no existe se debería crear una nueva sesión para unirla.

- false, indica que no se usarán sesiones, y los intentos de acceder a la variable session resultarán en

errores en el momento en que la página JSP sea traducida a un servlet.

* buffer="sizekb|none"

- especifica el tamaño del buffer para el JspWriter out

- el valor por defecto es específico del servidor, debería ser de al menos 8kb

* autoflush="true|false".

- true (por defecto), indica que el buffer debería descargarse cuando esté lleno.

- false, indica que se debe lanzar una excepción cuando el buffer se sobrecargue y es ilegal cuando

usamos buffer="none".

* extends="package.class".

- indica la superclase del servlet que se va a generar.

- se debe usar con extrema precaución, ya que el servidor podría utilizar una superclase personalizada.

Page 14: Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris JavaServer Pages JSP

Confidential // Neoris 14

* info="message".

- define un string que puede usarse para ser recuperado mediante el método getServletInfo

* errorPage="url".

- especifica una página JSP que se debería procesar si se lanzará cualquier Throwable que no fuera

capturado en la página actual.

* isErrorPage="true|false"

- indica si la página actual actúa o no como página de error de otra página JSP

- el valor por defecto es false.

* language="java".

- está pensado para especificar el lenguaje a utilizar.

- “java” es tanto el valor por defecto como la única opción legal.

Page 15: Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris JavaServer Pages JSP

Confidential // Neoris 15

… Directiva include

permite incluir ficheros en el momento en que la página JSP es traducida a un servlet .

la URL especificada:

- se interpreta como relativa a la página JSP a la que se refiere.

- al igual que las URLs relativas, podemos decirle al sistema, que interpreta la URL relativa al

directorio home del servidor Web, empezando la URL con una barra invertida.

los contenidos del fichero incluido son analizados como texto normal JSP, y así pueden incluir HTML estático, elementos de script, directivas y acciones.

Page 16: Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris JavaServer Pages JSP

Confidential // Neoris 16

Variables Predefinidas

para simplificar el código en expresiones y scriplets JSP, existen ocho variables definidas automáticamente, algunas veces llamadas objetos implícitos:

* request

- es el HttpServletRequest asociado con la petición.

- permite mirar:

** los parámetros de la petición (mediante getParameter)

** el tipo de petición (GET, POST, HEAD, etc.)

** las cabeceras HTTP entrantes (cookies, Referer, etc.).

- permite que la petición sea una subclase de ServletRequest distinta de HttpServletRequest, si el

protocolo de la petición es distinto del HTTP

* response

- es el HttpServletResponse asociado con la respuesta al cliente.

- observación:

como el stream de salida (out) tiene un buffer, es legal seleccionar los códigos de estado y

cabeceras de respuesta.No está permitido en los servlets normales una vez que la salida ha sido

envíada al cliente.

* out

- es el PrintWriter usado para enviar la salida al cliente.

- para hacer útil el objeto response, se utiliza JspWriter, es una versión con buffer de PrintWriter.

- se puede ajustar el tamaño del buffer, desactivar el buffer, usando el atributo buffer de la directiva page

- se usa exclusivamente en scriptlets ya que las expresiones JSP obtienen un lugar en el stream de sala,

y por eso raramente se refieren explícitamente a out.

Page 17: Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris JavaServer Pages JSP

Confidential // Neoris 17

*session

- es el objeto HttpSession asociado con la petición.

- las sesiones se crean automáticamente. La única excepción es usar el atributo session de la

“directiva page” para desactivar las sesiones.

* application

- es el ServletContext obtenido mediante getServletConfig().getContext().

* config

- es el objeto ServletConfig para esta página.

* pageContext

- JSP presenta una nueva clase llamada PageContext, para encapsular características de uso

específicas del servidor, como JspWriters de alto rendimiento.

* page

- es sólo un sinónimo de this, y no es muy útil en Java.

- fue creado como situación para el día en que los lenguajes de script puedan incluir otros lenguajes

distintos de Java.

Page 18: Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris JavaServer Pages JSP

Confidential // Neoris 18

Acciones

usan construcciones de sintaxis XML para controlar el comportamiento del motor de Servlets

Se puede:

** insertar un fichero dinámicamente

** reutilizar componentes JavaBeans

** reenviar al usuario a otra página

** generar HTML para el plug-in Java.

Acción:

* jsp:include:

- permite insertar ficheros en el momento en que la página es solicitada.

- ésta difiere de la “Directiva include”, que inserta el fichero en el momento de la conversión de la página

JSP a un Servlet

Page 19: Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris JavaServer Pages JSP

Confidential // Neoris 19

* jsp:useBean:

- permite cargar y utilizar un JavaBean en la página JSP .

- permite utilizar la reusabilidad de las clases Java sin sacrificar la conveniencia de añadir JSP sobre

servlets solitarios.

“ejemplariza un objeto de la clase especificada por class, y lo une a una variable con el nombre especificado por id ”

- también se puede especificar un atributo scope que hace que ese Bean se asocie con más de una

página.

- las propiedades del bean se pueden modificar mediante:

• * jsp:setProperty, o

• * usando un scriptlet y llamando a un método (“setXxx()”) explícitamente sobre el objeto

• con el nombre de la variable especificada anteriormente mediante el atributo id.

- las propiedades existentes en una expresión o scriptlet JSP pueden ser leídas llamando al método

“getXxx()” o usando la accion jsp:getProperty

- la clase especificada por el bean debe estar en el path normal del servidor, no en la parte reservada

que obtiene la recarga automática cuando se modifican.

Page 20: Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris JavaServer Pages JSP

Confidential // Neoris 20

* jsp:setProperty

- es utilizada para obtener valores de las propiedades de los beans que se han referenciado

anteriormente

- provee dos contextos:

** jsp:setProperty fuera de un elemento jsp:useBean

En este caso, el jsp:setProperty se ejecuta sin importar si se ha ejemplarizado un nuevo bean o se ha encontrado

uno ya existente

** jsp:setProperty dentro del cuerpo de un elemento jsp:useBean

En este caso, jsp:setProperty sólo se ejecuta si se ha ejemplarizado un nuevo objeto.

Page 21: Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris JavaServer Pages JSP

Confidential // Neoris 21

* jsp:getProperty

- este elemento recupera el valor de una propiedad del bean, lo convierte a un string, e inserta

el valor en la salida.

- contiene dos atributos requeridos:

** name: el nombre de un bean referenciado anteriormente mediante jsp:useBean

** property: la propiedad cuyo valor debería ser insertado

Page 22: Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris JavaServer Pages JSP

Confidential // Neoris 22

* jsp:forward:

- permite reenviar la petición a otra página

- contiene un sólo atributo:

** page: debería consistir en una URL relativa, podría ser un valor estático, o podría ser calculado

en el momento de la petición.

* jsp:plugin:

- permite insertar un elemento OBJECT o EMBED específico del navegador, para especificar que el

navegador debería ejecutar un applet usando el Plug-in Java.

Page 23: Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris JavaServer Pages JSP

Confidential // Neoris 23

Convenciones de Comentarios y Caracteres de Escape

• Hay construcciones especiales que podemos usar en varios casos para insertar comentarios o caracteres:

<%-- comment --%> Un comentario JSP. Ignorado por el traductor JSP-a-scriptlet.

Cualquier elemento de script, directivas o acciones embebidas son ignorados.

<!-- comment --> Un comentario HTML. Se pasa al HTML resultante.

Cualquier elemento de script, directivas o acciones embebidas se ejecutan normalmente.

<\% Usado en plantillas de texto (HTML estático) donde realmente queremos "<%".

%\> Usado en elementos de script donde realmente queremos "%>".

\' Una sola comilla en un atributo que usa comillas simples.

Recordar: podemos usar comillas dobles o simples, y que otros tipos de comillas serán caracteres regulares.

\" Una doble comilla en un atributo que usa comillas dobles.

Recordar: podemos usar comillas dobles o simples, y que otros tipos de comillas serán caracteres regulares

%\> %> en un atributo.

<\% <% en un atributo.

Sintaxis Propósito

Page 24: Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris JavaServer Pages JSP

Confidential // Neoris 24

Thank you

Fuentes:JSP Reference http://java.sun.com/products/jsp/?intcmp=3184

JSP Tutorial http://www.programacion.com/java/tutorial/servlets_jsphttp://www.scribd.com/doc/3212179/JSP-Introduccion