Tag Libraries
Upcoming SlideShare
Loading in...5
×
 

Tag Libraries

on

  • 6,781 views

 

Statistics

Views

Total Views
6,781
Views on SlideShare
6,763
Embed Views
18

Actions

Likes
1
Downloads
144
Comments
0

3 Embeds 18

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

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Tag Libraries Tag Libraries Presentation Transcript

    • Tag Libraries Herval Freire de Albuquerque Júnior Junho de 2002
    • 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”
    • 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
    • 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
    • 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
    • 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
    • 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
    • Tag Handlers
      • Objetos que definem o comportamento de uma tag
        • Tags com corpo
          • Implements BodyTag
        • Tags sem corpo
          • Implements Tag
    • 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
    • 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
    • Criando uma Taglib personalizada
      • Classes de tags personalizadas
        • Implementam javax.servlet.jsp.tagext.Tag
      • Descritor
        • Arquivo XML com descrição das tags (.tld)
    • 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;
      • }
      • }
    • 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>
    • 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>
    • 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>
    • 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
    • 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
    • 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
    • Taglib CAP – Desenvolvimento Atual
      • Tag < cap:input/>
        • Provê recuperação automática do conteúdo de campos armazenados no Controle de Apresentação
    • 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
    • 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
    • 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
    • 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/