Download - 05. Java Server Pages
-
JSPJava Server PagesJava Server Pages
-
Contenidos
-
Qu es JSP? Una tecnologa para crear pginas Web dinmicas Contiene cdigo HTML normal junto elementos especiales de JSP
Estn construidas sobre servlets Estn construidas sobre servlets Internamente, el servidor de aplicaciones compilar JSP a un servlet
Vienen a resolver el problema de aqullos (que era el mismo que con CGI), es decir: Generar HTML directamente por cdigo, en un lenguaje de programacin
Dificulta enormemente la separacin de tareasseparacin de tareasentre diseadoresdiseadores y programadoresprogramadores
-
Insertar java en pginas HTML JSP (como ASP) aborda el problema a la inversa: En vez de insertar HTML en cdigo de programacin, podremos insertar programacin, podremos insertar ciertos elementos de cdigo en las pginas HTML
-
JSP: Introduccin Comparaciones con otras tecnologas:
Vs ASP (Active Server Pages). Vs Servlets.
Las JSP nos permiten separar la parte Las JSP nos permiten separar la parte dinmica de nuestras pginas Web del HTML esttico.
Escribimos el HTML de la forma normal y encerramos el cdigo ejecutable con unas etiquetas especiales "".
-
Ejemplo de pgina JSP
Saludo personalizado con JSP
Buenos das!
Buenas tardes!
Buenas noches!
Bienvenido a nuestro sitio Web, abierto las 24 horas del da.
-
Beneficio? Incluir mucha lgica de programacin en una pgina Web no es mucho mejor que generar el HTML por programa
Pero JSP proporciona acciones (action Pero JSP proporciona acciones (action elements) que son como etiquetas HTML pero que representan cdigo reutilizable
Adems, se puede invocar a otras clases Java del servidor, a componentes (Javabeans o EJB)
-
Separacin de presentacin y lgica En definitiva, lo que permite JSP (bien utilizado) es una mayor separacin entre la presentacin de la pgina y la lgica de la la pgina y la lgica de la aplicacin, que ira aparte Desde la pgina JSP nicamente llamaramos, de diferentes formas, a ese cdigo
-
JSP: Proceso de compilacin
-
Ejemplo: de JSP a Servlet (Tomcat)
-
JS
P
a
S
e
r
v
l
e
t
.
s
e
r
v
i
c
e
(
)
J
S
P
a
S
e
r
v
l
e
t
.
s
e
r
v
i
c
e
(
)
-
Elementos JSP Tres tipos de elementos en JSP:
Directivas Permiten especificar informacin acerca de la pgina que permanece constante para todas las request
Requisitos de bufferingPgina de error para redireccin, etc. Pgina de error para redireccin, etc.
Acciones Permiten ejecutar determinadas acciones sobre informacin que se requiere en el momento de la peticin de la jsp
Acciones estndar Acciones propietarias (Tag libs)
Scripting Permite insertar cdigo java que sern ejecutadas en el momento de la peticin.
-
Elementos de scripting
ElementoElemento DescripcinDescripcin
ScriptletScriptlet. se usa para meter cdigo Java dentro. se usa para meter cdigo Java dentro
ExpresinExpresin. Permite acceder al valor devuelto por . Permite acceder al valor devuelto por
una expresin en Java e imprimirlo en OUTuna expresin en Java e imprimirlo en OUT
una expresin en Java e imprimirlo en OUTuna expresin en Java e imprimirlo en OUT
DeclaracinDeclaracin. Usada para declarar variables y . Usada para declarar variables y
mtodos en la clase correspondiente a la pginamtodos en la clase correspondiente a la pgina
ComentarioComentario. Comentario ignorado cuando se . Comentario ignorado cuando se
traduce la pgina JSP en un traduce la pgina JSP en un servletservlet..
(comentario en el HTML
-
Un ejemplo ms dinmico Hagamos una pgina JSP que, en funcin de la hora, muestre un saludo diferente (buenos das, buenas tardes o buenas noches)buenas tardes o buenas noches) Y que muestre tambin la hora actual
-
Ejemplo: expresin, saludo.jsp
-
Ejemplo: scriptlet, saludo.jsp
-
Ejemplo: declaracin, saludo.jsp
-
JSP: Objetos predefinidos El cdigo java incrustado en JSP tiene acceso a los mismos objetos predefinidos que tenan los servlets
Aqu se llaman como sigue: Aqu se llaman como sigue: requestrequest
responseresponse
pageContextpageContext
sessionsession
applicationapplication
outout
configconfig
pagepage
Se puede acceder a
ellos directamente
desde los scriptlets
-
JSP: Objetos predefinidos REQUEST:
HttpServletRequest asociado con la peticin Permite acceder a:
Los parmetros de la peticin (mediantegetParameter)getParameter)
El tipo de peticin (GET, POST, HEAD, etc.) Las cabeceras HTTP entrantes (cookies, Referer,etc.).
Estrictamente hablando, se permite que lapeticin sea una subclase de ServletRequestdistinta de HttpServletRequest, si el protocolode la peticin es distinto del HTTP. Esto casinunca se lleva a la prctica.
-
JSP: Objetos predefinidos RESPONSE:
Objeto de clase HttpServletResponse asociadocon la respuesta al cliente.
Como el stream de salida tiene un buffer, eslegal seleccionar los cdigos de estado ylegal seleccionar los cdigos de estado ycabeceras de respuesta, aunque no estpermitido en los servlets normales una vez quela salida ha sido enviada al cliente.
-
JSP: Objetos predefinidos OUT:
PrintWriter usado para enviar la salida alcliente.
sta es una versin con buffer de PrintWriterllamada JspWriter. Podemos ajustar el tamaollamada JspWriter. Podemos ajustar el tamaodel buffer, o incluso desactivarlo, usando elatributo buffer de la directiva page.
Se usa casi exclusivamente en scriptlets yaque las expresiones JSP obtienen un lugar enel stream de salida, y por eso raramente serefieren explcitamente a out.
-
JSP: Objetos predefinidos SESSION:
HttpSession asociado con la peticin. Las sesiones se crean automticamente, poresto esta variable se une incluso si no hubierauna sesin de referencia entrante.una sesin de referencia entrante.
La nica excepcin es usar el atributo sessionde la directiva page para desactivar lassesiones, en cuyo caso los intentos dereferenciar la variable session causarn unerror en el momento de traducir la pgina JSPa un servlet.
-
JSP: Objetos predefinidos APPLICATION:
El ServletContext obtenido mediantegetServletConfig().getContext()
CONFIG: El objeto ServletConfig. El objeto ServletConfig.
PAGECONTEXT: PageContext nuevo contexto adems de Session yServletContext. Permite acceder a writer especificopara JSP y establecer atributos en mbito depgina.
-
Directivas Las directivas son mensajes al contenedor de JSP
Ejemplos:ElementoElemento DescripcinDescripcin
Permite importar clases Java, especificar el tipo de Permite importar clases Java, especificar el tipo de
la respuesta (text/html por omisin), etcterala respuesta (text/html por omisin), etctera
Permite incluir otros ficheros antes de que la Permite incluir otros ficheros antes de que la
pgina sea traducida a un servletpgina sea traducida a un servlet
Declara una biblioteca de etiquetas con Declara una biblioteca de etiquetas con accionesacciones
personalizadas para ser utilizadas en la pginapersonalizadas para ser utilizadas en la pgina
Forma general:
-
JSP: Directiva page import="package.class o import="packg.class1,...,packg.classN". Permite especificar los paquetes que deberan ser importados. El atributo import es el nico que puede aparecer mltiples veces.
ContentType = "MIME-Type" o contentType = ContentType = "MIME-Type" o contentType = "MIME-Type; charset = Character-Set" Especifica el tipo MIME de la salida. El valor por defecto es text/html. Tiene el mismo valor que el scriptlet usando response.setContentType.
isThreadSafe = "true|false". True (por defecto) indica procesamiento del servletnormal, mltiples peticiones pueden procesarse simultneamente con un slo ejemplar del servlet( el autor sincroniza los recursos compartidos). Un valor de false indica que el servlet debera implementar SingleThreadModel.
-
JSP: Directiva page session = "true|false".
True (por defecto) indica que la variable predefinida session (del tipo HttpSession) debera unirse a la sesin existente si existe una, si no existe se debera crear una nueva sesin para unirla. False indica que no se usarn sesiones, y los intentos de acceder a la se usarn sesiones, y los intentos de acceder a la variable session resultarn en errores en el momento en que la pgina JSP sea traducida a un servlet.
buffer = "sizekb|none".Esto especifica el tamao del buffer para el JspWriter out. El valor por defecto es especfico del servidor y debera ser de al menos 8kb.
autoflush = "true|false".True (por defecto) indica que el buffer debera descargase cuando est lleno. Un valor de false, raramente utilizado, indica que se debe lanzar una excepcin cuando el buffer se sobrecargue. Un valor de false es ilegal cuando usamos buffer="none".
-
JSP: Directiva page extends="package.class".
Esto indica la superclase del servlet que se va a generar. Debemos usarla con extrema precaucin, ya que el servidor podra utilizar una superclase personalizada.
info = "message".Define un string que puede usarse para ser recuperado mediante el mtodo getServletInfo. el mtodo getServletInfo.
errorPage = "url".Especifica una pgina JSP que se debera procesar si se lanzar cualquier Throwable pero no fuera capturado en la pgina actual.
isErrorPage = "true|false".Indica si la pgina actual acta o no como pgina de error de otra pgina JSP. El valor por defecto es false.
language = "java".Esto est pensado para especificar el lenguaje a utilizar. Por ahora, no debemos precuparnos por l ya que java es tanto el valor por defecto como la nica opcin legal.
-
Ejemplo directiva page Modificar la pgina de saludo para que en lugar de hacer referencia directamente a java.util.Date importe el paquete java.util
Juego de Caracteres UNICODE latin-1
-
JSP: Directiva include Permite incluir ficheros en el momento en que la pgina JSP es traducida a un servlet.
Los contenidos del fichero incluido son Los contenidos del fichero incluido son analizados como texto normal JSP y as pueden incluir HTML esttico, elementos de script, directivas y acciones.
Uso: Barras de navegacin, copyright, etc.
-
Ejemplo: directiva include
-
Directiva taglib
Declara que la pgina usa una librera de tags (acciones)
...
Identifica la librera por su URI Le asocia un prefijo para usar en el cdigo de la JSP
Syntax
...
...
-
Directiva taglib uri =taglib.tld
Absoluto o relativo. Permite especificar el fichero de descripcin de la librera (.tld)
tagdir = myTags Especifica el directorio bajo /WEB-INF/tags/ en el Especifica el directorio bajo /WEB-INF/tags/ en el cual hay ficheros de tags (.tag tagx) que no estn empaquetados en bibliotecas de tags
prefix = c (fmt, etc). Prefijo que permite distinguir acciones cuando se importan varias bibliotecas
-
JSP: Acciones
Usan construcciones de sntaxis XML para controlar el comportamiento del motor de Servlets. Podemos insertar un fichero dinmicamente, reutilizar componentes JavaBeans, reenviar al usuario a otra JavaBeans, reenviar al usuario a otra pgina, etc.
Tipos de acciones Estndar A medida JSTL
Nota: Los elementos XML, al contrario que los HTML, son sensibles a las maysculas
-
JSP: Acciones ejemplo
JSP
HTML generado
-
Acciones Elementos XML que realizan determinadas acciones. JSP define las siguientes (estndar):
ElementoElemento DescripcinDescripcin
Permite usar un Permite usar un JavaBeanJavaBean desde la pginadesde la pgina
Obtiene el valor de una propiedad de un componente JavaBean Obtiene el valor de una propiedad de un componente JavaBean
y lo aade a la respuestay lo aade a la respuesta
Establece el valor de una propiedad de un JavaBeanEstablece el valor de una propiedad de un JavaBean
Incluye la respuesta de un servlet o una pgina JSPIncluye la respuesta de un servlet o una pgina JSP
Redirige a otro servlet o pgina JSPRedirige a otro servlet o pgina JSP
Enva un parmetro a la peticin redirigida a otro servlet o JSP Enva un parmetro a la peticin redirigida a otro servlet o JSP
mediante o mediante o
Genera el HTML necesario para ejecutar un Genera el HTML necesario para ejecutar un appletapplet
-
JSP: Accin include Permite insertar ficheros en una pginaque est siendo generada.
La sntaxis se parece a esto:
Al contrario que la directiva
-
JSP: Accin useBean
Permite cargar y utilizar un JavaBean en la pgina JSP yas utilizar la reusabilidad de las clases Java.
Esto significa "usa un objeto de la clase especificada porclass, y nelo a una variable con el nombre especificadopor id".
Ahora podemos modificar sus propiedades mediante, o usando un scriptlet y llamando aun mtodo de id. Para recoger una propiedad se usa
-
JSP: Accin useBean id
Da un nombre a la variable que referenciar el bean. Se usar unobjeto bean anterior en lugar de instanciar uno nuevo si se puedeencontrar uno con el mismo id y scope.
class Designa el nombre cualificado completo del bean.
scope scope Indica el contexto en el que el bean debera estar disponible. Hay
cuatro posibles valores: page, request, session, y application. type
Especifica el tipo de la variable a la que se referir el objeto.
beanName Da el nombre del bean, como lo suministraramos en el mtodo
instantiate de Beans. Esta permitido suministrar un type y unbeanName, y omitir el atributo class.
-
JSP: Acciones: setProperty
Para obtener valores de propiedades de los beans que se han referenciado anteriormente.
2 usos: 2 usos: Despues de un useBean.
...
-
JSP: Acciones: setProperty
Dentro de un useBean
-
JSP: Acciones: setProperty name:
Este atributo requerido designa el bean cuya propiedad va a serseleccionada. El elemento jsp:useBean debe aparecer antes delelemento jsp:setProperty.
property: Este atributo requerido indica la propiedad que queremos
seleccionar.seleccionar. Hay un caso especial: un valor de "*" significa que todos los
parmetros de la peticin cuyos nombres correspondan connombres de propiedades del Bean sern pasados a los mtodosde seleccin apropiados.
value: Este atributo opcional especifica el valor para la propiedad. Los
valores string son convertidos automticamente a lo quecorresponda mediante el mtodo estndard valueOf. No sepueden usar value y param juntos, pero si est permitido no usarninguna.
-
JSP: Acciones: setProperty param
Este parmetro opcional designa el parmetro de lapeticin del que se debera derivar la propiedad.
Si la peticin actual no tiene dicho parmetro, no sehace nada: el sistema no pasa null al mtodoseleccionador de la propiedad. As, podemos dejarseleccionador de la propiedad. As, podemos dejarque el bean suministre los valores por defecto,sobrescribindolos slo cuando el parmetro diceque lo haga.
- Ejemplo de uso
- Ejemplo de uso
-
Comunicacin entre jspPosibles mbitos
-
Acciones JSTL, ejemplo
Con tag-libs no hay scriplet
-
Desarrollo de TAG-LIBs
Podemos desarrollar nuestras propias etiquetas de accin
Para ello:Desarrollamos la clase que implementa Desarrollamos la clase que implementa la accin
Describimos la etiqueta en la TLD Para usarla, la damos de alta en el web.xml (puesto que no es una etiqueta estndar).
-
Desarrollo de TAG-LIBs Desarrollo de la clase
(manejador del tag): Los interfaces y clases necesarios estn definidos en javax.servlet.jsp.tagext
Tag Define los mtodos necesarios para implementar cualquier accin
IterationTag Extiende el javax.servlet.jsp.tagext Tres interfaces Y dos clases de soporte:
TagSupport BodyTagSupport
IterationTag Extiende el interface Tag y define los mtodos necesarios para iterar sobre los elementos del cuerpo del tag
BodyTag Extiende el IterationTag y define los mtodos para acceder al cuerpo del tag
-
Desarrollo de TAG-LIBs
-
Ejemplo: implementacin de tagsignature
JSP
HTML generado
-
Ejemplo: implementacin de tagPasos
Crear una nueva clase extiende TagSupport Aadir atributos y sus setters Implementar mtodos doEndTag() Implementar mtodos doEndTag()
Crear archivo TLD Copiar en WEB-INF/tlds
Registrar TagLib en web.xml Declararla en JSP
-
Ejemplo: implementacin de tagpaso: Crear la clase
-
Ejemplo: implementacin de tagpaso: Crear archivo TLD
-
Ejemplo: implementacin de tagpaso: Registrar en web.xml
- Ejemplo: implementacin de tagpaso:
-
Referencias
www.javasoft.com www.theserverside.com http://paginaspersonales.deusto.es/dipina/dipina/
Java Server Pages [2nd Edition]OReilly