Produtividade com JavaServer Faces

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite

    Produtividade com JavaServer Faces - Presentation Transcript

    1. JavaServer Faces Facilitando o Desenvolvimento Web
    2. Tópicos Abordados
      • O que JavaServer Faces nos traz?
        • Especificações
        • Managed Beans
        • Expression Language
      • Life Cycle JSF
      • Roteiro de Uso
      • IDEs
      • Customizações
      • Pequenas mudanças no Default
      • Implementações
      • Facelets
      • JSF 2.0
      Facilitando o desenvolvimento Web com JavaServer Faces
    3. Apresentação
      • Eduardo Bregaida
        • Analista de sistemas Java da Tata Consultancy Services do Brasil - TCS.
          • Banco Real;
          • VisaNet
        • Membro do Java Community Process (JCP).
        • Desenvolvedor Java há 4 anos.
        • Desenvolvedor JSF há 2 anos.
        • Agente Certificador do projeto JEDI na região do grande ABC.
        • Bacharelando em Sistemas de Informação na Universidade IMES.
    4. O que JavaServer Faces nos traz?
    5. O que JavaServer Faces nos traz?
      • É mais do que um framework, é uma especificação baseada em MVC;
      • Suporte a internacionalização;
      • Facilita criação de telas;
      • Facilita a transferência dos dados entre telas e camadas de negócio através da EL.
      • Produtividade para conversores recebidos do formulário para os tipos nas classes;
      • Flexibilidade para renderização.
      • Criar modelos simples de eventos entre interfaces gráficas e as classes no servidor.
      • Mecanismos produtivos para validação de campos na tela.
      • Facilidade para criação de componentes;
    6. Especificações
      • JSF 1.0 e 1.1 – JSR 127
        • Problemas com renderização
        • ELs diferentes entre JSP e JSF
        • Não portava a tag JSTL <c:forEach>
      • JSF 1.2 – JSR 252
        • 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.
      • JSF 2.0 – JSR 314
        • Ainda está em discussão muitas coisas, porém estão planejando deixar bem integrado e intuitivo JSF e JSP.
    7. Uma pequena aplicação.
    8. Managed Beans
      • É uma classe que expões objetos de negócio para camada de apresentação;
      • São Registrados no faces-config.xml;
      • 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;
      • São como as Actions do Struts, porém os form beans são injetados por setters dentro do seu próprio bean;
      • Os ManagedBeans serão usados na EL das páginas.
    9. Expression Language - EL
      • É uma poderosa linguagem de expressão (Linguagem de navegação) para acessar propriedades de beans e coleções.
      • Quando ocorrer uma requisição pelo browser é preenchido dinamicamente os elementos da página pela camada de negócios.
      • Quando ocorre um Submit ocorre a modificação no estado da camada de negócio.
    10. Life Cycle JSF
    11. Roteiro de Uso
    12. Roteiro de Uso
      • Criar um bean que represente o formulário
      • Usar f:view e h:form para formulários
      • Especificar o Action Controller com o atributo de ação h:commandButton.
      • 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.
      • No faces-config é usado para declarar o form bean e as regras de navegação.
      • Criar os JSP´s responsáveis por cada retorno declarado
    13. Exemplo: Passo 1 – Criar um Bean
      • package br.com.justjava.sgv.cadastro.campanha;
      • import javax.persistence.Entity;
      • import javax.persistence.GeneratedValue;
      • import javax.persistence.GenerationType;
      • import javax.persistence.Id;
      • @Entity
      • public class CadastroCampanha {
      • @Id
      • @GeneratedValue(strategy = GenerationType. IDENTITY )‏
      • private long id;
      • private String nomeCampanha;
      • private String observacaoCampanha;
      • public long getId() {
      • return id;
      • }
      • public void setId( long id) {
      • this .id = id;
      • }
      • public String getNomeCampanha() {
      • return nomeCampanha;
      • }
      • public void setNomeCampanha(String nomeCampanha) {
      • this .nomeCampanha = nomeCampanha;
      • }
      • public String getObservacaoCampanha() {
      • return observacaoCampanha;
      • }
      • public void setObservacaoCampanha(String observacaoCampanha) {
      • this .observacaoCampanha = observacaoCampanha;
      • }
      • }
    14. Exemplo: Passo 2 e 3 - f:view e h:form e Especificar o Action Controller
      • <%@ page contentType=&quot;text/html; charset=UTF-8&quot; %>
      • <%@ taglib uri=&quot;http://java.sun.com/jsf/html&quot; prefix=&quot;h&quot; %>
      • <%@ taglib uri=&quot;http://java.sun.com/jsf/core&quot; prefix=&quot;f&quot; %>
      • <%@ taglib uri=&quot;http://myfaces.apache.org/tomahawk&quot; prefix=&quot;t&quot; %>
      • <html>
      • <head>
      • <title>Cadastro de Cliente</title>
      • </head>
      • <body>
      • <f:view>
      • <h:form>
      • <t:panelGrid align=&quot;center&quot;>
      • <h:outputText value=&quot;Nome Campanha:&quot;/>
      • <h:inputText value=&quot;#{campanhaHandler.cadastroCampanha.nomeCampanha}&quot;required=&quot;true&quot;/>
      • <h:outputText value=&quot;Observação:&quot;/>
      • <h:inputTextarea value=&quot;#{campanhaHandler.cadastroCampanha.observacaoCampanha}&quot; required=&quot;true&quot;/>
            • <h:commandButton value=&quot;Gravar&quot; action=&quot;#{campanhaHandler.salvar}&quot;/>
      • </t:panelGrid>
      • </h:form>
      • </f:view>
      • </body>
      • </html>
    15. Exemplo: Passo 4 – Criar o Controlador
      • public void salvar() {
      • Session session = HibernateUtil. getCurrentSession ();
      • DAO<CadastroCampanha> dao = new DAO<CadastroCampanha>(session,CadastroCampanha. class );
      • if (cadastroCampanha.getId() == 0) {
      • dao.salveOrUpdate( this .cadastroCampanha);
      • } else {
      • session.merge( this .cadastroCampanha);
      • }
      • this .cadastroCampanha = new CadastroCampanha();
      • }
    16. Exemplo: Passo 5 – Configurar o faces-config.xml
      • <managed-bean>
      • <managed-bean-name>campanhaHandler</managed-bean-name>
      • <managed-bean-class>
      • br.com.justjava.sgv.cadastro.campanhahandler.CampanhaHandler
      • </managed-bean-class>
      • <managed-bean-scope>session</managed-bean-scope>
      • </managed-bean>
      • <navigation-rule>
      • <from-view-id>/cadastroCampanha.jsp</from-view-id>
      • </navigation-rule>
    17. Exemplo: Passo 6 – Criar o JSP responsável pelo retorno
      • <!- - Insiro este <h:form> com a tabela de retorno dentro do próprio JSP que cadastra - ->
      • <h:form>
      • <t:panelGrid align=&quot;center&quot;>
      • <h:dataTable value=&quot;#{campanhaHandler.allCadastroCampanha}&quot; id=&quot;tabelaDados&quot; rows=&quot;5&quot; var=&quot;ccam&quot; border=&quot;1“>
      • <h:column>
      • <f:facet name=&quot;header&quot;>
      • <h:outputText value=&quot;Nome Campanha&quot;/>
      • </f:facet>
      • <h:outputText value=&quot;#{ccam.nomeCampanha}&quot;/>
      • </h:column>
      • <h:column>
      • <f:facet name=&quot;header&quot;>
      • <h:outputText value=&quot;Observação&quot;/>
      • </f:facet>
      • <h:outputText value=&quot;#{ccam.observacaoCampanha}&quot;/>
      • </h:column>
      • </h:dataTable>
      • </t:panelGrid>
      • </h:form>
    18. Rodando
      • Antes:
      • Depois:
    19. IDEs
    20. IDEs
      • Netbeans - Web Pack – Studio Creator
      • Eclipse
        • Webtools + jsftoos (a ser liberado em Julho)
        • EasyEclipse
        • MyEclipse
        • Red Hat Developer Studio
      • Rational Application Developer – WSAD
      • JDeveloper
    21. Customizações
    22. Customizações
      • Facilidade na customização de:
        • Validadores
        • Conversores
        • Componentes de Interface
        • Renderizadores
        • Mensagens
    23. Pequenas mudanças no Default
    24. Pequenas mudanças no Default
      • Montagem de templates: como Clay (Shale) e Facelets e substituir um pelo outro é questão de uma linha de configuração.
      • A beans factory: podemos usar os beans do Spring ao invés dos managed beans do faces-config.xml.
      • Renderização dos componentes: existem implementações, utilizando por exemplo XUL ou HTML + Ajax.
    25. Implementações
    26. Implementações
      • Apache
        • MyFaces
          • Tomahawk/ Sandbox/ Tobago/ Trinidad/ Orchestra
      • Red Hat/JBoss
        • RichFaces
        • Ajax4JSF
      • Red Hat/JBoss
        • RichFaces
      • ICEsoft Technologies Inc.
        • ICEfaces
      • Oracle
        • ADF Faces
    27. Facelets
    28. Facelets
      • Facelets
        • “ Mais do que templates, componentes reutilizáveis”
        • Sem XML
        • Renderização mais ágil, pois acompanha as fases do JSF
        • Conhecimento de seu template sem muito esforço
        • Proximidade (programador x designer)
        • Java Server Faces Component (“jsfc”)
    29. Facelets
      • Editor WYSIWYG
      • (Dreamweaver)
    30. Facelets
      • Red Hat Developer Studio
    31. Facelets
      • Template
      • Página que utiliza componente
      • Java Server Faces Component
    32. O que vai ter novo no JSF 2.0?
    33. JSF 2.0
      • Suporte a templates, baseado no Facelets, Tiles, dentre outros;
      • Simplificar a criação de aplicações do tipo CRUD;
      • Melhor tratamento de mensagens de erro;
      • Mecanismo de tratamento de exceções padrão;
      • Criação de aplicações Web sem XML, utilizando anotações;
      • Simplificação no desenvolvimento de componentes;
      • 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;
      • Permitir que artefatos sejam alterados sem a necessidade de reinicializar o servidor.
    34. Perguntas???
    35. Contato: [email_address] http:// www.javawora.blogspot.com Blog Java Anywhere:
    36. Referências
      • http://www.caelum.com.br
      • http://javawora.blogspot.com/search/label/JSF
      • http://www.guj.com.br/java.tutorial.artigo.158.1.guj
      • http://java.sun.com/javaee/javaserverfaces/
      • www.jcp.org
        • JSRs: 127; 252; 314.
      • http://www.jspolympus.com/JSF/JSFLifeCycle.jsp
      • http://www.guj.com.br/java.tutorial.artigo.187.1.guj
      • http://javaplace.blogspot.com/2007/07/frameworks-jsf-que-encapsulam-o-uso-do.html
      • http://www.nabble.com/Struts-+-JSF:-Vale-a-Pena--t4056131.html
      • http://www.javaplace.blogspot.com/
      • http://myfaces.apache.org/
      • http://www.oracle.com/technology/products/adf/adffaces/index.html
      • http://www.icefaces.org/main/home/index.jsp
      • https://ajax4jsf.dev.java.net/
      • Revistas:
        • Mundo Java nº: 21.
        • Java Magazine nº: 23; 26; 43; 44; 45; 46; 47; 48.
      • Livros:
        • Faces in Action (Kito Mann – Manning, 2004);
        • JavaServer Faces (Hans Bergsten – O´Reilly, 2004);
        • Core JavaServer Faces (David Geary e Cay Horstmann).
    37. Obrigado [email_address] http://www.javawora.blogspot.com

    + Eduardo BregaidaEduardo Bregaida, 2 years ago

    custom

    1652 views, 1 favs, 6 embeds more stats

    Palestra Ministrada na Universidade de Santa Barbar more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1652
      • 1156 on SlideShare
      • 496 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 60
    Most viewed embeds
    • 416 views on http://javawora.blogspot.com
    • 40 views on http://www.javawora.blogspot.com
    • 35 views on http://www.infoblogs.com.br
    • 3 views on http://www.portaljava.com
    • 1 views on http://209.85.215.104

    more

    All embeds
    • 416 views on http://javawora.blogspot.com
    • 40 views on http://www.javawora.blogspot.com
    • 35 views on http://www.infoblogs.com.br
    • 3 views on http://www.portaljava.com
    • 1 views on http://209.85.215.104
    • 1 views on http://ww.javabb.org

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories