Java Server Faces

3,553 views

Published on

Published in: Technology, Education

Java Server Faces

  1. 1. Java Server Faces João Sávio Ceregatti Longo Campus Ambassador Sun Microsystems 1
  2. 2. Por que Java Server Faces? • Duas técnicas de desenvolvimento de aplicativos para web: (1) Desenvolvimento rápido; (2) Programação aprofundada; Sun Confidential: Internal Only 2
  3. 3. Por que Java Server Faces? • Facilidade de programar interface de usuários • É mais do que um framework, é uma especificação baseada em MVC • Suporte a internacionalização • Conversores e validadores Sun Confidential: Internal Only 3
  4. 4. Por que Java Server Faces? • Flexibilidade para renderização • Facilita a transferência dos dados entre telas e camadas de negócio através da EL • Padrão • Open Source Sun Confidential: Internal Only 4
  5. 5. Empresas que utilizam JSF (não-oficial) Sun Confidential: Internal Only 5
  6. 6. Empresas que utilizam JSF (não-oficial) • Vivo • CVC • SUS • TIM • www.comprafacil.com.br • Banco IBI Sun Confidential: Internal Only 6
  7. 7. O que ele possui? • Conjunto de componentes de UI pré-desenvolvidos • Modelo de programação dirigida por eventos • Modelo de componentes que permite a utilização de outros componentes fornecidos por terceiros Sun Confidential: Internal Only 7
  8. 8. Implementações JSF • Morraja (JSF RI) – Sun Microsystems • MyFaces – Apache • ADF Faces – Oracle • Implementação da IBM • Etc Sun Confidential: Internal Only 8
  9. 9. Componentes JSF • Woodstock • ICEFaces • Apache Tomahawk • JBoss RichFaces • http://www.jsfmatrix.net Sun Confidential: Internal Only 9
  10. 10. Integração com frameworks • Visual Web JSF • Hibernate • Spring Web • Struts • Axis2 • Facelets Sun Confidential: Internal Only 10
  11. 11. Servidores • Glassfish • Apache Tomcat • JBoss Application Server • IBM WebSphere • Etc Sun Confidential: Internal Only 11
  12. 12. Entendendo um pouco de JSF Sun Confidential: Internal Only 12
  13. 13. Conceitos importantes • Tags JSF • Beans • Backing Beans • Regras de Navegação • Navegação estática x dinâmica Sun Confidential: Internal Only 13
  14. 14. Algumas Tags JSF • <f:view> • <h:form> • <h:inputText> • <h:inputSecret> • <h:commandButton> • http://www.horstmann.com/corejsf/jsf-tags.html Sun Confidential: Internal Only 14
  15. 15. Beans • Classes simples com variáveis e seus respectivos métodos setters e getters Sun Confidential: Internal Only 15
  16. 16. Beans public class Usuario { private String login; public void setLogin(String login) { this.login = login; } public String getLogin() { return login; } } Sun Confidential: Internal Only 16
  17. 17. Backing Beans • 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 • Contém as variáveis que serão mostradas na tela • São configurados no faces-config.xml • 3 tipos de escopo: request, session e application Sun Confidential: Internal Only 17
  18. 18. Backing Beans public class BackingBean { private Usuario usuario = new Usuario(); public String logar() { if (usuario.getLogin().equals(“João Sávio”)) return “gotoMain”; else return “gotoErro”; } //sets e gets de usuario } Sun Confidential: Internal Only 18
  19. 19. Backing Beans <managed-bean> <managed-bean-name>bb</managed-bean-name> <managed-bean-class>BackingBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> Sun Confidential: Internal Only 19
  20. 20. Regras de Navegação • - Ei, para qual página vamos agora?; • Configuradas também no faces-config.xml; Sun Confidential: Internal Only 20
  21. 21. Regras de Navegação <navigation-rule> <from-view-id>/welcomeJSF.jsp</from-view-id> <navigation-case> <from-outcome>gotoMain</from-outcome> <to-view-id>/main.jsp</to-view-id> </navigation-case> ... </navigation-rule> Sun Confidential: Internal Only 21
  22. 22. Expression Language (EL) • É uma poderosa linguagem de expressão para acessar propriedades de beans e coleções • Quando ocorrer uma requisição pelo browser, os elementos da página são preenchidos dinamicamente pela camada de negócios Sun Confidential: Internal Only 22
  23. 23. Expression Language (EL) • Utilizamos a notação: “#{apelido.algumaCoisa}” para acessar algum campo ou método do Backing Bean; Sun Confidential: Internal Only 23
  24. 24. Juntando Tudo <body> <f:view> <h:form> Login: <h:inputText value="#{bb.usuario.login}"/> <h:commandButton value="OK” action="#{bb.logar}"/> </h:form> </f:view> </body> Sun Confidential: Internal Only 24
  25. 25. Juntando Tudo <h:inputText value = “#{bb.usuario.login}“/> • acessa a variável "login" do objeto “usuario” que está definido no Backing Bean chamado de "bb"; <h:commandButton value=“OK” action=”#{bb.logar}”/> • chama o método "logar" do BackingBean "bb"; Sun Confidential: Internal Only 25
  26. 26. Navegação Estática x Dinâmica • Estática: <h:commandButton value=”Login” action=”gotoMain”/>; • Dinâmica: <h:commandButton value=”Login” action=”#{bb.logar}”/>; Sun Confidential: Internal Only 26
  27. 27. Model-View-Controller (MVC) Sun Confidential: Internal Only 27
  28. 28. MVC • É um padrão para desenvolvimento de software • Divisão em 3 camadas: >> Model >> View >> Controller • MVC 2 = MVC + Front Controller Sun Confidential: Internal Only 28
  29. 29. JSF e MVC 2 Sun Confidential: Internal Only 29
  30. 30. JSF e MVC 2 • O Controller despacha as Solicitações ao Model; • A View observa o Model; Sun Confidential: Internal Only 30
  31. 31. JSF e MVC 2 • Resumo: ✔ Model – beans e acesso a banco de dados; ✔ View – páginas JSP; ✔ Controller – Backing Beans; Sun Confidential: Internal Only 31
  32. 32. Usando o NetBeans Sun Confidential: Internal Only 32
  33. 33. Sun Confidential: Internal Only 33
  34. 34. Sun Confidential: Internal Only 34
  35. 35. Sun Confidential: Internal Only 35
  36. 36. Sun Confidential: Internal Only 36
  37. 37. Sun Confidential: Internal Only 37
  38. 38. Links • Entendendo um pouco de Java Server Faces (JSF): http://www.javafree.org/artigo/871659/Entendendo-um- pouco-de-Java-Server-Faces-JSF.html • Especificação oficial JSF (capítulos 10 - 14): http://java.sun.com/javaee/5/docs/tutorial/doc/bnaph.html • www.rponte.com.br • Lista de e-mail: javasf@googlegroups.com Sun Confidential: Internal Only 38
  39. 39. Obrigado! João Sávio Ceregatti Longo joao.savio@sun.com / joaosavio@gmail.com www.joaosavio.com 39

×