Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Mario Muoz Organero & Norberto Fernndez * Departamento de Ingeniera Telemtica http://www.it.uc3m.es/mario http://www.it.uc3m.es/berto
(*) Agradecimientos a Lourdes Tajes en cuyo material docente se basa parcialmente esta presentacin
Introduccin a JSP
JSP es una especificacin de Sun Microsystems Sirve para crear y gestionar pginas web dinmicas Permite mezclar en una pgina cdigo HTML para generar la parte esttica, con contenido dinmico creado a partir de marcas especiales El contenido dinmico se obtiene, en esencia, gracias a la posibilidad de incrustar dentro de la pgina cdigo Java de diferentes formas Su objetivo final es separar la interfaz (presentacin visual) de la implementacin (lgica de ejecucin)
En servlets estaban mezclados
Servidores de informacin
Introduccin a JSP
La pgina JSP se convierte en un servlet La conversin la realiza en la mquina servidora el motor o contenedor la primera vez que se solicita la pgina JSP Este servlet generado procesa cualquier peticin para esa pgina JSP Si se modifica el cdigo de la pgina JSP, entonces se regenera y recompila automticamente el servlet y se recarga la prxima vez que sea solicitada
En servlets, tendramos que modificar el cdigo fuente, recompilar y redesplegar nosotros
Servidores de informacin
Servidores de informacin
Accediendo al JSP
Supongamos que nuestra aplicacin se llama HolaMundo
<Tomcat_Path>/webapps/HolaMundo/
Ubicamos la pgina JSP en la parte pblica de la aplicacin para hacerla accesible al usuario
<Tomcat_Path>/webapps/HolaMundo/HolaMundo.jsp
Qu pasa entonces?
Mario Muoz Organero & Norberto Fernndez Servidores de informacin 5
Accediendo al JSP
Etapas del proceso:
Traduccin:
Se genera el .java del servlet a partir del JSP <Tomcat_Path>/work/Catalina/<server>/HolaMundo/org/apache/jsp/ HolaMundo_jsp.java
Compilacin:
Se compila el .java para obtener el .class
Carga de clase:
La mquina virtual carga la clase
Crear instancia:
Se instancia la clase para crear un objeto con el servlet
Servidores de informacin
Servidores de informacin
Directivas
Instrucciones para el contenedor que sern tenidas en cuenta al generar el servlet
Acciones
Etiquetas que llevan asociada cierta funcionalidad y que se tienen en cuenta en tiempo de ejecucin
Mario Muoz Organero & Norberto Fernndez Servidores de informacin 9
Objetos implcitos
Servidores de informacin
10
Objetos implcitos
JSP utiliza los objetos implcitos, basados en la API de servlets Estos objetos estn disponibles para su uso en pginas JSP. Los ms importantes son:
request
Instancia de HttpServletRequest. Representa la peticin pasada como argumento de _jspService(). Proporciona entre otras cosas los parmetros recibidos del cliente, el tipo de peticin (GET/POST), etc.
response
Instancia de HttpServletResponse que representa la respuesta del servidor a la peticin
session
Instancia de HttpSession, permite acceder a la sesin para leer/escribir datos en ella
out
Instancia de JspWriter, el writer en el que se escribe la respuesta
Servidores de informacin
12
Servidores de informacin
13
Servidores de informacin
14
Directivas
Servidores de informacin
15
Directivas JSP
Page
Configuracin de pgina
Include
Incluir otro fichero (HTML, JSP) en el actual
Taglib
Declarar qu libreras de tags se utilizarn en la pgina
Los tags representan acciones
Servidores de informacin
16
Directiva Page
Sintaxis: <%@ page ATRIBUTOS %> Donde ATRIBUTOS son parejas: nombre=valor Ejemplo:
<%@ page import=java.rmi.*,java.util.* %>
Servidores de informacin
17
Directiva Page
Algunos de los atributos ms usados:
import
Lista de paquetes o clases, separados por comas, que sern importados para utilizarse dentro del cdigo java.
contentType
Especificar el tipo MIME de los contenidos que van a ser generados (por defecto HTML)
pageEncoding
Codificacin de caracteres de la pgina JSP (por defecto iso8859-1)
errorPage
Hace referencia a una pgina que se muestra si se produce alguna excepcin al procesar la pgina JSP y no se captura all
Directiva Include
Indica al motor JSP que incluya el contenido del fichero correspondiente en el JSP, insertndolo en el lugar en el que aparece la directiva El contenido del fichero incluido es analizado en el momento de la traduccin del fichero JSP y se incluye una copia del mismo dentro del servlet generado Una vez incluido, si se modifica el fichero no se ver reflejado en el servlet El tipo de fichero a incluir puede ser un
fichero HTML (esttico) fichero JSP (dinmico)
Servidores de informacin
19
Servidores de informacin
20
Directiva Taglib
Permite extender los marcadores de JSP con etiquetas o marcas generadas por el propio usuario (etiquetas personalizadas) Se hace referencia a una biblioteca de etiquetas que contiene cdigo Java compilado que especifica el comportamiento de las etiquetas que el usuario ha definido Sintaxis: <%@ taglib uri=tag-library-URI prefix=tagPrefix %>
Servidores de informacin
21
Elementos de Scripting
Servidores de informacin
22
Elementos de Scripting
Permiten la insercin de cdigo Java dentro de una pgina JSP Hay 3 tipos de elementos, que permiten aadir: Declaraciones Cdigo Java arbitrario (scriptlets) Expresiones
Servidores de informacin
23
Declaraciones
Usadas para definir variables y mtodos con mbito de clase para el servlet generado Estas variables o mtodos declarados pasarn a ser variables de instancia de la clase servlet generada Esto significa que sern globales a todo el servlet generado para la pgina Sintaxis
<%! Decl. %>
Ejemplo
<%! int contador >
Servidores de informacin
24
Scriptlets
Un scriptlet es un bloque de cdigo Java insertado en pgina y ejecutado durante el procesamiento de respuesta El cdigo introducido se inserta directamente en mtodo _jspService() del servlet generado para pgina Sintaxis
<% cdigo Java %>
la la el la
Ejemplo
<% int i,j; for (i=0;i<3;i++) { j=j+1; } %>
Mario Muoz Organero & Norberto Fernndez Servidores de informacin 25
Servidores de informacin
26
Expresiones
Notacin abreviada que enva el valor de una expresin Java al cliente La expresin se traduce por la llamada al mtodo println del objeto out dentro del mtodo _jspService(), con lo que en cada peticin, la expresin es evaluada y el resultado se convierte a un String y se visualiza Sintaxis <%= Expresin Java a evaluar %> Ejemplo <%= new Date() %>
Servidores de informacin
27
Acciones
Servidores de informacin
28
Acciones
Son etiquetas, con formato XML, que afectan al comportamiento en tiempo de ejecucin del JSP En la traduccin de JSP al servlet, la marca se reemplaza por cierto cdigo Java asociado a la etiqueta (es como una macro) Existen una serie de acciones estndar predefinidas, pero los usuarios pueden definir las suyas
Utilizando bibliotecas de tags (taglibs)
Servidores de informacin
29
Acciones estndar
Algunas acciones estndar son:
<jsp:include> <jsp:param> <jsp:forward> <jsp:useBean> <jsp:setProperty> <jsp:getProperty>
Servidores de informacin
30
Accin jsp:include
Permite incluir un recurso especificado por la URL, en la peticin JSP en tiempo de ejecucin Cuando se realiza la traduccin de JSP al servlet, dentro del mtodo _jspService() se genera el cdigo que incluye el recurso Cuando se ejecuta el servlet, se invoca al mecanismo que incluye el recurso y el resultado se aade a la pgina El elemento incluido puede acceder al objeto request de la pgina padre, y adems de los parmetros normales, a los que se aadan con <jsp:param>
Servidores de informacin
31
Accin jsp:include
Sintaxis
<jsp:include page=URL> <jsp:param name=nombre clave value=valor /> // (parmetros no obligatorios) </jsp:include>
Servidores de informacin
32
Servidores de informacin
33
Accin jsp:param
Sirve para pasar parmetros a un objeto
Ejemplo
<jsp:include page=otra_pagina.jsp> <jsp:param name=nombre value=valor /> </jsp:include>
Servidores de informacin
34
Accin jsp:forward
Esta marca permite que la peticin sea redirigida a otra pgina JSP, a otro servlet o a otro recurso esttico Muy til cuando se quiere separar la aplicacin en diferentes vistas, dependiendo de la peticin interceptada Cuando se ejecuta el servlet se redirige hacia el destino y no se vuelve al servlet original Sintaxis <jsp:forward page=URL > <jsp:param name=nombre value=valor /> // (no obligatorios) </jsp:forward>
Servidores de informacin
35
Servidores de informacin
36
Servidores de informacin
37
Servidores de informacin
38
Accin jsp:useBean
Esta marca sirve para instanciar un JavaBean si no existe, o localizar una instancia ya existente, para su uso desde la pgina Los JavaBeans son objetos Java que cumplen ciertas caractersticas en cuanto a su diseo: son serializables y tienen un constructor implcito (sin argumentos) Se utilizan para reducir al mximo el cdigo Java insertado en una pgina JSP. En lugar de meterlo directamente en el fichero JSP se mete en una clase y una instancia de sta se llama desde el JSP Permite separar la lgica de ejecucin (en el JavaBean) de la presentacin (en el servlet generado) Se encapsula el cdigo Java en un objeto (JavaBean) y se instancia y usa con el JSP
Servidores de informacin
39
Accin jsp:useBean
Los JavaBeans se caracterizan porque a sus atributos (llamados propiedades) se acceden (por convenio) a travs de los mtodos setNombreAtributo y getNombreAtributo
Ojo, si el nombre va en minsculas el mtodo lleva la inicial del nombre en maysculas para nombre se pone getNombre.
Si se usa un JavaBean en una pgina habr que definir la clase correspondiente, creando los mtodos set y get para los atributos definidos.
Normalmente se suele definir dentro de un paquete.
Dentro del servlet generado se puede llamar a mtodos de un JavaBean que se encarguen de realizar ciertas operaciones y el servlet muestra el resultado de las mismas
Servidores de informacin
40
Accin jsp:useBean
Sintaxis
<jsp:useBean id=nombre scope=mbito class=clase/>
Ejemplo:
<jsp:useBean id=cart scope=session class=pkg.Cart/>
Servidores de informacin
41
mbitos
Define dnde y durante cunto tiempo estn accesibles los objetos Tipos de mbitos:
Pgina (page): objetos que slo estn accesibles durante la ejecucin del cdigo de una pgina Peticin (request): objetos compartidos entre las diferentes pginas que manejan una peticin, por ejemplo, una pgina y la que maneje errores de la primera, o una pgina y otra a la que se pasa control con la orden jsp:forward Sesin (session): objetos compartidos entre las diferentes pginas que se llamen a travs de una sesin Aplicacin (application): compartidos por todos los objetos dentro de una misma aplicacin del servidor
Mario Muoz Organero & Norberto Fernndez Servidores de informacin 42
Accin jsp:setProperty
Esta marca se utiliza junto con la marca useBean para asignar valor a las propiedades del Bean En el mtodo _jspService() del servlet generado se invoca al mtodo set de la propiedad deseada Sintaxis <jsp:setProperty name=id-Bean propiedad />
Servidores de informacin
43
Accin jsp:setProperty
Donde propiedad puede ser property=*
Se cogen como propiedades y valores todos los parmetros del objeto request A la propiedad P del bean se le asigna el valor del parmetro P del objeto request
property=Nombre
El valor se coge de un parmetro con el mismo nombre del objeto request
property=Nombre param=NombreParmetro
El valor de la propiedad Nombre se saca del valor del parmetro NombreParmetro
Accin jsp:getProperty
Se utiliza para obtener el valor de las propiedades de un Bean. Dentro del mtodo _jspService() del servlet generado se accede al valor de una propiedad, lo convierte a string y lo imprime en la salida del cliente (objeto out) Sintaxis <jsp:getProperty name=id-Bean property=propiedad />
Servidores de informacin
45
Un ejemplo: Calculadora
Servidores de informacin
46
Un ejemplo: Calculadora
Servidores de informacin
47
Un ejemplo: Calculadora
Servidores de informacin
48
Un ejemplo: Calculadora
Servidores de informacin
49
Un ejemplo: Calculadora
Servidores de informacin
50