Tag Libraries
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
6,887
On Slideshare
6,869
From Embeds
18
Number of Embeds
3

Actions

Shares
Downloads
144
Comments
0
Likes
1

Embeds 18

http://www.slideshare.net 9
http://www.linkedin.com 7
http://coderwall.com 2

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Tag Libraries Herval Freire de Albuquerque Júnior Junho de 2002
  • 2. Introdução - Taglibs
    • Conjuntos de tags XML personalizadas , projetadas para utilização em páginas JSP
    • “ Um mecanismo portável para encapsular
    • funcionalidades reutilizáveis em páginas da Web”
  • 3. Contextos de Utilização
    • Geração de trechos de código HTML
    • Acesso a informações transientes (atributos de sessão ou requisição)
    • Acesso a recursos J2EE (Javabeans, EJBs, JavaMail)
    • Formatação de Apresentação (datas, acesso a atributos)
    • Encapsulamento de operações lógicas (laços, condições, iterações)
    • Manipulação de documentos XML
  • 4. Especificação JSP 1.0
    • Namespace padrão de taglibs
      • Tags para acesso a Javabeans e objetos em contexto
        • useBean
        • s etProperty
        • getProperty
      • Tags para inclusão de páginas e conteúdos
        • Include
        • Forward
        • Plugin
  • 5. Scriptlets versus Taglibs
    • <html>
    • <head><title>…</title></html>
    • <body>
    • <%
    • ObjetoBla bla = new ObjetoBla();
    • bla.setNome(“Herval”);
    • %>
    • Hello <%= bla.getNome() %> !!
    • <br>
    • <%
    • ObjetoBla meuObjeto = (ObjetoBla)session.getAttribute(“meuObjeto”);
    • %>
    • Hello <%= meuObjeto.getNome() %> !!
    • </body>
    • </html>
    Acessando objetos utilizando Scriptlets
  • 6. Scriptlets versus Taglibs
    • <html>
    • <head><title>…</title></html>
    • <body>
    • <jsp:useBean id=“bla&quot; class=“ObjetoBla” scope=“page&quot;>
    • <jsp:setProperty name=“bla” property=“nome” value=“Herval”/>
    • Hello <jsp:getProperty name=“bla&quot; property=&quot;nome&quot;/>
    • <br>
    • <jsp:useBean id=“meuObjeto&quot; class=“ObjetoBla” scope=“session&quot;>
    • Hello <jsp:getProperty name=“meuObjeto&quot; property=&quot;nome&quot;/>
    • </body>
    • </html>
    Acessando objetos utilizando Taglibs
  • 7. Taglibs Customizadas
    • Introduzidas na especificação JSP 1.1
      • Capacidade de desenvolvimento de tags personalizadas
      • Tags capazes de gerar código HTML ou encapsular regras de negócio e condições
      • Acesso uniformizado a recursos e objetos
      • Remoção de código Java dos arquivos JSP
      • Reutilização ( Building blocks )
      • Acesso ao contexto das páginas, request , session , etc
  • 8. Tag Handlers
    • Objetos que definem o comportamento de uma tag
      • Tags com corpo
        • Implements BodyTag
      • Tags sem corpo
        • Implements Tag
  • 9. Utilização das Taglibs customizadas
    • Webdesigners e especialistas em interface utilizam-se das taglibs na apresentação
      • Interface uniformizada
      • Modificações nas tags refletem-se em todas as páginas que as utilizam
    • Especialistas em lógica de negócio desenvolvem tags para acessar dados e serviços
      • Acesso correto a dados e serviços
      • Encapsulamento de objetos e de acesso aos mesmos
  • 10. Criação de uma Taglib
    • Escreva a classe de tag ( tag handler )
    • Defina um descritor de tag library (tld)
    • Registre a taglib no servidor web
    • Importe a taglib na página
    • Utilize as tags customizadas
  • 11. Criando uma Taglib personalizada
    • Classes de tags personalizadas
      • Implementam javax.servlet.jsp.tagext.Tag
    • Descritor
      • Arquivo XML com descrição das tags (.tld)
  • 12. Uma classe de tag simples
    • package javaone.tag;
    • import java.text.*;
    • import java.util.*;
    • import javax.servlet.jsp.*;
    • public class DateTag extends javax.servlet.jsp.tagext.TagSupport {
    • public int doStartTag() throws JspException {
    • Locale loc = pageContext.getRequest().getLocale();
    • DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, loc);
    • try {
    • pageContext.getOut().write(dateFormat.format(date));
    • } catch (java.io.IOException ioe) {
    • throw new JspException(ioe.getMessage());
    • }
    • return SKIP_BODY;
    • }
    • }
  • 13. Descritor myTaglib.tld
    • <?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot; ?>
    • <!DOCTYPE taglib PUBLIC &quot;-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN”
    • &quot;http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd&quot;>
    • <taglib>
    • <tlib-version>1.0</tlib-version>
    • <jsp-version>1.2</jsp-version>
    • <short-name>javaone2001-taglib</short-name>
    • <uri>http://www.concise.co.uk/javaone2001-taglib</uri>
    • <description>Tag library for JavaOne 2001 BOF examples</description>
    • <tag>
    • <name>date</name>
    • <tag-class>javaone.tag.DateTag</tag-class>
    • <body-content>empty</body-content>
    • <description>Inserts the date into the page</description>
    • </tag>
    • </taglib>
  • 14. Configuração da aplicação web (web.xml)
    • <?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?>
    • <!DOCTYPE web-app PUBLIC &quot;-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN”
    • &quot;http://java.sun.com/j2ee/dtds/web-app_2_3.dtd&quot;>
    • <web-app>
    • ...
    • <taglib>
    • <taglib-uri>/javaoneTaglib</taglib-uri>
    • <taglib-location>/WEB-INF/tlds/myTaglib.tld</taglib-location>
    • </taglib>
    • ...
    • </web-app>
  • 15. Utilizando uma taglib personalizada
    • <html>
    • <head>
    • <title>…</title>
    • <%@ taglib uri=&quot;/javaoneTaglib&quot; prefix=&quot;j1” %>
    • </head>
    • <body>
    • <h1>
    • The date is <j1:date/>
    • </h1>
    • </body>
    • </html>
  • 16. Vantagens das Taglibs sobre os JavaBeans
    • Tags personalizadas não necessitam de chamadas a construtores
    • Taglibs têm acesso automático ao contexto das páginas
  • 17. Sugestão de implementação
    • Taglib CAP – Controle de Apresentação Politec
    • Conjunto de tags customizadas proprietário
    • Motivação: acelerar o processo de desenvolvimento de páginas JSP na Politec - João Pessoa
  • 18. Taglib CAP – Utilizações Previstas
    • Preenchimento automático de campos em formulários
      • Recuperação transparente de dados em sessão, request ou controle de apresentação
    • Encapsulamento de validação de campos com Javascripts
      • Redução e uniformização do código HTML através de encapsulamento de chamadas repetidas
    • Exibição automática de fragmentos de HTML padronizados (linhas de status , links “voltar” e “ajuda”)
      • Modificações no padrão afetariam todas as páginas do conjunto
  • 19. Taglib CAP – Desenvolvimento Atual
    • Tag < cap:input/>
      • Provê recuperação automática do conteúdo de campos armazenados no Controle de Apresentação
  • 20. Taglib CAP Exemplo de recuperação de parâmetro
    • <html>
    • <head>
    • <title>…</title>
    • <%
    • Elemento controleApresentacao = (Elemento)session.getAttribute(ServletATF.CA_CONTROLE_APRESENTACAO);
    • String hidStatus = controleApresentacao.getValor(“hidStatus”);
    • if (hidStatus == null) {
    • hidStatus = “”;
    • }
    • %>
    • </head>
    • <body>
    • <h1>
    • <form>
    • <input type=“hidden” name=“hidStatus” value=“<%=hidStatus%>” >
    • </form>
    • </h1>
    • </body>
    • </html>
    Exemplo 1: Utilização de Controle de Apresentação
  • 21. Taglib CAP Exemplo de recuperação de parâmetro
    • <html>
    • <head>
    • <%@ taglib uri=&quot;/capTaglib&quot; prefix=“cap” %>
    • <title>…</title>
    • </head>
    • <body>
    • <h1>
    • <form>
    • <cap:input type=“hidden” name=“hidStatus” />
    • </form>
    • </h1>
    • </body>
    • </html>
    Exemplo 2: Utilização de Controle de Apresentação + Taglib CAP
  • 22. Taglib CAP Idéias para implementação
    • <cap:operacaoConcluida>
      • Texto de operação bem sucedida...
    • </cap:operacaoConcluida>
      • Encapsulamento de testes condicionais sobre sucesso de uma operação
  • 23. Referências
    • Encapsulate reusable functionality in JSP tags : build your own custom JSP tag with Tomcat
      • http://www.javaworld.com/javaworld/jw-08-2000/jw-0811-jsptags.html
    • JavaServer Pages home
      • http://java.sun.com/products/jsp/
      • http://java.sun.com/products/jsp/taglibraries.html
    • Standard tag library
      • http://java.sun.com/aboutJava/communityprocess/j
      • sr/jsr_052_jsptaglib.html
    • Struts
      • http://jakarta.apache.org/struts/