Tag Libraries

  • 4,179 views
Uploaded on

 

More in: Technology
  • 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
4,179
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
144
Comments
0
Likes
1

Embeds 0

No embeds

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/