0
JavaServer Faces Produtividade em Desenvolvimento
Tópicos Abordados <ul><li>O que JavaServer Faces nos traz? </li></ul><ul><ul><li>Especificações </li></ul></ul><ul><ul><li...
Apresentação <ul><li>Eduardo Bregaida </li></ul><ul><ul><li>Analista de sistemas Java da Tata Consultancy Services do Bras...
O que JavaServer Faces nos traz?
O que JavaServer Faces nos traz? <ul><li>É mais do que um framework, é uma especificação baseada em MVC; </li></ul><ul><li...
Especificações <ul><li>JSF 1.0 e 1.1 – JSR 127 </li></ul><ul><ul><li>Problemas com renderização </li></ul></ul><ul><ul><li...
Managed Beans <ul><li>É uma classe que expões objetos de negócio para camada de apresentação; </li></ul><ul><li>São Regist...
Expression Language - EL <ul><li>É uma poderosa linguagem de expressão (Linguagem de navegação) para acessar propriedades ...
Life Cycle JSF
Life Cycle JSF - Fases <ul><li>São Atendidas pelo Reader Response e Restore Component Tree </li></ul><ul><li>Restore Compo...
Life Cycle JSF - Fases <ul><li>Apply request Values: Os componentes irão extrair seu novo valor dos parâmetros da Request,...
Life Cycle JSF - Fases <ul><li>Process Validations: todos os validadores serão executados, em caso de erro de qualquer val...
Life Cycle JSF - Fases <ul><li>Invoke Application: Os métodos do ManagedBeans são executados e as regras de navegação (Gra...
Roteiro de Uso
Roteiro de Uso <ul><li>Criar um bean que represente o formulário </li></ul><ul><li>Usar f:view e h:form para formulários <...
Exemplo: Passo 1 – Criar um Bean <ul><li>package  br.com.justjava.sgv.cadastro.campanha; </li></ul><ul><li>import  javax.p...
Exemplo: Passo 2 e 3 -  f:view e h:form e Especificar o Action Controller   <ul><li><%@ page contentType=&quot;text/html; ...
Exemplo: Passo 4 – Criar o Controlador <ul><li>public   void   salvar()  { </li></ul><ul><li>Session session = HibernateUt...
Exemplo: Passo 5 – Configurar o faces-config.xml <ul><li><managed-bean> </li></ul><ul><li><managed-bean-name>campanhaHandl...
Exemplo: Passo 6 – Criar o JSP responsável pelo retorno <ul><li><!- - Insiro este <h:form> com a tabela de retorno dentro ...
Rodando <ul><li>Antes: </li></ul><ul><li>Depois: </li></ul>
IDEs
IDEs <ul><li>Netbeans - Web Pack – Studio Creator </li></ul><ul><li>Eclipse </li></ul><ul><ul><li>Webtools + jsftoos (a se...
Customizações
Customizações <ul><li>Facilidade na customização de: </li></ul><ul><ul><li>Validadores </li></ul></ul><ul><ul><li>Converso...
Pequenas mudanças no Default
Pequenas mudanças no Default <ul><li>Montagem de templates: como Clay (Shale) e Facelets e substituir um pelo outro é ques...
Implementações
Implementações <ul><li>Apache </li></ul><ul><ul><li>MyFaces </li></ul></ul><ul><ul><ul><li>Tomahawk/ Sandbox/ Tobago/ Trin...
Templates
Templates <ul><li>Tiles </li></ul><ul><li>Facelets </li></ul><ul><li>JSFTemplating </li></ul>
Templates <ul><li>Alexandre (escrever) </li></ul>
O que vai ter novo no JSF 2.0?
JSF 2.0 <ul><li>Suporte a templates, baseado no Facelets, Tiles, dentre outros; </li></ul><ul><li>Simplificar a criação de...
Perguntas???
Contato: [email_address] http:// www.javawora.blogspot.com Blog Java Anywhere:
Referências <ul><li>http://www.caelum.com.br </li></ul><ul><li>http://javawora.blogspot.com/search/label/JSF </li></ul><ul...
Obrigado
Upcoming SlideShare
Loading in...5
×

JavaServer Faces Produtividade em Desenvolvimento

4,642

Published on

Palestra ministrada no JustJava 2007

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

  • Be the first to like this

No Downloads
Views
Total Views
4,642
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
241
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "JavaServer Faces Produtividade em Desenvolvimento"

  1. 1. JavaServer Faces Produtividade em Desenvolvimento
  2. 2. Tópicos Abordados <ul><li>O que JavaServer Faces nos traz? </li></ul><ul><ul><li>Especificações </li></ul></ul><ul><ul><li>Managed Beans </li></ul></ul><ul><ul><li>Expression Language </li></ul></ul><ul><li>Life Cycle JSF </li></ul><ul><li>Roteiro de Uso </li></ul><ul><li>IDEs </li></ul><ul><li>Customizações </li></ul><ul><li>Pequenas mudanças no Default </li></ul><ul><li>Implementações </li></ul><ul><li>Templates </li></ul><ul><li>JSF 2.0 </li></ul>Produtividade com JavaServer Faces
  3. 3. Apresentação <ul><li>Eduardo Bregaida </li></ul><ul><ul><li>Analista de sistemas Java da Tata Consultancy Services do Brasil - TCS. </li></ul></ul><ul><ul><li>Membro do Java Community Process (JCP). </li></ul></ul><ul><ul><li>Desenvolvedor JSF há 2 anos. </li></ul></ul><ul><ul><li>Bacharelando na Universidade IMES – São Caetano do Sul. </li></ul></ul>
  4. 4. O que JavaServer Faces nos traz?
  5. 5. O que JavaServer Faces nos traz? <ul><li>É mais do que um framework, é uma especificação baseada em MVC; </li></ul><ul><li>Suporte a internacionalização; </li></ul><ul><li>Facilita criação de telas; </li></ul><ul><li>Facilita a transferência dos dados entre telas e camadas de negócio através da EL. </li></ul><ul><li>Produtividade para conversores recebidos do formulário para os tipos nas classes; </li></ul><ul><li>Flexibilidade para renderização. </li></ul><ul><li>Criar modelos simples de eventos entre interfaces gráficas e as classes no servidor. </li></ul><ul><li>Mecanismos produtivos para validação de campos na tela. </li></ul><ul><li>Facilidade para criação de componentes; </li></ul>
  6. 6. Especificações <ul><li>JSF 1.0 e 1.1 – JSR 127 </li></ul><ul><ul><li>Problemas com renderização </li></ul></ul><ul><ul><li>ELs diferentes entre JSP e JSF </li></ul></ul><ul><ul><li>Não portava a tag JSTL <c:forEach> </li></ul></ul><ul><li>JSF 1.2 – JSR 252 </li></ul><ul><ul><li>Resolveram todos os problemas de incompatibilidade, pois o JSF 1.2 e o JSP 2.1 tiveram muitas uniões e estão dentro do JEE. </li></ul></ul><ul><li>JSF 2.0 – JSR 314 </li></ul><ul><ul><li>Ainda está em discussão muitas coisas, porém estão planejando deixar bem integrado e intuitivo JSF e JSP. </li></ul></ul>
  7. 7. Managed Beans <ul><li>É uma classe que expões objetos de negócio para camada de apresentação; </li></ul><ul><li>São Registrados no faces-config.xml; </li></ul><ul><li>Objetos que sofrerão alterações em seus atributos durante uma requisição, assim como seus métodos podem ser chamados a partir de um command; </li></ul><ul><li>São como as Actions do Struts, porém os form beans são injetados por setters dentro do seu próprio bean; </li></ul><ul><li>Os ManagedBeans serão usados na EL das páginas. </li></ul>
  8. 8. Expression Language - EL <ul><li>É uma poderosa linguagem de expressão (Linguagem de navegação) para acessar propriedades de beans e coleções. </li></ul><ul><li>Quando ocorrer uma requisição pelo browser é preenchido dinamicamente os elementos da página pela camada de negócios. </li></ul><ul><li>Quando ocorre um Submit ocorre a modificação no estado da camada de negócio. </li></ul>
  9. 9. Life Cycle JSF
  10. 10. Life Cycle JSF - Fases <ul><li>São Atendidas pelo Reader Response e Restore Component Tree </li></ul><ul><li>Restore Component Tree: O conjunto de componentes JSF é criado ou restaurado dependento da requisição (Primeira ou demais vezes executadas) </li></ul>
  11. 11. Life Cycle JSF - Fases <ul><li>Apply request Values: Os componentes irão extrair seu novo valor dos parâmetros da Request, colocando-os em variaveis de estado no servidor. </li></ul>
  12. 12. Life Cycle JSF - Fases <ul><li>Process Validations: todos os validadores serão executados, em caso de erro de qualquer valor, a mensagem é alocada no FacesContext, caso contrário ele atualiza (Update Model Values) os valores dos inputs na camada de negócio através da EL. </li></ul>
  13. 13. Life Cycle JSF - Fases <ul><li>Invoke Application: Os métodos do ManagedBeans são executados e as regras de navegação (Gravar, Excluir, Alterar,...) são resolvidas. </li></ul><ul><li>Se tudo ocorrer bem é renderizada pelo container do JSP, caso contrario as mensagens gravadas no FacesContext são apresentadas. </li></ul>
  14. 14. Roteiro de Uso
  15. 15. Roteiro de Uso <ul><li>Criar um bean que represente o formulário </li></ul><ul><li>Usar f:view e h:form para formulários </li></ul><ul><li>Especificar o Action Controller com o atributo de ação h:commandButton. </li></ul><ul><li>Criar um controlador que leia os dados do formulário, chame a lógica de negócio, guarde os resultados em beans e tenha um retorno. </li></ul><ul><li>No faces-config é usado para declarar o form bean e as regras de navegação. </li></ul><ul><li>Criar os JSP´s responsáveis por cada retorno declarado </li></ul>
  16. 16. Exemplo: Passo 1 – Criar um Bean <ul><li>package br.com.justjava.sgv.cadastro.campanha; </li></ul><ul><li>import javax.persistence.Entity; </li></ul><ul><li>import javax.persistence.GeneratedValue; </li></ul><ul><li>import javax.persistence.GenerationType; </li></ul><ul><li>import javax.persistence.Id; </li></ul><ul><li>@Entity </li></ul><ul><li>public class CadastroCampanha { </li></ul><ul><li>@Id </li></ul><ul><li>@GeneratedValue(strategy = GenerationType. IDENTITY ) </li></ul><ul><li>private long id; </li></ul><ul><li>private String nomeCampanha; </li></ul><ul><li>private String observacaoCampanha; </li></ul><ul><li>public long getId() { </li></ul><ul><li> return id; </li></ul><ul><li>} </li></ul><ul><li>public void setId( long id) { </li></ul><ul><li> this .id = id; </li></ul><ul><li>} </li></ul><ul><li>public String getNomeCampanha() { </li></ul><ul><li> return nomeCampanha; </li></ul><ul><li>} </li></ul><ul><li>public void setNomeCampanha(String nomeCampanha) { </li></ul><ul><li>this .nomeCampanha = nomeCampanha; </li></ul><ul><li>} </li></ul><ul><li>public String getObservacaoCampanha() { </li></ul><ul><li> return observacaoCampanha; </li></ul><ul><li>} </li></ul><ul><li>public void setObservacaoCampanha(String observacaoCampanha) { </li></ul><ul><li> this .observacaoCampanha = observacaoCampanha; </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  17. 17. Exemplo: Passo 2 e 3 - f:view e h:form e Especificar o Action Controller <ul><li><%@ page contentType=&quot;text/html; charset=UTF-8&quot; %> </li></ul><ul><li><%@ taglib uri=&quot;http://java.sun.com/jsf/html&quot; prefix=&quot;h&quot; %> </li></ul><ul><li><%@ taglib uri=&quot;http://java.sun.com/jsf/core&quot; prefix=&quot;f&quot; %> </li></ul><ul><li><%@ taglib uri=&quot;http://myfaces.apache.org/tomahawk&quot; prefix=&quot;t&quot; %> </li></ul><ul><li><html> </li></ul><ul><li><head> </li></ul><ul><li> <title>Cadastro de Cliente</title> </li></ul><ul><li></head> </li></ul><ul><li> <body> </li></ul><ul><li><f:view> </li></ul><ul><li><h:form> </li></ul><ul><li><t:panelGrid align=&quot;center&quot;> </li></ul><ul><li> <h:outputText value=&quot;Nome Campanha:&quot;/> </li></ul><ul><li><h:inputText value=&quot;#{campanhaHandler.cadastroCampanha.nomeCampanha}&quot;required=&quot;true&quot;/> </li></ul><ul><li> <h:outputText value=&quot;Observação:&quot;/> </li></ul><ul><li><h:inputTextarea value=&quot;#{campanhaHandler.cadastroCampanha.observacaoCampanha}&quot; required=&quot;true&quot;/> </li></ul><ul><ul><ul><ul><li><h:commandButton value=&quot;Gravar&quot; action=&quot;#{campanhaHandler.salvar}&quot;/> </li></ul></ul></ul></ul><ul><li></t:panelGrid> </li></ul><ul><li> </h:form> </li></ul><ul><li> </f:view> </li></ul><ul><li> </body> </li></ul><ul><li></html> </li></ul>
  18. 18. Exemplo: Passo 4 – Criar o Controlador <ul><li>public void salvar() { </li></ul><ul><li>Session session = HibernateUtil. getCurrentSession (); </li></ul><ul><li>DAO<CadastroCampanha> dao = new DAO<CadastroCampanha>(session,CadastroCampanha. class ); </li></ul><ul><li>if (cadastroCampanha.getId() == 0) { </li></ul><ul><li>dao.salveOrUpdate( this .cadastroCampanha); </li></ul><ul><li>} else { </li></ul><ul><li>session.merge( this .cadastroCampanha); </li></ul><ul><li>} </li></ul><ul><li>this .cadastroCampanha = new CadastroCampanha(); </li></ul><ul><li>} </li></ul>
  19. 19. Exemplo: Passo 5 – Configurar o faces-config.xml <ul><li><managed-bean> </li></ul><ul><li><managed-bean-name>campanhaHandler</managed-bean-name> </li></ul><ul><li> <managed-bean-class> </li></ul><ul><li>br.com.justjava.sgv.cadastro.campanhahandler.CampanhaHandler </li></ul><ul><li></managed-bean-class> </li></ul><ul><li> <managed-bean-scope>session</managed-bean-scope> </li></ul><ul><li></managed-bean> </li></ul><ul><li><navigation-rule> </li></ul><ul><li><from-view-id>/cadastroCampanha.jsp</from-view-id> </li></ul><ul><li></navigation-rule> </li></ul>
  20. 20. Exemplo: Passo 6 – Criar o JSP responsável pelo retorno <ul><li><!- - Insiro este <h:form> com a tabela de retorno dentro do próprio JSP que cadastra - -> </li></ul><ul><li><h:form> </li></ul><ul><li><t:panelGrid align=&quot;center&quot;> </li></ul><ul><li> <h:dataTable value=&quot;#{campanhaHandler.allCadastroCampanha}&quot; id=&quot;tabelaDados&quot; rows=&quot;5&quot; var=&quot;ccam&quot; border=&quot;1“> </li></ul><ul><li><h:column> </li></ul><ul><li> <f:facet name=&quot;header&quot;> </li></ul><ul><li> <h:outputText value=&quot;Nome Campanha&quot;/> </li></ul><ul><li> </f:facet> </li></ul><ul><li> <h:outputText value=&quot;#{ccam.nomeCampanha}&quot;/> </li></ul><ul><li></h:column> </li></ul><ul><li><h:column> </li></ul><ul><li> <f:facet name=&quot;header&quot;> </li></ul><ul><li> <h:outputText value=&quot;Observação&quot;/> </li></ul><ul><li> </f:facet> </li></ul><ul><li> <h:outputText value=&quot;#{ccam.observacaoCampanha}&quot;/> </li></ul><ul><li></h:column> </li></ul><ul><li> </h:dataTable> </li></ul><ul><li></t:panelGrid> </li></ul><ul><li></h:form> </li></ul>
  21. 21. Rodando <ul><li>Antes: </li></ul><ul><li>Depois: </li></ul>
  22. 22. IDEs
  23. 23. IDEs <ul><li>Netbeans - Web Pack – Studio Creator </li></ul><ul><li>Eclipse </li></ul><ul><ul><li>Webtools + jsftoos (a ser liberado em julho) </li></ul></ul><ul><ul><li>EasyEclipse </li></ul></ul><ul><ul><li>MyEclipse </li></ul></ul><ul><ul><li>Red Hat Developer Studio </li></ul></ul><ul><li>Rational Application Developer – WSAD </li></ul><ul><li>JDeveloper </li></ul>
  24. 24. Customizações
  25. 25. Customizações <ul><li>Facilidade na customização de: </li></ul><ul><ul><li>Validadores </li></ul></ul><ul><ul><li>Conversores </li></ul></ul><ul><ul><li>Componentes de Interface </li></ul></ul><ul><ul><li>Renderizadores </li></ul></ul><ul><ul><li>Mensagens </li></ul></ul>
  26. 26. Pequenas mudanças no Default
  27. 27. Pequenas mudanças no Default <ul><li>Montagem de templates: como Clay (Shale) e Facelets e substituir um pelo outro é questão de uma linha de configuração. </li></ul><ul><li>A beans factory: podemos usar os beans do Spring ao invés dos managed beans do faces-config.xml. </li></ul><ul><li>Renderização dos componentes: existem implementações, utilizando por exemplo XUL ou HTML + Ajax. </li></ul>
  28. 28. Implementações
  29. 29. Implementações <ul><li>Apache </li></ul><ul><ul><li>MyFaces </li></ul></ul><ul><ul><ul><li>Tomahawk/ Sandbox/ Tobago/ Trinidad/ Orchestra </li></ul></ul></ul><ul><li>Red Hat/JBoss </li></ul><ul><ul><li>RichFaces </li></ul></ul><ul><ul><li>Ajax4JSF </li></ul></ul><ul><li>Red Hat/JBoss </li></ul><ul><ul><li>RichFaces </li></ul></ul><ul><li>ICEsoft Technologies Inc. </li></ul><ul><ul><li>ICEfaces </li></ul></ul><ul><li>Oracle </li></ul><ul><ul><li>ADF Faces </li></ul></ul>
  30. 30. Templates
  31. 31. Templates <ul><li>Tiles </li></ul><ul><li>Facelets </li></ul><ul><li>JSFTemplating </li></ul>
  32. 32. Templates <ul><li>Alexandre (escrever) </li></ul>
  33. 33. O que vai ter novo no JSF 2.0?
  34. 34. JSF 2.0 <ul><li>Suporte a templates, baseado no Facelets, Tiles, dentre outros; </li></ul><ul><li>Simplificar a criação de aplicações do tipo CRUD; </li></ul><ul><li>Melhor tratamento de mensagens de erro; </li></ul><ul><li>Mecanismo de tratamento de exceções padrão; </li></ul><ul><li>Criação de aplicações Web sem XML, utilizando anotações; </li></ul><ul><li>Simplificação no desenvolvimento de componentes; </li></ul><ul><li>Especificar onde os artefatos (Conversores, Renderizadores, etc.) dever ser colocados no WAR, permitindo ao container encontra-los sem a necessidade de sua definição em arquivos de configuração; </li></ul><ul><li>Permitir que artefatos sejam alterados sem a necessidade de reinicializar o servidor. </li></ul>
  35. 35. Perguntas???
  36. 36. Contato: [email_address] http:// www.javawora.blogspot.com Blog Java Anywhere:
  37. 37. Referências <ul><li>http://www.caelum.com.br </li></ul><ul><li>http://javawora.blogspot.com/search/label/JSF </li></ul><ul><li>http://www.guj.com.br/java.tutorial.artigo.158.1.guj </li></ul><ul><li>http://java.sun.com/javaee/javaserverfaces/ </li></ul><ul><li>www.jcp.org </li></ul><ul><ul><li>JSRs: 127; 252; 314. </li></ul></ul><ul><li>http://www.jspolympus.com/JSF/JSFLifeCycle.jsp </li></ul><ul><li>http://www.guj.com.br/java.tutorial.artigo.187.1.guj </li></ul><ul><li>http://javaplace.blogspot.com/2007/07/frameworks-jsf-que-encapsulam-o-uso-do.html </li></ul><ul><li>http://www.nabble.com/Struts-+-JSF:-Vale-a-Pena--t4056131.html </li></ul><ul><li>http://www.javaplace.blogspot.com/ </li></ul><ul><li>http://myfaces.apache.org/ </li></ul><ul><li>http://www.oracle.com/technology/products/adf/adffaces/index.html </li></ul><ul><li>http://www.icefaces.org/main/home/index.jsp </li></ul><ul><li>https://ajax4jsf.dev.java.net/ </li></ul><ul><li>Revistas: </li></ul><ul><ul><li>Mundo Java nº: 21. </li></ul></ul><ul><ul><li>Java Magazine nº: 23; 26; 43; 44; 45; 46; 47; 48. </li></ul></ul><ul><li>Livros: </li></ul><ul><ul><li>Faces in Action (Kito Mann – Manning, 2004); </li></ul></ul><ul><ul><li>JavaServer Faces (Hans Bergsten – O´Reilly, 2004); </li></ul></ul><ul><ul><li>Core JavaServer Faces (David Geary e Cay Horstmann). </li></ul></ul>
  38. 38. Obrigado
  1. A particular slide catching your eye?

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

×