Universidad Nacional de Colombia - PowerPoint PPT Presentation

1 / 24
About This Presentation
Title:

Universidad Nacional de Colombia

Description:

... para realizar Tag Handlers iterativos. Universidad Nacional de ... La clase TagSupport est destinada a ser usada como la clase base para los Tag Handlers ... – PowerPoint PPT presentation

Number of Views:63
Avg rating:3.0/5.0
Slides: 25
Provided by: Barra7
Category:

less

Transcript and Presenter's Notes

Title: Universidad Nacional de Colombia


1
  • Desarrollo de aplicaciones en Internet
  • Etiquetas Personalizadas

2
Por qué aparecieron las etiqueta personalizada s?
  • Un Java bean es diseñado pensando en
    reusabilidad, lo cual significa que el empleo de
    un bean para la salida de etiquetas HTML
    directamente no es recomendable.

3
Ventajas de las etiqueta personalizada s
  • Las etiquetas personalizadas poseen algunas
    ventajas que no están presentes en los beans,
    estas son
  • Tienen acceso a los objetos disponibles en las
    páginas JSP
  • Pueden usar atributos constantemente
  • A pesar de las anteriores ventajas de las
    etiquetas personalizadas no debe pensarse en que
    estas puedan reemplazar completamente a los Java
    beans ni que el uso de estos en páginas JSP es
    obsoleto.

4
Etiquetas Personalizadas vs. JavaBeans
implementación
presentación
Etiquetas Personalizadas
JavaBeans
HTML y JSP
5
Pasos para crear una Etiqueta Personalizada
  • Crear el Archivo descriptor TLD
  • Adicionar la Taglib en la JSP
  • Definir el taglib en el Web.xml
  • Crear la Clase java que maneja el Tag (Tag
    Handler)

6
1. Archivo Descriptor de TLD
  • Un archivo Tag Library Descriptor es un documento
    que define una librería de etiquetas y sus tag.
  • lt?xml version"1.0" encoding"ISO-8859-1" ?gt
  • lt!DOCTYPE taglib
  • PUBLIC "-//Sun Microsystems, Inc.//DTD
    JSP Tag Library 1.2//EN"
  • "http//java.sun.com/dtd/web-jsptaglibrary
    _1_2.dtd"gt
  • lttaglibgt
  • lttlibversiongt1.2lt/tlibversiongt
  • ltjsp-versiongt1.2lt/jsp-versiongt
  • ltshortnamegtlt/shortnamegt
  • lttaggt
  • ltnamegtmitaglt/namegt
  • lttagclassgtco.edu.unal.dai.MiTaglt/tagclassgt
  • lt/taggt
  • lt/taglibgt

7
Archivo Descriptor de TLD
  • Un archivo TLD contiene el elemento raíz lttaglibgt
    . Este elemento puede tener los siguientes
    subelemetos
  • lttlibversiongt
  • ltjspversiongt
  • ltshortnamegt
  • ltinfo gt
  • lturigt
  • lttaggt
  • los elementos tlibversion, jspversion y
    shortname son requeridos

8
Sub-Elementos de taglib
  • lttlibversiongt Especifica el número de la versión
    de la librería de etiquetas con el siguiente
    formato
  • (0-9) ("." 0-9)? ("." 0-9)? ("." 0-9)?
  • ltjspversiongt Especifica el número de la versión
    de JSP que soporte taglibs empleada
  • (0-9) ("." 0-9)? ("." 0-9)? ("." 0-9)?
  • (por defecto 1.2)
  • ltshortnamegt Especifica un nombre corto para la
    librería de etiquetas
  • ltinfogt Información usada para propósitos de
    documentación
  • lturigt Especifica el link a un recurso adicional
    de documentación para la librería de etiquetas

9
El elemento lttaggt
  • lttaggt es el más importante en una librería de
    etiquetas
  • Se puede especificar más de un elemento lttaggt en
    el mismo archivo TLD
  • Este elemento especifica un etiqueta
    personalizada en la librería de etiquetas
  • Este elemento puede tener los sub-elementos
  • ltnamegt Identificador del Tag
  • lttagclassgt Clase que va a procesar el Tag
  • ltbodycontentgt Contenido del tag empty, JSP o
    tagdependent
  • ltinfogt Información descriptiva
  • ltattributegt Atributo del tag. name, required,
    rtextprvalue

10
2. Adición del Taglib en la JSP
  • Para usar un etiqueta personalizada en una
    página JSP primero se debe usar una directiva de
    que tiene la siguiente sintasix
  • lt_at_ taglib uriuri_Taglib" prefixprefijo" gt
  • Con una directiva Taglib se puede usar un
    etiqueta personalizada.
  • Con el siguiente formato si no tiene contenido en
    el cuerpo
  • ltprefijoNombreTag/gt
  • Con el siguiente formato si el tag tiene
    contenido en el cuerpo
  • ltprefijoNombreTaggt ..cuerpo.. lt/prefijoNombreTag
    gt

