SlideShare uma empresa Scribd logo
Anatomia do JSF – JavaServer Faces Rafael Ponte [email_address] http://www.rponte.com.br
Agenda Quem sou eu? Desenvolvimento de Aplicações Web O que é JavaServer Faces? Por que usar JSF? Overview da tecnologia Metendo a mão na massa Conclusão
Quem sou eu? Rafael Ponte – SCJP 1.4 Sócio fundador da empresa de consultoria  Triadworks Atualmente trabalha como analista programador na IVIA Trabalha com desenvolvimento Java/JEE desde 2005 Entusiasta Java e JSF Coordenador do grupo  JavaServer Faces International Group Técnico em Desenvolvimento de Software pelo CEFET-CE Ex-aluno frustrado do curso de bacharelado em Matemática da UFC  
Desenvolvimento de Aplicações Web
Introdução Aplicações web tornam-se mais e mais importantes Mais e mais complexidade Ajax, validação (server vs. client), efeitos... Exigência mais elevada do cliente durante os anos Interfaces ricas (fácil de usar) Prazos cada vez mais curtos  Desenvolvimento considerado difícil A bola da vez..  Desenvolvimento Web
Introdução Desenvolvimento Web (Java)
Introdução Model 1 (centrado em páginas)
Introdução Model 1 (Arquitetura centrada em páginas)
Introdução Model 2 (MVC)
Introdução Apache Struts WebWork (Struts2) Spring MVC Tapestry E muito outros.. E continuam surgindo mais Surgiram diversos frameworks MVC baseado no Model 2
Introdução Java não nos fornece o bastante para desenvolvermos aplicações web com produtividade Dificuldade para integrar vários frameworks (algumas vez nem é possível) Falta de padrão para um framework web Ausência de uma API padrão para construir componentes web java E a solução? Problemas
JavaServer Faces!  
Mas o que é JavaServer Faces?
O que é JavaServer Faces? ... uma especificação ... um framework baseado em componentes de interface com o usuário ... um framework dirigido à eventos ... padrão de mercado ... RAD ... um framework MVC JavaServer Faces é...
O que é JavaServer Faces? ... uma especificação JSR 127 (JSF 1.0 e JSF 1.1) – 2004 JSF 1.0 – não alcançou o sucesso esperado JSF 1.1 – corrigiu os erros da versão anterior JSR 252 (JSF 1.2) - 2006 (Java EE 5.0) JSF 1.2 – melhor compatibilidade com JSP 2.1 e correção de bugs JSR 314 (JSF 2.0) Arquitetura, produtividade, ferramentas RAD, AJAX, melhores componentes UI.. A pergunta é.. quando.. 2007, 2008 ? (Java EE 6.0 ?) JavaServer Faces é...
O que é JavaServer Faces? ... um framework baseado em componentes de interface com o usuário JSF é construído sob o conceito de componentes Os componentes são a base para a construção da interface com o usuário Existem componentes padrões equivalentes a quase todas as tags HTML e diversos componentes auxiliares Existem diversas bibliotecas de componentes disponíveis comerciais e open source Os componentes são expressos através de tags em um JSP e posteriormente transformados em HTML JavaServer Faces é...
O que é JavaServer Faces? ... um framework dirigido à eventos Possui um modelo para manipulação de eventos Componentes geram determinados eventos Faz chamada à um método (ação no servidor) O estado da aplicação web muda devido ao evento disparado pelo usuário Um evento pode ser um click em um botão, focar sobre um input ou mesmo alterar o valor de uma combo-box JavaServer Faces é...
O que é JavaServer Faces? ... padrão de mercado É uma especificação (JCP) Java EE 5.0 Suporte de Big Players Sun, Apache, IBM, Oracle, BEA Systems, Borland, ... IDEs (NetBeans, Eclipse, MyEclipse, JDeveloper, ...) Implementações (Sun (R.I), Apache, IBM, ...) Conjuntos de componentes (ADF Faces, Apache MyFaces, WoodStock, IceFaces, JBoss RichFaces, ...) JavaServer Faces é...
O que é JavaServer Faces? ... RAD ( R apid  A pplication  D evelopment) 4 camadas: Arquitetura de componentes básica Conjunto de componentes padrão Infra-estrutura da aplicação Ferramenta RAD JSF padroniza os primeiros três pontos e permite a criação de ferramentas RAD Utiliza-se IDEs  drag-and-drop  para construir aplicações: Sun Studio Creator, NetBeans, JDeveloper etc JavaServer Faces é...
O que é JavaServer Faces? ... um framework MVC para construir interfaces com o usuário para aplicações web. JSF inclui: Um conjunto de APIs para: representar os componentes UI e gerenciar o estado destes componentes manipular os eventos e validação de entrada do usuário definir e controlar a navegação entre as páginas  dar suporte a internacionalização e acessibilidade Duas bibliotecas de tags JavaServer Pages (JSP) para expressar uma interface JavaServer Faces usando uma página JSP JavaServer Faces é...
Por que usar JSF?
Por que usar JSF? É um padrão de mercado Presente na especificação JEE5.0 e em breve JEE6.0 Suporte de Big Players Fácil de usar    E produtivo também! Fornece separação de funções que envolvem a construção de aplicações Web  Alta abstração para desenvolvimento de aplicação web Modelo de programação dirigido a eventos (oposto ao modelo HTTP request/response) Baixa curva de aprendizagem da equipe Vários pontos de extensão (converters, validators, listeners etc) Componentes já prontos!
Por que usar JSF? Reusabilidade e estrutura de componentes extensível Acessibilidade (browsers, celulares, pda’s, ...)
Por que usar JSF? Suporte cross-browser   Segurança OWASP ( Open Web Application Security Project) cross-site scripting, session hijacking, execução de métodos, ... Natureza orientada a componentes, validação e pontos de extensão Grande atividade da comunidade em fóruns, listas de discussão, blogs, portais, revistas, livros etc Integração com diversos frameworks Spring, Spring-Annotation, Spring-Webflow, Hibernate, EJB3, JPA, JBoss Seam, Acegi, JAAS, Struts, Struts2, Shale, Tiles, Facelets, Sitemesh, DWR, EXT, Crank, Beehive-Webflow, GWT, Portlets e muitos outros
Por que usar JSF? Testes unitários Mock objects Shale testing framework Templates Tiles e Sitemesh Facelets (esse sozinho merece uma palestra!) IDEs e WYSIWYG (What you see is what you get) IntelliJ IDEA JBuilder IBM Rational App/Web Developer Red Hat Developer Studio (antigo Exadel Studio) Eclipse ( MyEclipse , Europa etc) NetBeans (Visual WebPack) Sun Java Studio Creator Oracle JDeveloper JSFToolbox (Dreamweaver)
Por que usar JSF? MyEclipse (1)
Por que usar JSF? MyEclipse (2)
Por que usar JSF? MyEclipse (3)
Por que usar JSF? NetBeans (1)
Por que usar JSF? NetBeans (2)
Por que usar JSF? NetBeans (3)
Por que usar JSF? JSFToolbox (1)
Por que usar JSF? JSFToolbox (2)
Por que usar JSF? Grande variedade de componentes comerciais e open-source disponíveis * Mais componentes?  http://www.jsfmatrix.net/ Backbase Simplica (ECruiser Suite) QuipuKit Blueprints RCFaces Jenia4Faces ZK G4JSF (GWT API) YUI4JSF (Yahoo API) Ext4JSF (Ext API) Dynamic Faces Crank Myfaces Tomahawk Myfaces Sandbox Myfaces Tobago Myfaces Trinidad Myfaces Orchestra  ADF Faces IceFaces WoodStock Net Advantage WebGalileoFaces JBoss RichFaces JBoss Ajax4jsf
Por que usar JSF? MyFaces (1)
Por que usar JSF? MyFaces (2)
Por que usar JSF? MyFaces (3)
Por que usar JSF? RichFaces (1)
Por que usar JSF? RichFaces (2)
Por que usar JSF? RichFaces (3)
Por que usar JSF? WoodStock (1)
Por que usar JSF? WoodStock (2)
Overview da Tecnologia
Overview da tecnologia Componentes Renderers Managed-beans Converters / Validators Navegação Eventos Ciclo de vida (Request Lifecycle) Conceitos chaves do JSF
Overview da tecnologia Separa a lógica de negócio da apresentação Cada view é composta por uma hierarquia de componentes Componentes (1)
Overview da tecnologia Componentes podem ser adicionados na view programaticamente ou via template (JSP por default, ou Facelets para melhor desempenho e fácil desenvolvimento) Componentes são expressos em tags em uma página JSP e em sua maioria são de interface com o usuário Os componentes padrões são divididos em dois grupos Faces Core  <f:view> ,  <f:loadBundle> ,  <f:param> HTML wrappers  <h:dataTable> ,  <h:selectOneMenu> Componente = class + [renderer] + tag handler (JSP) Componentes (2)
Overview da tecnologia Responsável por exibir o componente no cliente São agrupados em  render kits Render kit padrão é o HTML, mas podemos ter WML, SVG etc. Efetua o  encode  (gera HTML do componente) Efetua o  decode  (seta o componente com os dados da URL query string e do formulário) Resumindo <h:inputText   id = “login”   size = “16”   /> <input   type = “text”   id = “myForm:login”   name = “myForm:login”   size = “16”   /> Renderers
Overview da tecnologia POJO  – Plain Old Java Objects Managed beans Action ActionForm Managed bean (POJO) http Podem ser definidos nos escopos: Application, Session, Request e None
Overview da tecnologia Managed beans
Overview da tecnologia “ Binda” valor do componente ao managed-bean O binding ocorre através de JSF Expression Language (EL) Semelhante a JSTL, porém usa-se  ‘#{}’  no lugar de  ‘${}’ Pode-se executar métodos no modelo através de expressões Não é processada imediatamente como na JSTL A partir da JSF 1.2 utiliza-se a Unified Expression Language (JSP 2.1) que resolve problemas de incompatibilidade entre a JSF-EL e JSP-EL JSF Value Binding
Overview da tecnologia JSF Value Binding – Exemplo (1) login.jsp Objeto meuManagedBean
Overview da tecnologia JSF Value Binding – Exemplo (2) login.jsp Managed-beans são registrados dentro do faces-config.xml
Overview da tecnologia Tem por finalidade converter e/ou formatar  objetos do tipo Java para String e vice-versa Converters são bi-direcionais Managed-bean faz:  getAsObject() JSP faz:  getAsString() JSF já fornece converters padrões para date / time, numbers etc Você pode implementar seu próprio converter Basta implementar a interface  javax.faces.convert.Converter Registrar o converter no faces-config.xml O converter pode atuar de forma explícita(id) ou implícita(class) de acordo com a sua configuração no faces-config.xml Converters (1)
Overview da tecnologia Converters (2) javax.faces.convert.Converter
Overview da tecnologia Converters (3) Converter é registrado dentro faces-config.xml, no exemplo abaixo estamos registrando um converter para que toda propriedade do tipo  org.cejug.model.CPF  de qualquer bean use este converter <converter> <converter-for-class> org.cejug.model.CPF </converter-for-class> <converter-class> org.cejug.faces.CPFConverter </converter-class> </converter>
Overview da tecnologia Converters (4) - Exemplo <h:inputText   id = “cpf“   value =&quot;#{UserRegistration.user.cpf}&quot; > <f:converter   converterId = “cejug.CPFConverter“   /> </h:inputText>   Converter declarado explicitamente Ou implicitamente (converter mapeado para objetos do tipo  CPF) <h:inputText   id = “cpf“   value =&quot;#{UserRegistration.user.cpf}&quot; > [Olha mãe!! Nenhum converter   ] </h:inputText>
Overview da tecnologia Tem por responsabilidade garantir que o valor  informado pelo usuário seja válido Validator trabalha com objetos, não somente com Strings JSF já fornece validators padrões como required, length, range etc Você pode implementar seu próprio validator Basta implementar a interface  javax.faces.validator.Validator   Registrar o validator no faces-config.xml   Você pode associar um ou mais validators à um componente Validators (1)
Overview da tecnologia Validators (2) javax.faces.validator.Validator Validators são registrados no faces-config.xml
Overview da tecnologia Validators (3) - Exemplo <h:inputText   id = “firstName“   value =&quot;#{UserRegistration.user.firstName}“  required = “true” > <f:validateLength   minimum = &quot;2“  maximum = &quot;25“   /> </h:inputText>   Validação para obrigatoriedade e comprimento do campo
Overview da tecnologia Navegação de uma página para outra Simples e poderoso sistema de navegação O framework seleciona a próxima view baseado Na view anterior Resultado(outcome) de uma action EL de ação (ex.: #{mBean.user .save }) Qualquer combinação acima Permite wildcard (‘*’) para páginas de origem ( from-view-id ) Navegação (1)
Overview da tecnologia <navigation-rule> <from-view-id> /jsp/deposito/guincheiro/* </from-view-id> <navigation-case> <from-outcome> searchlist </from-outcome> <to-view-id> /jsp/deposito/guincheiro/searchList.jsp </to-view-id> </navigation-case> < navigation-case> <from-outcome> update </from-outcome> <to-view-id> /jsp/deposito/guincheiro/update.jsp </to-view-id> </navigation-case> </navigation-rule> Navegação (2) - Exemplo
Overview da tecnologia Componentes geram determinados eventos  que por sua vez disparam ações no servidor (método(s) no managed-bean ou listeners) Você também pode implementar listeners de ação associados a outros componentes do formulário Os listeners mais comuns do JSF são ActionListener ValueChangeListener Eventos (1)
Overview da tecnologia <h:commandButton   action = “listar”   value = “Listar”   /> Eventos (2) - Exemplo <h:commandLink   action =“#{cadastroBean.cadastrar}”  value = “Cadastrar”   /> public  String cadastrar() { // processa evento return   “listar” ;  // retorna para view “listar” } Action event para navegação Action event que executa método no managed-bean Método no managed-bean
Overview da tecnologia <h:selectOneMenu   id = “UF”   value =“#{cadastroBean.uf}”  valueChangeListener =“#{cadastroBean.carregaCidades}”  onchange = “submit();” > <f:selectItems  value =“#{cadastroBean.ufList}”  /> </h:selectOneMenu> Eventos (3) - Exemplo public  void carregaCidades(ValueChangeEvent event) { // processa evento String uf = event.getNewValue();   // obtém novo valor this . cidadesList  = Servico. carregaCidades (uf); // processa evento } Value-change event que executa método após alterar o valor do componente Método no managed-bean
Overview da tecnologia JSF Request Lifecycle May skip to render phase or abort request Restore View Apply Request Values Process Validations Update Model Invoke Application Render Response Request Response Retrieve component tree from client or session Decode components (populate w/ String values) Convert Strings to Objects Validate Objects Invoke bean method(s) Compute navigation Call setters  on managed beans Call bean getters to populate components
Overview da tecnologia Customizar componentes Phase listeners (antes, depois de qualquer fase) Customizar converters / validators Customizar renderers Customizar ActionListenerImpl para manipular eventos Decorar ou substituir view handler, navigation handler, state manager etc JSF Extension Points
Overview da tecnologia Arquivo XML para configurar recursos da aplicação Contém regras de navegação, customização e extensão de converters, validators, componentes etc Geralmente está localizado dentro de  /WEB-INF/faces-config.xml Pode ser dividido em diretórios e sub-diretórios ou dentro de arquivos jar Seta  javax.faces.application.CONFIG_FILES  no web.xml Ou então coloca-se  META-INF/faces-config.xml  dentro de um jar faces-config.xml   (1)
Overview da tecnologia <faces-config  ...  > <!-- ******************************************************************* --> <!-- CONVERTERS --> <!-- ******************************************************************* --> <converter> <converter-id> core.faces.CnpfCnpjConverter </converter-id> <converter-class> core.faces.converter.CnpfCnpjConverter </converter-class> </converter> <!-- ******************************************************************* --> <!-- MANAGED BEANS --> <!-- ******************************************************************* --> <managed-bean> <managed-bean-name> reportBean </managed-bean-name> <managed-bean-class> core.faces.bean.ReportBean </managed-bean-class> <managed-bean-scope> request </managed-bean-scope> </managed-bean> <!-- ******************************************************************* --> <!-- NAVIGATION --> <!-- ******************************************************************* --> <navigation-rule> <from-view-id> /jsp/deposito/tiporeq/searchList.jsp </from-view-id> <navigation-case> <from-outcome> deposito.tiporeq.update </from-outcome> <to-view-id> /jsp/deposito/tiporeq/update.jsp </to-view-id> </navigation-case> </navigation-rule> </faces-config> faces-config.xml   (2) - Exemplo faces-config.xml
Hora de acordar !! Wake up Neo, wake up!!
Metendo a mão na massa
Libs necessárias JSF 1.2 RI jsf-api.jar jsf-impl.jar jstl-1.2.jar 2.  Configurando o projeto com uma IDE “de gente”   MyEclipse 3.  Configurando e implementando a aplicação 4.  Rodando a aplicação (Tomcat 6.0) Servlet 2.5 e JSP 2.1 Metendo a mão na massa
Metendo a mão na massa Inserindo AJAX de maneira fácil e indolor.. Baixando  JBoss RichFaces  e dependências commons-beanutils commons-collections commons-digester commons-logging Configurando web.xml Alterando as páginas Rodando a aplicação novamente!
Conclusão Meu objetivo!   JSF é a bala de prata para o desenvolvimento de aplicações web?! Vale a pena investir nesta tecnologia? Mercado em Fortaleza Por onde começar? javasf -  http://groups.google.com/group/javasf cejug -  http://www.cejug.org/
Perguntas?
Obrigado!  

Mais conteúdo relacionado

Mais procurados

Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystéme
Algeria JUG
 
Installation et Configuration ee JDK et de Tomcat
Installation et Configuration ee JDK et de TomcatInstallation et Configuration ee JDK et de Tomcat
Installation et Configuration ee JDK et de Tomcat
Mohamed Ben Bouzid
 
Hibernate
HibernateHibernate
Hibernate
Ajay K
 
Introduction à JPA (Java Persistence API )
Introduction à JPA  (Java Persistence API )Introduction à JPA  (Java Persistence API )
Introduction à JPA (Java Persistence API )
Daniel Rene FOUOMENE PEWO
 
jpa-hibernate-presentation
jpa-hibernate-presentationjpa-hibernate-presentation
jpa-hibernate-presentation
John Slick
 
Spring boot
Spring bootSpring boot
Spring boot
Gyanendra Yadav
 
Computer Science:Java jdbc
Computer Science:Java jdbcComputer Science:Java jdbc
Computer Science:Java jdbc
St Mary's College,Thrissur,Kerala
 
Spring Data JPA
Spring Data JPASpring Data JPA
Spring Data JPA
Knoldus Inc.
 
Entreprise Java Beans (EJB)
Entreprise Java Beans (EJB)Entreprise Java Beans (EJB)
Entreprise Java Beans (EJB)
Heithem Abbes
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Helder da Rocha
 
Hibernate tutorial for beginners
Hibernate tutorial for beginnersHibernate tutorial for beginners
Hibernate tutorial for beginners
Rahul Jain
 
Presentation Spring
Presentation SpringPresentation Spring
Presentation Spring
Nathaniel Richand
 
Hibernate in Action
Hibernate in ActionHibernate in Action
Hibernate in Action
Akshay Ballarpure
 
Spring Boot and REST API
Spring Boot and REST APISpring Boot and REST API
Spring Boot and REST API
07.pallav
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
aliagadir
 
Hibernate jpa
Hibernate jpaHibernate jpa
Hibernate jpa
Lhouceine OUHAMZA
 
Marzouk jsp
Marzouk jspMarzouk jsp
Marzouk jsp
abderrahim marzouk
 
Java Virtual Machine (JVM), Difference JDK, JRE & JVM
Java Virtual Machine (JVM), Difference JDK, JRE & JVMJava Virtual Machine (JVM), Difference JDK, JRE & JVM
Java Virtual Machine (JVM), Difference JDK, JRE & JVM
shamnasain
 
Jpa
JpaJpa

Mais procurados (20)

Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystéme
 
Installation et Configuration ee JDK et de Tomcat
Installation et Configuration ee JDK et de TomcatInstallation et Configuration ee JDK et de Tomcat
Installation et Configuration ee JDK et de Tomcat
 
Hibernate
HibernateHibernate
Hibernate
 
Introduction à JPA (Java Persistence API )
Introduction à JPA  (Java Persistence API )Introduction à JPA  (Java Persistence API )
Introduction à JPA (Java Persistence API )
 
jpa-hibernate-presentation
jpa-hibernate-presentationjpa-hibernate-presentation
jpa-hibernate-presentation
 
Spring boot
Spring bootSpring boot
Spring boot
 
Computer Science:Java jdbc
Computer Science:Java jdbcComputer Science:Java jdbc
Computer Science:Java jdbc
 
Spring Data JPA
Spring Data JPASpring Data JPA
Spring Data JPA
 
Entreprise Java Beans (EJB)
Entreprise Java Beans (EJB)Entreprise Java Beans (EJB)
Entreprise Java Beans (EJB)
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
 
Hibernate tutorial for beginners
Hibernate tutorial for beginnersHibernate tutorial for beginners
Hibernate tutorial for beginners
 
Presentation Spring
Presentation SpringPresentation Spring
Presentation Spring
 
Hibernate in Action
Hibernate in ActionHibernate in Action
Hibernate in Action
 
Java Server Faces 2
Java Server Faces 2Java Server Faces 2
Java Server Faces 2
 
Spring Boot and REST API
Spring Boot and REST APISpring Boot and REST API
Spring Boot and REST API
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
 
Hibernate jpa
Hibernate jpaHibernate jpa
Hibernate jpa
 
Marzouk jsp
Marzouk jspMarzouk jsp
Marzouk jsp
 
Java Virtual Machine (JVM), Difference JDK, JRE & JVM
Java Virtual Machine (JVM), Difference JDK, JRE & JVMJava Virtual Machine (JVM), Difference JDK, JRE & JVM
Java Virtual Machine (JVM), Difference JDK, JRE & JVM
 
Jpa
JpaJpa
Jpa
 

Destaque

Introdução ao JavaServer Faces
Introdução ao JavaServer FacesIntrodução ao JavaServer Faces
Introdução ao JavaServer Faces
Willian Watanabe
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
jornaljava
 
Apresentação JSF
Apresentação JSFApresentação JSF
Apresentação JSF
Carlos Henrique
 
Apostila jsf
Apostila jsfApostila jsf
Apostila jsf
Fernanda Diego
 
JSF - JavaServer Faces
JSF - JavaServer FacesJSF - JavaServer Faces
JSF - JavaServer Faces
netinhoteixeira
 
Boas Práticas com JavaServer Faces (Jsf)
Boas Práticas com JavaServer Faces (Jsf)Boas Práticas com JavaServer Faces (Jsf)
Boas Práticas com JavaServer Faces (Jsf)
Rafael Ponte
 
Aula parte 1 de JSF 2.2
Aula parte 1 de JSF 2.2Aula parte 1 de JSF 2.2
Aula parte 1 de JSF 2.2
André Luiz Forchesatto
 
Os 10 maus hábitos dos desenvolvedores JSF
Os 10 maus hábitos dos desenvolvedores JSFOs 10 maus hábitos dos desenvolvedores JSF
Os 10 maus hábitos dos desenvolvedores JSF
Rafael Ponte
 

Destaque (8)

Introdução ao JavaServer Faces
Introdução ao JavaServer FacesIntrodução ao JavaServer Faces
Introdução ao JavaServer Faces
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Apresentação JSF
Apresentação JSFApresentação JSF
Apresentação JSF
 
Apostila jsf
Apostila jsfApostila jsf
Apostila jsf
 
JSF - JavaServer Faces
JSF - JavaServer FacesJSF - JavaServer Faces
JSF - JavaServer Faces
 
Boas Práticas com JavaServer Faces (Jsf)
Boas Práticas com JavaServer Faces (Jsf)Boas Práticas com JavaServer Faces (Jsf)
Boas Práticas com JavaServer Faces (Jsf)
 
Aula parte 1 de JSF 2.2
Aula parte 1 de JSF 2.2Aula parte 1 de JSF 2.2
Aula parte 1 de JSF 2.2
 
Os 10 maus hábitos dos desenvolvedores JSF
Os 10 maus hábitos dos desenvolvedores JSFOs 10 maus hábitos dos desenvolvedores JSF
Os 10 maus hábitos dos desenvolvedores JSF
 

Semelhante a Anatomia do JSF, JavaServer Faces

Anatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer FacesAnatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer Faces
cejug
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
Miguel Vilaca
 
Serra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EESerra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EE
Rodrigo Cândido da Silva
 
GUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EEGUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EE
Rodrigo Cândido da Silva
 
Tutorial Java EE
Tutorial Java EETutorial Java EE
Tutorial Java EE
Rodrigo Cândido da Silva
 
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melo
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_MeloUtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melo
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melo
thalesboss
 
Apresentação
ApresentaçãoApresentação
Apresentação
Sylvio Barbon
 
Jsf – Java Sever Faces
Jsf – Java Sever FacesJsf – Java Sever Faces
Jsf – Java Sever Faces
bielgott
 
JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010
Eder Magalhães
 
Como Sobreviver Com Java2
Como Sobreviver Com Java2Como Sobreviver Com Java2
Como Sobreviver Com Java2
Saulo Arruda
 
GUJavaSC - Desenvolvendo uma Aplicação com Java EE
GUJavaSC - Desenvolvendo uma Aplicação com Java EEGUJavaSC - Desenvolvendo uma Aplicação com Java EE
GUJavaSC - Desenvolvendo uma Aplicação com Java EE
Rodrigo Cândido da Silva
 
Spring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaSpring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em Java
Mariana de Azevedo Santos
 
Jsf
JsfJsf
JavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeJavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividade
Rafael Ponte
 
Flisolgo2010
Flisolgo2010Flisolgo2010
Flisolgo2010
Paulo Jerônimo
 
Navegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo javaNavegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo java
Andrei Tognolo
 
Padrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBPadrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEB
Rafael França
 
JavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em DesenvolvimentoJavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em Desenvolvimento
Eduardo Bregaida
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.java
Eduardo Bregaida
 
Java web
Java webJava web
Java web
marcosvpcortes
 

Semelhante a Anatomia do JSF, JavaServer Faces (20)

Anatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer FacesAnatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer Faces
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Serra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EESerra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EE
 
GUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EEGUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EE
 
Tutorial Java EE
Tutorial Java EETutorial Java EE
Tutorial Java EE
 
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melo
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_MeloUtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melo
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melo
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
Jsf – Java Sever Faces
Jsf – Java Sever FacesJsf – Java Sever Faces
Jsf – Java Sever Faces
 
JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010
 
Como Sobreviver Com Java2
Como Sobreviver Com Java2Como Sobreviver Com Java2
Como Sobreviver Com Java2
 
GUJavaSC - Desenvolvendo uma Aplicação com Java EE
GUJavaSC - Desenvolvendo uma Aplicação com Java EEGUJavaSC - Desenvolvendo uma Aplicação com Java EE
GUJavaSC - Desenvolvendo uma Aplicação com Java EE
 
Spring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaSpring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em Java
 
Jsf
JsfJsf
Jsf
 
JavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeJavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividade
 
Flisolgo2010
Flisolgo2010Flisolgo2010
Flisolgo2010
 
Navegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo javaNavegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo java
 
Padrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBPadrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEB
 
JavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em DesenvolvimentoJavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em Desenvolvimento
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.java
 
Java web
Java webJava web
Java web
 

Mais de Rafael Ponte

TechDay: 10 Features do Oracle que voce nao conhecia - CONNECT BY CLAUSE
TechDay: 10 Features do Oracle que voce nao conhecia - CONNECT BY CLAUSETechDay: 10 Features do Oracle que voce nao conhecia - CONNECT BY CLAUSE
TechDay: 10 Features do Oracle que voce nao conhecia - CONNECT BY CLAUSE
Rafael Ponte
 
TechDay Retrospectiva 2018
TechDay Retrospectiva 2018TechDay Retrospectiva 2018
TechDay Retrospectiva 2018
Rafael Ponte
 
Arquitetura Java - Escalando além do Hype
Arquitetura Java - Escalando além do HypeArquitetura Java - Escalando além do Hype
Arquitetura Java - Escalando além do Hype
Rafael Ponte
 
Como treinar seu estagiario
Como treinar seu estagiarioComo treinar seu estagiario
Como treinar seu estagiario
Rafael Ponte
 
Lidando com o Caos: Testando Código PLSQL em um Projeto Critico
Lidando com o Caos: Testando Código PLSQL em um Projeto CriticoLidando com o Caos: Testando Código PLSQL em um Projeto Critico
Lidando com o Caos: Testando Código PLSQL em um Projeto Critico
Rafael Ponte
 
Como Apresentar Codigo em Slides - Javou #7 - 2016
Como Apresentar Codigo em Slides - Javou #7 - 2016Como Apresentar Codigo em Slides - Javou #7 - 2016
Como Apresentar Codigo em Slides - Javou #7 - 2016
Rafael Ponte
 
Migrations for Java (Javou #4 - JavaCE)
Migrations for Java (Javou #4 - JavaCE)Migrations for Java (Javou #4 - JavaCE)
Migrations for Java (Javou #4 - JavaCE)
Rafael Ponte
 
Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015
Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015
Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015
Rafael Ponte
 
Hibernate efetivo (IA-2014 / Disturbing the Mind)
Hibernate efetivo (IA-2014 / Disturbing the Mind)Hibernate efetivo (IA-2014 / Disturbing the Mind)
Hibernate efetivo (IA-2014 / Disturbing the Mind)
Rafael Ponte
 
Hibernate efetivo (COALTI-2014 / ALJUG)
Hibernate efetivo (COALTI-2014 / ALJUG)Hibernate efetivo (COALTI-2014 / ALJUG)
Hibernate efetivo (COALTI-2014 / ALJUG)
Rafael Ponte
 
Migrations for Java (QCONSP2013)
Migrations for Java (QCONSP2013)Migrations for Java (QCONSP2013)
Migrations for Java (QCONSP2013)
Rafael Ponte
 
Importancia dos Testes Automatizados no dia a dia (Don't Panic)
Importancia dos Testes Automatizados no dia a dia (Don't Panic)Importancia dos Testes Automatizados no dia a dia (Don't Panic)
Importancia dos Testes Automatizados no dia a dia (Don't Panic)
Rafael Ponte
 
Importância dos testes automatizados no dia a dia
Importância dos testes automatizados no dia a diaImportância dos testes automatizados no dia a dia
Importância dos testes automatizados no dia a dia
Rafael Ponte
 
Hibernate Efetivo (QCONSP-2012)
Hibernate Efetivo (QCONSP-2012)Hibernate Efetivo (QCONSP-2012)
Hibernate Efetivo (QCONSP-2012)
Rafael Ponte
 
Migrations for Java
Migrations for JavaMigrations for Java
Migrations for Java
Rafael Ponte
 
Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)
Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)
Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)
Rafael Ponte
 
Importância dos testes automatizadoss
Importância dos testes automatizadossImportância dos testes automatizadoss
Importância dos testes automatizadoss
Rafael Ponte
 
Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaGreenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresa
Rafael Ponte
 
Desafios de um desenvolvedor JSF
Desafios de um desenvolvedor JSFDesafios de um desenvolvedor JSF
Desafios de um desenvolvedor JSF
Rafael Ponte
 
Curso de Java server faces (JSF)
Curso de Java server faces (JSF)Curso de Java server faces (JSF)
Curso de Java server faces (JSF)
Rafael Ponte
 

Mais de Rafael Ponte (20)

TechDay: 10 Features do Oracle que voce nao conhecia - CONNECT BY CLAUSE
TechDay: 10 Features do Oracle que voce nao conhecia - CONNECT BY CLAUSETechDay: 10 Features do Oracle que voce nao conhecia - CONNECT BY CLAUSE
TechDay: 10 Features do Oracle que voce nao conhecia - CONNECT BY CLAUSE
 
TechDay Retrospectiva 2018
TechDay Retrospectiva 2018TechDay Retrospectiva 2018
TechDay Retrospectiva 2018
 
Arquitetura Java - Escalando além do Hype
Arquitetura Java - Escalando além do HypeArquitetura Java - Escalando além do Hype
Arquitetura Java - Escalando além do Hype
 
Como treinar seu estagiario
Como treinar seu estagiarioComo treinar seu estagiario
Como treinar seu estagiario
 
Lidando com o Caos: Testando Código PLSQL em um Projeto Critico
Lidando com o Caos: Testando Código PLSQL em um Projeto CriticoLidando com o Caos: Testando Código PLSQL em um Projeto Critico
Lidando com o Caos: Testando Código PLSQL em um Projeto Critico
 
Como Apresentar Codigo em Slides - Javou #7 - 2016
Como Apresentar Codigo em Slides - Javou #7 - 2016Como Apresentar Codigo em Slides - Javou #7 - 2016
Como Apresentar Codigo em Slides - Javou #7 - 2016
 
Migrations for Java (Javou #4 - JavaCE)
Migrations for Java (Javou #4 - JavaCE)Migrations for Java (Javou #4 - JavaCE)
Migrations for Java (Javou #4 - JavaCE)
 
Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015
Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015
Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015
 
Hibernate efetivo (IA-2014 / Disturbing the Mind)
Hibernate efetivo (IA-2014 / Disturbing the Mind)Hibernate efetivo (IA-2014 / Disturbing the Mind)
Hibernate efetivo (IA-2014 / Disturbing the Mind)
 
Hibernate efetivo (COALTI-2014 / ALJUG)
Hibernate efetivo (COALTI-2014 / ALJUG)Hibernate efetivo (COALTI-2014 / ALJUG)
Hibernate efetivo (COALTI-2014 / ALJUG)
 
Migrations for Java (QCONSP2013)
Migrations for Java (QCONSP2013)Migrations for Java (QCONSP2013)
Migrations for Java (QCONSP2013)
 
Importancia dos Testes Automatizados no dia a dia (Don't Panic)
Importancia dos Testes Automatizados no dia a dia (Don't Panic)Importancia dos Testes Automatizados no dia a dia (Don't Panic)
Importancia dos Testes Automatizados no dia a dia (Don't Panic)
 
Importância dos testes automatizados no dia a dia
Importância dos testes automatizados no dia a diaImportância dos testes automatizados no dia a dia
Importância dos testes automatizados no dia a dia
 
Hibernate Efetivo (QCONSP-2012)
Hibernate Efetivo (QCONSP-2012)Hibernate Efetivo (QCONSP-2012)
Hibernate Efetivo (QCONSP-2012)
 
Migrations for Java
Migrations for JavaMigrations for Java
Migrations for Java
 
Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)
Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)
Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)
 
Importância dos testes automatizadoss
Importância dos testes automatizadossImportância dos testes automatizadoss
Importância dos testes automatizadoss
 
Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaGreenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresa
 
Desafios de um desenvolvedor JSF
Desafios de um desenvolvedor JSFDesafios de um desenvolvedor JSF
Desafios de um desenvolvedor JSF
 
Curso de Java server faces (JSF)
Curso de Java server faces (JSF)Curso de Java server faces (JSF)
Curso de Java server faces (JSF)
 

Anatomia do JSF, JavaServer Faces

  • 1. Anatomia do JSF – JavaServer Faces Rafael Ponte [email_address] http://www.rponte.com.br
  • 2. Agenda Quem sou eu? Desenvolvimento de Aplicações Web O que é JavaServer Faces? Por que usar JSF? Overview da tecnologia Metendo a mão na massa Conclusão
  • 3. Quem sou eu? Rafael Ponte – SCJP 1.4 Sócio fundador da empresa de consultoria Triadworks Atualmente trabalha como analista programador na IVIA Trabalha com desenvolvimento Java/JEE desde 2005 Entusiasta Java e JSF Coordenador do grupo JavaServer Faces International Group Técnico em Desenvolvimento de Software pelo CEFET-CE Ex-aluno frustrado do curso de bacharelado em Matemática da UFC 
  • 5. Introdução Aplicações web tornam-se mais e mais importantes Mais e mais complexidade Ajax, validação (server vs. client), efeitos... Exigência mais elevada do cliente durante os anos Interfaces ricas (fácil de usar) Prazos cada vez mais curtos Desenvolvimento considerado difícil A bola da vez.. Desenvolvimento Web
  • 7. Introdução Model 1 (centrado em páginas)
  • 8. Introdução Model 1 (Arquitetura centrada em páginas)
  • 10. Introdução Apache Struts WebWork (Struts2) Spring MVC Tapestry E muito outros.. E continuam surgindo mais Surgiram diversos frameworks MVC baseado no Model 2
  • 11. Introdução Java não nos fornece o bastante para desenvolvermos aplicações web com produtividade Dificuldade para integrar vários frameworks (algumas vez nem é possível) Falta de padrão para um framework web Ausência de uma API padrão para construir componentes web java E a solução? Problemas
  • 13. Mas o que é JavaServer Faces?
  • 14. O que é JavaServer Faces? ... uma especificação ... um framework baseado em componentes de interface com o usuário ... um framework dirigido à eventos ... padrão de mercado ... RAD ... um framework MVC JavaServer Faces é...
  • 15. O que é JavaServer Faces? ... uma especificação JSR 127 (JSF 1.0 e JSF 1.1) – 2004 JSF 1.0 – não alcançou o sucesso esperado JSF 1.1 – corrigiu os erros da versão anterior JSR 252 (JSF 1.2) - 2006 (Java EE 5.0) JSF 1.2 – melhor compatibilidade com JSP 2.1 e correção de bugs JSR 314 (JSF 2.0) Arquitetura, produtividade, ferramentas RAD, AJAX, melhores componentes UI.. A pergunta é.. quando.. 2007, 2008 ? (Java EE 6.0 ?) JavaServer Faces é...
  • 16. O que é JavaServer Faces? ... um framework baseado em componentes de interface com o usuário JSF é construído sob o conceito de componentes Os componentes são a base para a construção da interface com o usuário Existem componentes padrões equivalentes a quase todas as tags HTML e diversos componentes auxiliares Existem diversas bibliotecas de componentes disponíveis comerciais e open source Os componentes são expressos através de tags em um JSP e posteriormente transformados em HTML JavaServer Faces é...
  • 17. O que é JavaServer Faces? ... um framework dirigido à eventos Possui um modelo para manipulação de eventos Componentes geram determinados eventos Faz chamada à um método (ação no servidor) O estado da aplicação web muda devido ao evento disparado pelo usuário Um evento pode ser um click em um botão, focar sobre um input ou mesmo alterar o valor de uma combo-box JavaServer Faces é...
  • 18. O que é JavaServer Faces? ... padrão de mercado É uma especificação (JCP) Java EE 5.0 Suporte de Big Players Sun, Apache, IBM, Oracle, BEA Systems, Borland, ... IDEs (NetBeans, Eclipse, MyEclipse, JDeveloper, ...) Implementações (Sun (R.I), Apache, IBM, ...) Conjuntos de componentes (ADF Faces, Apache MyFaces, WoodStock, IceFaces, JBoss RichFaces, ...) JavaServer Faces é...
  • 19. O que é JavaServer Faces? ... RAD ( R apid A pplication D evelopment) 4 camadas: Arquitetura de componentes básica Conjunto de componentes padrão Infra-estrutura da aplicação Ferramenta RAD JSF padroniza os primeiros três pontos e permite a criação de ferramentas RAD Utiliza-se IDEs drag-and-drop para construir aplicações: Sun Studio Creator, NetBeans, JDeveloper etc JavaServer Faces é...
  • 20. O que é JavaServer Faces? ... um framework MVC para construir interfaces com o usuário para aplicações web. JSF inclui: Um conjunto de APIs para: representar os componentes UI e gerenciar o estado destes componentes manipular os eventos e validação de entrada do usuário definir e controlar a navegação entre as páginas dar suporte a internacionalização e acessibilidade Duas bibliotecas de tags JavaServer Pages (JSP) para expressar uma interface JavaServer Faces usando uma página JSP JavaServer Faces é...
  • 21. Por que usar JSF?
  • 22. Por que usar JSF? É um padrão de mercado Presente na especificação JEE5.0 e em breve JEE6.0 Suporte de Big Players Fácil de usar  E produtivo também! Fornece separação de funções que envolvem a construção de aplicações Web Alta abstração para desenvolvimento de aplicação web Modelo de programação dirigido a eventos (oposto ao modelo HTTP request/response) Baixa curva de aprendizagem da equipe Vários pontos de extensão (converters, validators, listeners etc) Componentes já prontos!
  • 23. Por que usar JSF? Reusabilidade e estrutura de componentes extensível Acessibilidade (browsers, celulares, pda’s, ...)
  • 24. Por que usar JSF? Suporte cross-browser  Segurança OWASP ( Open Web Application Security Project) cross-site scripting, session hijacking, execução de métodos, ... Natureza orientada a componentes, validação e pontos de extensão Grande atividade da comunidade em fóruns, listas de discussão, blogs, portais, revistas, livros etc Integração com diversos frameworks Spring, Spring-Annotation, Spring-Webflow, Hibernate, EJB3, JPA, JBoss Seam, Acegi, JAAS, Struts, Struts2, Shale, Tiles, Facelets, Sitemesh, DWR, EXT, Crank, Beehive-Webflow, GWT, Portlets e muitos outros
  • 25. Por que usar JSF? Testes unitários Mock objects Shale testing framework Templates Tiles e Sitemesh Facelets (esse sozinho merece uma palestra!) IDEs e WYSIWYG (What you see is what you get) IntelliJ IDEA JBuilder IBM Rational App/Web Developer Red Hat Developer Studio (antigo Exadel Studio) Eclipse ( MyEclipse , Europa etc) NetBeans (Visual WebPack) Sun Java Studio Creator Oracle JDeveloper JSFToolbox (Dreamweaver)
  • 26. Por que usar JSF? MyEclipse (1)
  • 27. Por que usar JSF? MyEclipse (2)
  • 28. Por que usar JSF? MyEclipse (3)
  • 29. Por que usar JSF? NetBeans (1)
  • 30. Por que usar JSF? NetBeans (2)
  • 31. Por que usar JSF? NetBeans (3)
  • 32. Por que usar JSF? JSFToolbox (1)
  • 33. Por que usar JSF? JSFToolbox (2)
  • 34. Por que usar JSF? Grande variedade de componentes comerciais e open-source disponíveis * Mais componentes? http://www.jsfmatrix.net/ Backbase Simplica (ECruiser Suite) QuipuKit Blueprints RCFaces Jenia4Faces ZK G4JSF (GWT API) YUI4JSF (Yahoo API) Ext4JSF (Ext API) Dynamic Faces Crank Myfaces Tomahawk Myfaces Sandbox Myfaces Tobago Myfaces Trinidad Myfaces Orchestra ADF Faces IceFaces WoodStock Net Advantage WebGalileoFaces JBoss RichFaces JBoss Ajax4jsf
  • 35. Por que usar JSF? MyFaces (1)
  • 36. Por que usar JSF? MyFaces (2)
  • 37. Por que usar JSF? MyFaces (3)
  • 38. Por que usar JSF? RichFaces (1)
  • 39. Por que usar JSF? RichFaces (2)
  • 40. Por que usar JSF? RichFaces (3)
  • 41. Por que usar JSF? WoodStock (1)
  • 42. Por que usar JSF? WoodStock (2)
  • 44. Overview da tecnologia Componentes Renderers Managed-beans Converters / Validators Navegação Eventos Ciclo de vida (Request Lifecycle) Conceitos chaves do JSF
  • 45. Overview da tecnologia Separa a lógica de negócio da apresentação Cada view é composta por uma hierarquia de componentes Componentes (1)
  • 46. Overview da tecnologia Componentes podem ser adicionados na view programaticamente ou via template (JSP por default, ou Facelets para melhor desempenho e fácil desenvolvimento) Componentes são expressos em tags em uma página JSP e em sua maioria são de interface com o usuário Os componentes padrões são divididos em dois grupos Faces Core <f:view> , <f:loadBundle> , <f:param> HTML wrappers <h:dataTable> , <h:selectOneMenu> Componente = class + [renderer] + tag handler (JSP) Componentes (2)
  • 47. Overview da tecnologia Responsável por exibir o componente no cliente São agrupados em render kits Render kit padrão é o HTML, mas podemos ter WML, SVG etc. Efetua o encode (gera HTML do componente) Efetua o decode (seta o componente com os dados da URL query string e do formulário) Resumindo <h:inputText id = “login” size = “16” /> <input type = “text” id = “myForm:login” name = “myForm:login” size = “16” /> Renderers
  • 48. Overview da tecnologia POJO – Plain Old Java Objects Managed beans Action ActionForm Managed bean (POJO) http Podem ser definidos nos escopos: Application, Session, Request e None
  • 49. Overview da tecnologia Managed beans
  • 50. Overview da tecnologia “ Binda” valor do componente ao managed-bean O binding ocorre através de JSF Expression Language (EL) Semelhante a JSTL, porém usa-se ‘#{}’ no lugar de ‘${}’ Pode-se executar métodos no modelo através de expressões Não é processada imediatamente como na JSTL A partir da JSF 1.2 utiliza-se a Unified Expression Language (JSP 2.1) que resolve problemas de incompatibilidade entre a JSF-EL e JSP-EL JSF Value Binding
  • 51. Overview da tecnologia JSF Value Binding – Exemplo (1) login.jsp Objeto meuManagedBean
  • 52. Overview da tecnologia JSF Value Binding – Exemplo (2) login.jsp Managed-beans são registrados dentro do faces-config.xml
  • 53. Overview da tecnologia Tem por finalidade converter e/ou formatar objetos do tipo Java para String e vice-versa Converters são bi-direcionais Managed-bean faz: getAsObject() JSP faz: getAsString() JSF já fornece converters padrões para date / time, numbers etc Você pode implementar seu próprio converter Basta implementar a interface javax.faces.convert.Converter Registrar o converter no faces-config.xml O converter pode atuar de forma explícita(id) ou implícita(class) de acordo com a sua configuração no faces-config.xml Converters (1)
  • 54. Overview da tecnologia Converters (2) javax.faces.convert.Converter
  • 55. Overview da tecnologia Converters (3) Converter é registrado dentro faces-config.xml, no exemplo abaixo estamos registrando um converter para que toda propriedade do tipo org.cejug.model.CPF de qualquer bean use este converter <converter> <converter-for-class> org.cejug.model.CPF </converter-for-class> <converter-class> org.cejug.faces.CPFConverter </converter-class> </converter>
  • 56. Overview da tecnologia Converters (4) - Exemplo <h:inputText id = “cpf“ value =&quot;#{UserRegistration.user.cpf}&quot; > <f:converter converterId = “cejug.CPFConverter“ /> </h:inputText> Converter declarado explicitamente Ou implicitamente (converter mapeado para objetos do tipo CPF) <h:inputText id = “cpf“ value =&quot;#{UserRegistration.user.cpf}&quot; > [Olha mãe!! Nenhum converter  ] </h:inputText>
  • 57. Overview da tecnologia Tem por responsabilidade garantir que o valor informado pelo usuário seja válido Validator trabalha com objetos, não somente com Strings JSF já fornece validators padrões como required, length, range etc Você pode implementar seu próprio validator Basta implementar a interface javax.faces.validator.Validator Registrar o validator no faces-config.xml Você pode associar um ou mais validators à um componente Validators (1)
  • 58. Overview da tecnologia Validators (2) javax.faces.validator.Validator Validators são registrados no faces-config.xml
  • 59. Overview da tecnologia Validators (3) - Exemplo <h:inputText id = “firstName“ value =&quot;#{UserRegistration.user.firstName}“ required = “true” > <f:validateLength minimum = &quot;2“ maximum = &quot;25“ /> </h:inputText> Validação para obrigatoriedade e comprimento do campo
  • 60. Overview da tecnologia Navegação de uma página para outra Simples e poderoso sistema de navegação O framework seleciona a próxima view baseado Na view anterior Resultado(outcome) de uma action EL de ação (ex.: #{mBean.user .save }) Qualquer combinação acima Permite wildcard (‘*’) para páginas de origem ( from-view-id ) Navegação (1)
  • 61. Overview da tecnologia <navigation-rule> <from-view-id> /jsp/deposito/guincheiro/* </from-view-id> <navigation-case> <from-outcome> searchlist </from-outcome> <to-view-id> /jsp/deposito/guincheiro/searchList.jsp </to-view-id> </navigation-case> < navigation-case> <from-outcome> update </from-outcome> <to-view-id> /jsp/deposito/guincheiro/update.jsp </to-view-id> </navigation-case> </navigation-rule> Navegação (2) - Exemplo
  • 62. Overview da tecnologia Componentes geram determinados eventos que por sua vez disparam ações no servidor (método(s) no managed-bean ou listeners) Você também pode implementar listeners de ação associados a outros componentes do formulário Os listeners mais comuns do JSF são ActionListener ValueChangeListener Eventos (1)
  • 63. Overview da tecnologia <h:commandButton action = “listar” value = “Listar” /> Eventos (2) - Exemplo <h:commandLink action =“#{cadastroBean.cadastrar}” value = “Cadastrar” /> public String cadastrar() { // processa evento return “listar” ; // retorna para view “listar” } Action event para navegação Action event que executa método no managed-bean Método no managed-bean
  • 64. Overview da tecnologia <h:selectOneMenu id = “UF” value =“#{cadastroBean.uf}” valueChangeListener =“#{cadastroBean.carregaCidades}” onchange = “submit();” > <f:selectItems value =“#{cadastroBean.ufList}” /> </h:selectOneMenu> Eventos (3) - Exemplo public void carregaCidades(ValueChangeEvent event) { // processa evento String uf = event.getNewValue(); // obtém novo valor this . cidadesList = Servico. carregaCidades (uf); // processa evento } Value-change event que executa método após alterar o valor do componente Método no managed-bean
  • 65. Overview da tecnologia JSF Request Lifecycle May skip to render phase or abort request Restore View Apply Request Values Process Validations Update Model Invoke Application Render Response Request Response Retrieve component tree from client or session Decode components (populate w/ String values) Convert Strings to Objects Validate Objects Invoke bean method(s) Compute navigation Call setters on managed beans Call bean getters to populate components
  • 66. Overview da tecnologia Customizar componentes Phase listeners (antes, depois de qualquer fase) Customizar converters / validators Customizar renderers Customizar ActionListenerImpl para manipular eventos Decorar ou substituir view handler, navigation handler, state manager etc JSF Extension Points
  • 67. Overview da tecnologia Arquivo XML para configurar recursos da aplicação Contém regras de navegação, customização e extensão de converters, validators, componentes etc Geralmente está localizado dentro de /WEB-INF/faces-config.xml Pode ser dividido em diretórios e sub-diretórios ou dentro de arquivos jar Seta javax.faces.application.CONFIG_FILES no web.xml Ou então coloca-se META-INF/faces-config.xml dentro de um jar faces-config.xml (1)
  • 68. Overview da tecnologia <faces-config ... > <!-- ******************************************************************* --> <!-- CONVERTERS --> <!-- ******************************************************************* --> <converter> <converter-id> core.faces.CnpfCnpjConverter </converter-id> <converter-class> core.faces.converter.CnpfCnpjConverter </converter-class> </converter> <!-- ******************************************************************* --> <!-- MANAGED BEANS --> <!-- ******************************************************************* --> <managed-bean> <managed-bean-name> reportBean </managed-bean-name> <managed-bean-class> core.faces.bean.ReportBean </managed-bean-class> <managed-bean-scope> request </managed-bean-scope> </managed-bean> <!-- ******************************************************************* --> <!-- NAVIGATION --> <!-- ******************************************************************* --> <navigation-rule> <from-view-id> /jsp/deposito/tiporeq/searchList.jsp </from-view-id> <navigation-case> <from-outcome> deposito.tiporeq.update </from-outcome> <to-view-id> /jsp/deposito/tiporeq/update.jsp </to-view-id> </navigation-case> </navigation-rule> </faces-config> faces-config.xml (2) - Exemplo faces-config.xml
  • 69. Hora de acordar !! Wake up Neo, wake up!!
  • 70. Metendo a mão na massa
  • 71. Libs necessárias JSF 1.2 RI jsf-api.jar jsf-impl.jar jstl-1.2.jar 2. Configurando o projeto com uma IDE “de gente”  MyEclipse 3. Configurando e implementando a aplicação 4. Rodando a aplicação (Tomcat 6.0) Servlet 2.5 e JSP 2.1 Metendo a mão na massa
  • 72. Metendo a mão na massa Inserindo AJAX de maneira fácil e indolor.. Baixando JBoss RichFaces e dependências commons-beanutils commons-collections commons-digester commons-logging Configurando web.xml Alterando as páginas Rodando a aplicação novamente!
  • 73. Conclusão Meu objetivo!  JSF é a bala de prata para o desenvolvimento de aplicações web?! Vale a pena investir nesta tecnologia? Mercado em Fortaleza Por onde começar? javasf - http://groups.google.com/group/javasf cejug - http://www.cejug.org/