Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Minicurso Java Server Faces

8,970 views

Published on

Published in: Education
  • Be the first to comment

Minicurso Java Server Faces

  1. 1. Java Server Faces João Sávio C. Longo joaosavio@gmail.com
  2. 2. Surgimento do JSF • Duas técnicas de desenvolvimento de aplicativos para web – Desenvolvimento rápido – Programação aprofundada
  3. 3. Surgimento do JSF
  4. 4. Características
  5. 5. Características • Especificação – Cada um implementa da maneira que quiser • Morraja (JSF RI) – Sun Microsystems • MyFaces – Apache • ADF Faces – Oracle • Etc – Possui um conjunto de componentes de UI pré- desenvolvidos – Modelo de programação dirigida por eventos
  6. 6. Características • Especificação – Modelo de componentes que permite a utilização de outros componentes fornecidos por terceiros • Woodstock • JBoss RichFaces • ICEFaces • Apache Tomahawk • http://www.jsfmatrix.net
  7. 7. Características • Integração com Frameworks – Hibernate – Spring – Seam – Struts – Facelets
  8. 8. Características • Especificação • Integração com Frameworks • Servidores
  9. 9. Quem usa? • Vivo • CVC • SUS • TIM • www.comprafacil.com.br • Banco IBI
  10. 10. Características
  11. 11. Visão Geral
  12. 12. Visão Geral - Model • Beans public class User { private String login; public void setLogin(String login) { this.login = login; } public String getLogin() { return login; } }
  13. 13. Visão Geral - Controller • Backing Beans – Seus métodos podem ser chamados a partir da view – Contém as variáveis que serão mostradas na tela – São configurados no faces-config.xml
  14. 14. Visão Geral - Controller • Backing Beans – 3 tipos de escopo: request, session e application – Instanciados automaticamente por Inversão de Controle
  15. 15. Visão Geral - Controller public class BackingBean { private User user = new User(); public String login() { if (user.getLogin().equals(“João Sávio”)) return “main”; else return null; } //user setters and getters }
  16. 16. Visão Geral - Controller <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>
  17. 17. Visão Geral - Controller • Backing Beans • Regras de navegação – Ei, para qual página vamos agora? – Configuradas também no faces-config.xml
  18. 18. Visão Geral - Controller <navigation-rule> <from-view-id>/index.jsp</from-view-id> <navigation-case> <from-outcome>main</from-outcome> <to-view-id>/main.jsp</to-view-id> </navigation-case> </navigation-rule>
  19. 19. Visão Geral - View • Tags JSF – <f:view> – <h:form> – <h:inputText> – <h:inputSecret> – <h:commandButton> – http://www.horstmann.com/corejsf/jsf-tags.html
  20. 20. Juntando Tudo • Expression Language – É uma poderosa linguagem de expressão para acessar propriedades de beans e coleções – “#{apelido.algumaCoisa}” – Quando ocorrer uma requisição pelo browser, os elementos da página são preenchidos dinamicamente pela camada de negócios
  21. 21. Juntando Tudo <body> <f:view> <h:form> Login: <h:inputText value="#{bb.user.login}"/> <h:commandButton value="OK” action="#{bb.login}"/> </h:form> </f:view> </body>
  22. 22. Juntando Tudo
  23. 23. APRESENTO-LHES FACESCONTEXT 
  24. 24. FacesContext • Representa o estado da requisição atual – Acessar a view atual – Controlar a sessão – Adicionar mensagens de erro • Info, warn, error, fatal – Controlar o ciclo de vida
  25. 25. FacesContext • Representa o estado da requisição atual • Como pegá-lo? – FacesContext context = FacesContext.getCurrentInstance();
  26. 26. Prática 1 Sistema de login
  27. 27. Sessão • Objeto HttpSession • FacesContext fc = FacesContext.getCurrentInstance(); HttpSession httpSession = (HttpSession) fc.getExternalContext().getSession(true);
  28. 28. Filtros
  29. 29. Filtros • Autenticação • Log • Modificar a requisição e a resposta • Compressão de dados
  30. 30. Filtros • Implementar javax.servlet.Filter – init(FilterConfig filterConfig) – doFilter(ServletRequest request, ServletResponse response, FilterChain chain) – destroy() • Configurar no web.xml
  31. 31. Filtros <filter> <filter-name>AuthenticationFilter</filter-name> <filter-class>controller.AuthenticationFilter</filter-class> </filter> <filter-mapping> <filter-name>AuthenticationFilter</filter-name> <url-pattern>/faces/home/*</url-pattern> </filter-mapping>
  32. 32. Filtros
  33. 33. Filtros
  34. 34. Prática 2 Sistema de login + filtro de autenticação
  35. 35. Internacionalização
  36. 36. Internacionalização Sistema Web
  37. 37. Internacionalização PERGUNTA: Como a página vai escolher o locale dinamicamente?
  38. 38. Internacionalização • Como a página vai escolher o locale dinamicamente? – <f:view locale= "#{facesContext.externalContext.request.locale}">
  39. 39. Internacionalização • Criar arquivos <fileName>_<língua>_<VARIANTE>.properties – messages_pt_BR.properties – messages_en_US.properties • chave=valor
  40. 40. Internacionalização • messages_pt_BR.properties index.login=Login index.password=Senha main.logout=Sair • messages_en_US.properties index.login=Login index.password=Password Main.logout=Logout
  41. 41. Internacionalização • Configurar no faces-config.xml <application> <locale-config> <default-locale>en_US</default-locale> <supported-locale>pt_BR</supported-locale> </locale-config> </application>
  42. 42. Internacionalização • <f:loadBundle basename="messages" var="msgs"/> • <h:outputText value="#{msgs['index.login']}"/>
  43. 43. Prática 3 Sistema de login + filtro de autenticação + internacionalização
  44. 44. Árvore de Componentes
  45. 45. Árvore de Componentes
  46. 46. Árvore de Componentes
  47. 47. Árvore de Componentes
  48. 48. Ciclo de Vida
  49. 49. Ciclo de Vida 1. Restore View 2. Apply request values 3. Process Validation 4. Update model values 5. Invoke Application 6. Render response
  50. 50. Ciclo de Vida 1. Restore View – Recupera a árvore de components do cliente ou sessão
  51. 51. Ciclo de Vida 1. Restore View 2. Apply request values – Decodifica os componentes – Preenche-os com valores string
  52. 52. Ciclo de Vida 1. Restore View 2. Apply request values 3. Process Validation – Converte strings para objetos – Valida os objetos
  53. 53. Ciclo de Vida 1. Restore View 2. Apply request values 3. Process Validation 4. Update model values – Chama os métodos setters dos managed beans
  54. 54. Ciclo de Vida 1. Restore View 2. Apply request values 3. Process Validation 4. Update model values 5. Invoke Application – Invoca os métodos – Verifica a navegação
  55. 55. Ciclo de Vida 1. Restore View 2. Apply request values 3. Process Validation 4. Update model values 5. Invoke Application 6. Render response – Chama os métodos getters para preencher os componentes
  56. 56. Ciclo de Vida
  57. 57. Ajax
  58. 58. AJAX
  59. 59. AJAX
  60. 60. AJAX
  61. 61. AJAX + JSF
  62. 62. AJAX + JSF • Antes – Navegação orientada à páginas • Agora – Navegação orientada a estados
  63. 63. AJAX + JSF private static String STATE1 = “state1”; private static String STATE2 = “state2”; private String currentState = STATE1; public boolean isState1() { return currentState.equals(STATE1); } public boolean isState2() { return currentState.equals(STATE2); }
  64. 64. AJAX + JSF public String changeState() { if (currentState.equals(STATE1) { currentState = STATE2; } else { currentState = STATE1; } }
  65. 65. Prática 4 Configurando a biblioteca RichFaces
  66. 66. Prática 5 Ajax simples na página main.jsp
  67. 67. Referências • GEARY, David M; HORSTMANN, C. Core Java Server Faces. 1ª edição, 2005 • Entendendo um pouco de Java Server Faces. Disponível em http://www.javafree.org/artigo/871659/Entendendo-um- pouco-de-Java-Server-Faces-JSF.html • Especificação oficial JSF (capítulos 10 - 14). Disponível em http://java.sun.com/javaee/5/docs/tutorial/doc/bnaph.html • www.rponte.com.br
  68. 68. Obrigado! João Sávio C. Longo joaosavio@gmail.com

×