Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Estructuras datos v1, Diapositivas de Estructuras de Datos y Algoritmos

Estructuras de datos, Estructuras de datos, Estructuras de datos,

Tipo: Diapositivas

2019/2020

Subido el 22/10/2020

usuario desconocido
usuario desconocido 🇲🇽

5

(1)

1 documento

1 / 56

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Tema 2b - Etiquetas
Personalizadas JSP (JSP Custom
Tags)
Dr. Diego Lz. de Ipiña Gz. de Artaza
http://paginaspersonales.deusto.es/dipina
http://paginaspersonales.deusto.es/dipina/cursos/J2EECesine.
zip
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38

Vista previa parcial del texto

¡Descarga Estructuras datos v1 y más Diapositivas en PDF de Estructuras de Datos y Algoritmos solo en Docsity!

Tema 2b - Etiquetas

Personalizadas JSP (JSP Custom

Tags)

Dr. Diego Lz. de Ipiña Gz. de Artaza http://paginaspersonales.deusto.es/dipina http://paginaspersonales.deusto.es/dipina/cursos/J2EECesine. zip [email protected]

Problemas con JSPs

JavaBeans nos permiten separar la parte de

presentación de una página JSP de la

implementación de una regla de negocio

 (^) Sin embargo, sólo 3 elementos acción en JSP se pueden usar para acceder a un bean:  (^) jsp:useBean  (^) jsp:getProperty  (^) jsp:setProperty  (^) Por tanto a menudo tenemos que incluir código en un JSP  (^) JSP (1.1 en adelante) define custom tags que pueden ser usadas para definir acciones propietarias, de manera que en nuestro JSP únicamente tenemos código de marcado

Nuestra primera Etiqueta

Personalizada I

Objetivo: construir una

etiqueta personalizada

que envía el siguiente

string al browser:

“Hello from the custom

tag”

Nuestra primera Etiqueta

Personalizada II

 Los siguientes 6 pasos han de seguirse (bajo subdirectorio EjemploCustomTag de webapps)

  1. Crear un fichero TLD con nombre taglib.tld, y guardarlo en WEB-INF
  2. Escribir, compilar y depositar la clase MyCustomTag.java debajo del directorio WEB-INF/classes
  3. Modificar el fichero web.xml añadiendo un elemento
  4. Crear un JSP (SimplePage.jsp) que utiliza la etiqueta personalizada definida
  5. Rearrancar tu contenedor de servlets (Tomcat)

Nuestra primera Etiqueta

Personalizada IV

  1. Escribir, compilar y depositar la clase MyCustomTag.java debajo del directorio WEB-INF/classes package es.deusto.customtags.example1; import javax.servlet.jsp.; import javax.servlet.jsp.tagext.; public class MyCustomTag extends TagSupport { public int doEndTag() throws JspException { JspWriter out = pageContext.getOut(); try { out.println("Hello from the custom tag."); } catch (Exception e) { } return super.doEndTag(); } }

Nuestra primera Etiqueta

Personalizada V

  1. Modificar el fichero web.xml añadiendo un elemento . Este elemento debe aparecer después de los elemetos y <servlet-mapping>
template /myTLD /WEB-INF/taglib.tld

Descriptor de la Librería de

Etiquetas (Tag Library

Descriptor)

 Fichero XML que define una librería de tags y sus etiquetas. Consta de:  Prólogo XML como todo documento XML  El elemento raíz , que tiene como sub-elementos:  (^) tlib-version  versión de la librería de etiquetas  jsp-version  la versión de JSP, actualmente 2.  shortname  nombre corto para la librería  description  información para documentación  (^) uri  enlace a más información sobre tag library  (^) tag  elemento más importante, puede haber varios y tiene sub-elementos

Elemento del

descriptor de una librería

