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. 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. 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
6. Empresas que utilizam JSF (não-oficial)
• Vivo
• CVC
• SUS
• TIM
• www.comprafacil.com.br
• Banco IBI
Sun Confidential: Internal Only 6
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. Implementações JSF
• Morraja (JSF RI) – Sun Microsystems
• MyFaces – Apache
• ADF Faces – Oracle
• Implementação da IBM
• Etc
Sun Confidential: Internal Only 8
9. Componentes JSF
• Woodstock
• ICEFaces
• Apache Tomahawk
• JBoss RichFaces
• http://www.jsfmatrix.net
Sun Confidential: Internal Only 9
10. Integração com frameworks
• Visual Web JSF
• Hibernate
• Spring Web
• Struts
• Axis2
• Facelets
Sun Confidential: Internal Only 10
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. 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. Beans
• Classes simples com variáveis e seus respectivos
métodos setters e getters
Sun Confidential: Internal Only 15
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. 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. 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. 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. Regras de Navegação
• - Ei, para qual página vamos agora?;
• Configuradas também no faces-config.xml;
Sun Confidential: Internal Only 20
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. 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. 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. 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. 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. 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
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. JSF e MVC 2
Sun Confidential: Internal Only 29
30. JSF e MVC 2
• O Controller despacha as Solicitações ao Model;
• A View observa o Model;
Sun Confidential: Internal Only 30
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
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