Tag Libraries Herval Freire de Albuquerque Júnior Junho de 2002
Introdução - Taglibs <ul><li>Conjuntos de  tags  XML personalizadas ,  projetadas para utilização em páginas JSP </li></ul...
Contextos de Utilização <ul><li>Geração de trechos de código HTML </li></ul><ul><li>Acesso a informações transientes (atri...
Especificação JSP 1.0 <ul><li>Namespace  padrão de taglibs </li></ul><ul><ul><li>Tags  para acesso a Javabeans e objetos e...
Scriptlets  versus  Taglibs <ul><li><html> </li></ul><ul><li><head><title>…</title></html> </li></ul><ul><li><body> </li><...
Scriptlets  versus  Taglibs <ul><li><html> </li></ul><ul><li><head><title>…</title></html> </li></ul><ul><li><body> </li><...
Taglibs  Customizadas <ul><li>Introduzidas na especificação JSP 1.1 </li></ul><ul><ul><li>Capacidade de desenvolvimento de...
Tag Handlers <ul><li>Objetos que definem o comportamento de uma  tag </li></ul><ul><ul><li>Tags com corpo </li></ul></ul><...
Utilização das  Taglibs  customizadas <ul><li>Webdesigners  e especialistas em interface utilizam-se das  taglibs  na apre...
Criação de uma Taglib <ul><li>Escreva a classe de  tag  ( tag   handler ) </li></ul><ul><li>Defina um descritor de  tag   ...
Criando uma  Taglib  personalizada <ul><li>Classes de  tags  personalizadas </li></ul><ul><ul><li>Implementam  javax.servl...
Uma classe de  tag  simples <ul><li>package javaone.tag; </li></ul><ul><li>import java.text.*; </li></ul><ul><li>import ja...
Descritor  myTaglib.tld <ul><li><?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot; ?> </li></ul><ul><li><!DOCTY...
Configuração da aplicação web (web.xml) <ul><li><?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?> </li></ul>...
Utilizando uma taglib personalizada <ul><li><html> </li></ul><ul><li><head> </li></ul><ul><li><title>…</title> </li></ul><...
Vantagens das Taglibs sobre os JavaBeans <ul><li>Tags personalizadas não necessitam de chamadas a construtores </li></ul><...
Sugestão de implementação <ul><li>Taglib CAP – Controle de Apresentação Politec </li></ul><ul><li>Conjunto de  tags  custo...
Taglib CAP – Utilizações Previstas <ul><li>Preenchimento automático de campos em formulários </li></ul><ul><ul><li>Recuper...
Taglib CAP – Desenvolvimento Atual <ul><li>Tag < cap:input/> </li></ul><ul><ul><li>Provê recuperação automática do conteúd...
Taglib CAP Exemplo de recuperação de parâmetro <ul><li><html> </li></ul><ul><li><head> </li></ul><ul><li><title>…</title> ...
Taglib CAP Exemplo de recuperação de parâmetro <ul><li><html> </li></ul><ul><li><head> </li></ul><ul><li><%@ taglib uri=&q...
Taglib CAP Idéias para implementação <ul><li><cap:operacaoConcluida> </li></ul><ul><ul><li>Texto de operação bem sucedida....
Referências <ul><li>Encapsulate reusable functionality in JSP tags : build your own custom JSP tag with Tomcat </li></ul><...
Upcoming SlideShare
Loading in...5
×

Tag Libraries

4,243

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,243
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
145
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Tag Libraries

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

    Clipping is a handy way to collect important slides you want to go back to later.

×