11
Adición del Taglib en la JSP
  • Se pueden pasar atributos a la clase que maneja
    el tag por medio de los de los atributos en la
    etiqueta personalizada
  • nombAtributovalor"

12
3. Definir el Taglib en el Web.xml
  • lt?xml version"1.0" encoding"ISO-8859-1" ?gt
  • ltweb-appgt
  •  
  • lttaglibgt
  •   lttaglib-urigt/miTldlt/taglib-urigt
  •   lttaglib-locationgt/WEB-INF/archivo.tldlt/taglib-lo
    cationgt
  •  lt/taglibgt
  •   lt/web-appgt

13
4. Clase para el Manejo del Tag
  • Se conoce como Tag Handler
  • Clase java relacionada con una etiqueta
    personalizada y se invoca cada vez que el
    contenedor JSP encuentra la etiqueta
    personalizada.
  • Implementa la interfaz Tag. Se deben implementar
    los siguientes métodos
  • doStartTag
  • doEndTag
  • getParent
  • setParent
  • setPageContext
  • release

14
El ciclo de vida del Tag Handler
  • El contenedor JSP obtiene una instancia del tag
    handler o crea una nueva y llama al
    setPageContext, pasando un objeto PageContext que
    representa la página JSP donde se encuentra la
    etiqueta personalizada
  • El setPageContext tiene la siguiente estructura
  • public void setPageContext(PageContext
    pageContext)

15
El ciclo de vida del Tag Handler
  • El contenedor JSP llama al método setParent
  • public void setParent(Tag parent)
  • El contenedor JSP establece todos los atributos
    en las etiquetas personalizadas (si los hay)
  • El contenedor JSP llama al doStartTag , cuya
    estructura es la siguiente
  • public int doStartTag() throws javax.servlet.jsp.J
    spException

16
El ciclo de vida del Tag Handler
  • 5. Teniendo en cuenta el valor retornado por el
    método doStartTag, el contenedor JSP llama al
    método doEndTag
  • public int doEndTag() throws javax.servlet.jsp.Jsp
    Exception
  • 6. El contenedor JSP llama al método release,
  • public void release()
  • 7. El contenedor JSP retorna la instancia del
    tag handler para su uso futuro

17
Interfaz Tag
18
Interfaz IterationTag
  • La interface IterationTag extiende de la
    interface Tag
  • Adiciona un nuevo método llamado doAfterBody
  • Adiciona la constante EVAL_BODY_AGAIN
  • Se emplea para realizar Tag Handlers iterativos

19
BodyContent y BodyTag
  • Una etiqueta JSP puede tener contenido en el
    cuerpo así como la siguiente
  • lt_at_ taglib uri"/miTld" prefix"x"gt
  • ltxelTaggtThis is the body contentlt/xelTaggt
  • Cuando se usan las interfaces Tag o IterationTag
    no se puede manipular el contenido del cuerpo de
    la etiqueta porque no se tiene acceso.
  • Si se quiere modificar el contenido del cuerpo de
    una etiqueta personalizada se deben emplear la
    interfaz BodyTag y la clase BodyContent del
    paquete

20
La Interfaz BodyTag
  • La Interface BodyTag extiende de la interface
    IterationTag.
  • Adiciona los métodos doInitBody y setBodyContent
  • Adiciona las constantes EVAL_BODY_BUFFERED y
    EVAL_BODY_TAG
  • public void setBodyContent(BodyContent
    bodyContent)
  • public void doInitBody() throws
    javax.servlet.jsp.JspException

21
La clase BodyContent
  • La clase BodyContent es una clase abstracta que
    extiende de la clase javax.servlet.jsp.JspWriter
  • La clase BodyContent representa el contenido del
    cuerpo de la etiqueta personalizada si lo hay.
  • Se obtiene el contenido del cuerpo de la etiqueta
    personalizada del método setBodyContent en la
    interfaz BodyTag.

22
Las clases de soporte
  • Aunque las interfaces Tag, IterationTag, and
    BodyTag proporcionan muchas posibilidades para
    escribir Tag Handlers, también poseen una
    desventaja , se debe proveer implementación para
    todos los métodos así no sean usados.
  • Para resolver este problema el paquete
    javax.servlet.jsp.tagext suministra unas clases
    soporte que implementan estas interfaces, estas
    son
  • TagSupport
  • BodyTagSupport

23
La clase TagSupport
  • La clase TagSupport implementa la interface
    IterationTag y presenta la siguiente estructura
  • public class TagSupport implements
    IterationTag, java.io.Serializable
  • La clase TagSupport está destinada a ser usada
    como la clase base para los Tag Handlers

24
La clase BodyTagSupport
  • La clase BodyTagSupport implementa la interface
    BodyTag y presenta la siguiente estructura
  • public class BodyTagSupport extends TagSupport
    implements BodyTag
  • Esta clase tiene el propósito de ser una subclase
    para los Tag Handlers que necesitan implementar
    la interfaz BodyTag
Write a Comment
User Comments (0)
About PowerShow.com