Anatomia do JSF – JavaServer Faces

download Anatomia do JSF – JavaServer Faces

If you can't read please download the document

description

Anatomia do JSF – JavaServer Faces. Rafael Ponte. [email protected]. Agenda. Quem sou eu? Desenvolvimento de Aplicações Web O que é JavaServer Faces? Por que usar JSF? Overview da tecnologia Conclusão. Quem sou eu?. Rafael Ponte – SCJP 1.4 e estudando para SCWCD - PowerPoint PPT Presentation

Transcript of Anatomia do JSF – JavaServer Faces

  • Anatomia do JSF JavaServer FacesRafael [email protected]

  • AgendaQuem sou eu?Desenvolvimento de Aplicaes WebO que JavaServer Faces?Por que usar JSF?Overview da tecnologiaConcluso

  • Quem sou eu?Rafael Ponte SCJP 1.4 e estudando para SCWCDScio fundador da empresa de consultoria e desenvolvimento Triadworks Agile Software DevelopmentAtualmente trabalho como analista programador na IVIATrabalha com desenvolvimento Java/JEE desde 2005Entusiasta Java e JSFModerador da lista de discusso JavaServer Faces Brazilian GroupTcnico em Desenvolvimento de Software pelo CEFET-CEEx-aluno frustrado do curso de bacharelado em Matemtica da UFC

  • Desenvolvimento de Aplicaes Web

  • IntroduoAplicaes web tornam-se mais e mais importantesMais e mais complexidadeAjax, validao (server vs. client), ...Exigncia mais elevada do cliente durante os anosInterfaces ricas (fcil de usar)Prazos cada vez mais curtos Desenvolvimento considerado difcilA bola da vez.. Desenvolvimento Web (geralmente)

  • IntroduoDesenvolvimento Web (Java)

  • IntroduoModel 1 (centrado em pginas)

  • IntroduoModel 1 (Arquitetura centrada em pginas)

  • IntroduoModel 2 (MVC)

  • IntroduoApache StrutsWebWork (Struts2)Spring MVCTapestryE muito outros..E continuam surgindo maisSurgiram diversos frameworks MVC baseado no Model 2

  • IntroduoJava no nos fornece o bastante para desenvolvermos aplicaes web com produtividadeDificuldade para integrar vrios frameworks (algumas vez nem possvel)Falta de padro para um framework webAusncia de uma API padro para construir componentes web javaE a soluo?Problemas

  • JavaServer Faces!

  • O que JavaServer Faces?

  • O que JavaServer Faces?... uma especificao... um framework baseado em componentes de interface com o usurio... um framework dirigido eventos... padro de mercado... RAD... um framework MVC

    JavaServer Faces ...

  • O que JavaServer Faces?... uma especificaoJSR 127 (JSF 1.0 e JSF 1.1) 2004JSF 1.0 no alcanou o sucesso esperadoJSF 1.1 corrigiu os erros da verso anteriorJSR 252 (JSF 1.2) - 2006 (Java EE 5.0)JSF 1.2 melhor compatibilidade com JSP 2.1 e correo de bugsJSR 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 usurioJSF construdo sob o conceito de componentesOs componentes so a base para a construo da interface com o usurioExistem componentes padres equivalentes a quase todas as tags HTML e diversos componentes auxiliaresExistem diversas bibliotecas de componentes disponveis comerciais e open sourceOs componentes so expressos atravs de tags em um JSP e posteriormente transformados em HTMLJavaServer Faces ...

  • O que JavaServer Faces?... um framework dirigido eventosPossui um modelo para manipulao de eventosComponentes geram determinados eventosFaz chamada um mtodo (ao no servidor)O estado da aplicao web muda devido ao evento disparado pelo usurioUm evento pode ser um click em um boto, focar sobre um input ou mesmo alterar o valor de uma combo-box

    JavaServer Faces ...

  • O que JavaServer Faces?... padro de mercado uma especificao (JCP)Java EE 5.0Suporte de Big PlayersSun, Apache, IBM, Oracle, BEA Systems, Borland, ...IDEs (NetBeans, Eclipse, MyEclipse, JDeveloper, ...)Implementaes (Sun (R.I), Apache, IBM, ...)Conjuntos de componentes (ADF Faces, Apache MyFaces, WoodStock, IceFaces, JBoss RichFaces, ...)

    JavaServer Faces ...

  • O que JavaServer Faces?... RAD (Rapid Application Development)4 camadas:Arquitetura de componentes bsicaConjunto de componentes padroInfra-estrutura da aplicaoFerramenta RADJSF padroniza os primeiros trs pontos e permite a criao de ferramentas RADUtiliza-se IDEs drag-and-drop para construir aplicaes:Sun Studio Creator, NetBeans, JDeveloper etc

    JavaServer Faces ...

  • O que JavaServer Faces?... um framework MVC para construir interfaces com o usurio para aplicaes web. JSF inclui:Um conjunto de APIs para:representar os componentes UI e gerenciar o estado destes componentesmanipular os eventos e validao de entrada do usuriodefinir e controlar a navegao entre as pginas dar suporte a internacionalizao e acessibilidadeDuas bibliotecas de tags JavaServer Pages (JSP) para expressar uma interface JavaServer Faces usando uma pgina JSP

    JavaServer Faces ...

  • Por que usar JSF?

  • Por que usar JSF? um padro de mercadoPresente na especificao JEE5.0 e em breve JEE6.0Suporte de Big PlayersFcil de usar E produtivo tambm!Fornece separao de funes que envolvem a construo de aplicaes Web Alta abstrao para desenvolvimento de aplicao webModelo de programao dirigido a eventos (oposto ao modelo HTTP request/response)Baixa curva de aprendizagem da equipeVrios pontos de extenso (converters, validators, listeners etc)Componentes j prontos!

  • Por que usar JSF?Reusabilidade e estrutura de componentes extensvelAcessibilidade (browsers, celulares, pdas, ...)

  • Por que usar JSF?Suporte cross-browser SeguranaOWASP (Open Web Application Security Project)cross-site scripting, session hijacking, execuo de mtodos, ...Natureza orientada a componentes, validao e pontos de extensoGrande atividade da comunidade em fruns, listas de discusso, blogs, portais, revistas, livros etcIntegrao com diversos frameworksSpring, 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 unitriosMock objectsShale testing frameworkTemplatesTiles e SitemeshFaceletsIDEs e WYSIWYG (What you see is what you get)

    Eclipse (MyEclipse, Europa etc) NetBeans (Visual WebPack) Sun Java Studio Creator Oracle JDeveloper JSFToolbox (Dreamweaver) IntelliJ IDEA JBuilder IBM Rational App/Web Developer Red Hat Developer Studio (antigo Exadel Studio)

  • 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 disponveis* Mais componentes? http://www.jsfmatrix.net/

    Myfaces Tomahawk Myfaces Sandbox Myfaces Tobago Myfaces Trinidad Myfaces Orchestra ADF Faces IceFaces WoodStock Net Advantage WebGalileoFaces JBoss RichFaces JBoss Ajax4jsf Backbase Simplica (ECruiser Suite) QuipuKit Blueprints RCFaces Jenia4Faces ZK G4JSF (GWT API) YUI4JSF (Yahoo API) Ext4JSF (Ext API) Dynamic Faces Crank

  • 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 tecnologiaComponentesRenderersManaged-beansConverters / ValidatorsNavegaoEventosCiclo de vida (Request Lifecycle)Conceitos chaves do JSF

  • Overview da tecnologiaSepara a lgica de negcio da apresentaoCada view composta por uma hierarquia de componentesComponentes (1)

  • Overview da tecnologiaComponentes podem ser adicionados na view programaticamente ou via template (JSP por default, ou Facelets para melhor desempenho e fcil desenvolvimento)Componentes so expressos em tags em uma pgina JSPOs componentes padres so divididos em dois gruposFaces Core , , HTML wrappers , Componentes em sua maioria so de interface com o usurioComponente = class + [renderer] + tag handler (JSP)Componentes (2)

  • Overview da tecnologiaResponsvel por exibir o componente no clienteSo agrupados em render kitsRender kit padro 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 formulrio)Resumindo

    Renderers

  • Overview da tecnologiaPOJO Plain Old Java ObjectsLinka a view ao modelo (controller)Funciona como um espelho da viewSo acessados via Expression Language (EL) na JSPAlgo semelhante ao Action+ActionForm do StrutsDeclarado no faces-config.xml nos possveis escoposApplication (uma instncia por aplicao)Session (uma instncia por sesso/usurio)Request (uma instncia por request)None (criado sob demanda)

    Managed beans

  • Overview da tecnologiaBinda valor do componente ao managed-beanO binding ocorre atravs de JSF Expression Language (EL)Semelhante a JSTL, porm usa-se #{} no lugar de ${}Pode-se executar mtodos no modelo atravs de expressesNo processada imediatamente como na JSTLA 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-ELPara cada request o frameworkConverte cada valor de entrada (String) em um tipo de objeto JavaNa exibio(output) converte do tipo de objeto Java para StringJSF Value Binding

  • Overview da tecnologiaJSF Value Binding Exemplo (1)view.jspObjeto logger

  • Overview da tecnologiaJSF Value Binding Exemplo (2)view.jspManaged-beans so registrados dentro do faces-config.xml

  • Overview da tecnologiaTem por finalidade converter e/ou formatar objetos do tipo Java para String e vice-versaConverters so bi-direcionaisInput converter: getAsObject()Output converter: getAsString()JSF j fornece converters padres para date / time, numbers etcVoc pode implementar seu prprio converterBasta implementar a interface javax.faces.convert.ConverterRegistrar o converter no faces-config.xmlO converter pode atuar de forma explcita(id) ou implcita(class) de acordo com a sua configurao no faces-config.xmlConverters (1)

  • Overview da tecnologiaConverters (2)javax.faces.convert.Converter

  • Overview da tecnologiaConverters (3)Converter registrado dentro faces-config.xml, no exemplo abaixo estamos registrando um converter para que toda propriedade do tipo ValuedTypesafeEnum de qualquer bean use este converter

  • Overview da tecnologiaConverters (4) - Exemplo

    [Olha me!! Nenhum converter ]

  • Overview da tecnologiaTem por responsabilidade garantir que o valor informado pelo usurio seja vlidoValidator trabalha com objetos, no somente com StringsJSF j fornece validators padres como required, length, range etcVoc pode implementar seu prprio validatorBasta implementar a interface javax.faces.validator.Validator Registrar o validator no faces-config.xml Voc pode associar um ou mais validators um componenteValidators (1)

  • Overview da tecnologiaValidators (2)javax.faces.validator.ValidatorValidators so registrados no faces-config.xml

  • Overview da tecnologiaValidators (3) - Exemplo
  • Overview da tecnologiaNavegao de uma pgina para outraSimples e poderoso sistema de navegaoO framework seleciona a prxima view baseadoNa view anteriorResultado(outcome) de uma actionPrprio evento (ao)Qualquer combinao acimaPermite wildcard (*) para pginas de origem (from-view-id)Navegao (1)

  • Overview da tecnologia

    /jsp/deposito/guincheiro/* searchlist /jsp/deposito/guincheiro/searchList.jsp update /jsp/deposito/guincheiro/update.jsp

    Navegao (2) - Exemplo

  • Overview da tecnologiaComponentes geram determinados eventos que por sua vez disparam aes no servidor (mtodo(s) no managed-bean ou listeners)Voc tambm pode implementar listeners de ao associados a outros componentes do formulrioOs listeners mais comuns do JSF soActionListenerValueChangeListenerEventos (1)

  • Overview da tecnologia

    Eventos (2) - Exemplo

    public String cadastrar() { // processa evento return listar; // retorna para view listar}Action event para navegaoAction event que executa mtodo no managed-beanMtodo no managed-bean

  • Overview da tecnologia

    Eventos (3) - Exemplopublic void carregaCidades(ValueChangeEvent event) { // processa evento String uf = event.getNewValue(); // obtm novo valor this.cidadesList = Servico.carregaCidades(uf); // processa evento}Value-change event que executa mtodo aps alterar o valor do componenteMtodo no managed-bean

  • Overview da tecnologiaJSF Request Lifecycle May skip to render phase or abort requestRestore ViewApply Request ValuesProcess ValidationsUpdate ModelInvoke ApplicationRender ResponseRequestResponseRetrieve component tree from client or sessionDecode components (populate w/ String values)Convert Strings to Objects Validate ObjectsInvoke bean method(s) Compute navigationCall setters on managed beansCall bean getters to populate components

  • Overview da tecnologiaCustomizar componentesPhase listeners (antes, depois de qualquer fase)Customizar converters / validatorsCustomizar renderersCustomizar ActionListenerImpl para manipular eventosDecorar ou substituir view handler, navigation handler, state manager etcJSF Extension Points

  • Overview da tecnologiafaces-config.xmlArquivo XML para configurar recursos da aplicaoContm regras de navegao, customizao e extenso de converters, validators, componentes etcGeralmente est localizado dentro de /WEB-INF/faces-config.xmlPode ser dividido em diretrios e sub-diretrios ou dentro de arquivos jarSeta javax.faces.application.CONFIG_FILES no web.xmlOu ento coloca-se META-INF/faces-config.xml dentro de um jarJSF Configurao (1)

  • Overview da tecnologia

    core.faces.CnpfCnpjConverter core.faces.converter.CnpfCnpjConverter reportBean core.faces.bean.ReportBean request /jsp/deposito/tiporeq/searchList.jsp deposito.tiporeq.update /jsp/deposito/tiporeq/update.jsp

    JSF Configurao (2) - Exemplofaces-config.xml (sem cabealho de arquivo xml)

  • Overview da tecnologiaTemplates de viso (JSP ou Facelets)Managed-bean para cada view registrado dentro do faces-config.xmlRegras de navegao dentro do faces-config.xmlO que seria uma tpica aplicao JSF?S isso mesmo !?

  • ConclusoMeu objetivo! JSF a bala de prata para o desenvolvimento de aplicaes web?!Vale a pena investir nesta tecnologia?Mercado em FortalezaPor onde comear?javasf - http://groups.google.com/group/javasfcejug - http://www.cejug.org/

  • Perguntas?

  • Obrigado!