de etiquetas

 (^) Puede tener los siguientes sub-elementos (name and tag-class son los únicos obligatorios):  (^) name  identificador de la etiqueta  (^) tag-class  nombre de la clase completo que realiza el procesamiento de esta etiqueta  (^) tei-class  clase de ayuda de esta etiqueta  (^) body-content  el tipo de cuerpo de una etiqueta:  (^) empty  no hay cuerpo  (^) JSP  cuerpo es un conjunto de elementos  (^) tagdependent  cuerpo debe ser interpretado por la etiqueta  (^) description  (^) attribute: cero o más atributos que puede tener tres subelementos:  (^) name (obligatorio)  (^) required: true o false (valor por defecto false)  (^) rtexprvalue: determina si el valor de este atributo se puede determinar en tiempo de ejecución  (^) …

La API de Etiquetas

Personalizadas

 (^) Paquete javax.servlet.jsp.tagext  Un manejador de etiquetas (Tag Handler) es una clase que está ligada a una etiqueta personalizada y es invocada cada vez que el contenedor de JSPs encuentra la etiqueta.  En JSP 1.2, la clase javax.servlet.jsp.tagext tiene 4 interfaces y 12 clases  (^) Los dos interfaces más importantes son Tag y BodyTag  (^) Estos interfaces dictan el ciclo de vida de un manejador de etiquetas

Manejadores de etiquetas

(Tag Handlers)

 Un manejador de etiquetas tiene acceso a un API a través del cual se puede comunicar con una página JSP. El punto de entrada a la API es el objeto javax.servlet.jsp.PageContext, a través del cual el TagHandler puede recuperar todos los otros objetos implícitos (request, session, and application) accesibles desde una página JSP.  (^) Los objetos implícitos pueden tener atributos con nombre asociados con ellos. Tales atributos son accesibles usando métodos [set|get]Attribute.  Si la etiqueta está anidada, un Tag Handler también tiene acceso al Tag Handler (llamado parent ) de la etiqueta padre.  (^) Un conjunto de clases Tag Handler relacionadas constituyen una tag library y son empaquetadas como un fichero JAR.

Ciclo de vida de un Tag

Handler I

El contenedor JSP llama a los métodos

de un handler en el siguiente orden:

 Obtiene una instancia del pool de TagHandlers o crea uno nuevo. Después llama a setPageContext que representa a la página donde se encontró la custom tag. 

public void setPageContext(PageContext

pageContext)

Ciclo de vida de un Tag

Handler II

 (^) El contenedor de JSP llama a setParent, pasándole el objeto Tag que representa a la etiqueta padre de la etiqueta procesada  (^) public void setParent(Tag parent)  (^) El contenedor de JSP asigna todos los atributos de la etiqueta, usando métodos getter y setter como en JavaBeas. Si se encuentra un atributo temperatura llamará a setTemperatura.  (^) El contenedor llama a doStartTag, que puede devolver Tag.SKIP_BODY (el contenedor no debe procesar el cuerpo de la etiqueta) o Tag.EVAL_BODY_INCLUDE (el contenido del cuerpo deberá ser procesado)  (^) public int doStartTag() throws javax.servlet.jsp.JspException

Usando atributos en una

etiqueta personalizada I

Objetivo: Etiqueta personalizada

para calcular el doble de un

número

El manejador debe definir un

método setNumber para asignar un

atributo al valor

Usando atributos en una

etiqueta personalizada II

package es.deusto.customtags.example2; import javax.servlet.jsp.; import javax.servlet.jsp.tagext.; public class DoublerTag implements Tag { private int number; private PageContext pageContext; public void setNumber(int number) { this.number = number; } public void setParent(Tag t) { } public void setPageContext(PageContext p) { pageContext = p; } public void release() { } public Tag getParent() { return null; } public int doStartTag() { try { JspWriter out = pageContext.getOut(); out.println("Double of " + number + " is " + (2 * number)); } catch (Exception e) { } return EVAL_BODY_INCLUDE; } public int doEndTag() throws JspException { return EVAL_PAGE; } }