Programação WebJavaServer Faces
Dalton Valadares
Plano
● Visão geral sobre desenvolvimento web;● Fundamentos e características do JSF;● Principais implementações e bibliotecas de
componentes;● Ciclo de vida do JSF;● Exemplos básicos.
Desenvolvimento: Desktop x WebDesktop:● Replicação de código
nos clientes;● Processamento local →
Regras de negócio, validações, etc.;
● Gerência, manutenção e depuração mais complicados.
Web:● Código centralizado em
servidor;● Clientes mais leves e
comunicação por HTTP;● Requisições e
respostas;● Melhor gerenciamento e
manutenibilidade.
Funcionamento da WebCliente
RequisiçõesServidor
RespostasHTTP
Frameworks web baseados em componentes
● Arcabouços de software/Conjuntos de bibliotecas;● Abstraem protocolo de comunicação;● Dinamizam operações repetitivas de desenvolvimento;● Buscam reutilização de código, evitando complexidade;● Fornecem acesso a dados, segurança, gerência de
sessão, modelagem, etc.;● Componentes visuais pré-definidos (renderização da
UI);● Exemplos: Struts, Spring Web MVC, GWT, JSF, etc.
MVC - Model View ControllerModelo arquitetural/Padrão de projeto: separa regras de negócio/modelo de dados e visão por meio de um controlador.
Fonte: https://www.youtube.com/watch?v=3Cj2mDx0-Ws#t=745
JavaServer Faces (JSF)
● Framework web MVC● Definida pela JCP (padrão Java)● Conjunto de componentes padrão (UI)● Tags jsp para acesso aos componentes● Extensível/personalizável● Comunicação entre componentes e dados do
servidor● Eventos de componentes chamam funções do
servidor
JavaServer Faces (JSF)
● Validação e conversão de dados● Suporte a Ajax● Suporte à Internacionalização● Guarda estado dos componentes (Stateful)● Servidores de aplicação: Tomcat, Glassfish, JBoss,
etc.
Implementações e Bibliotecas de componentes
Implementações:● Implementação de
referência: Oracle Mojarra (http://javaserverfaces.java.net/)
● Outra implementação: MyFaces, da Apache (http://myfaces.apache.org/)
Bibliotecas:● RichFaces● PrimeFaces● ICEFaces● OpenFaces● Trinidad
RichFaceshttp://www.jboss.org/richfaces
rich:calendar rich:select rich:inplaceInput
PrimeFaceshttp://www.primefaces.org/
p:calendar p:autoComplete p:inputText
ICEFaceshttp://www.icefaces.org/ace:dateTimeEntry ace:comboBox ace:textEntry
Ciclo JSFRequisição
Restaurar visão
Aplicar valores da requisição
Processar requisições
Atualizar valores do modelo
Chamar aplicação
Renderizar resposta
Resposta
Configuração de ambiente
Fonte: https://www.youtube.com/watch?v=TA-s9z1eHrQ
Configuração de ambiente (cont.)Configuração do ‘controlador’ do JSF (web.xml):
<servlet> <servlet-name>FacesServlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup></servlet><servlet-mapping> <servlet-name>FacesServlet</servlet-name> <url-pattern>*.xhtml</url-pattern></servlet-mapping>
Eclipse → Configuração ‘automática’
Configuração, ainda...faces-config.xml (configurações dos ManagedBeans)
<faces-config xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd" version="2.0"></faces-config>
Menos usado, atualmente → @annotations
View JSF (xhtml) - BásicoImportar tags JSF → Namespace no .xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html">
<!-- Tags do JSF -->
</html>
Tags JSF - ComponentesHierarquia de componentes
<html ...> <h:head> <!-- Cabeçalho --> </h:head> <h:body> <!-- Corpo da página --> </h:body></html>
Managed Bean@ManagedBeanpublic class TimeBean { public String getTime() { SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss"); return "Hora atual: " + sdf.format(new Date()); }}
View ←→ Managed Bean<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html">
<h:head> <title>JSF - Primeira Aula</title> </h:head> <h:body> <h:outputText value =”#{timeBean.time}” /> </h:body></html>
JSF - Outros componentes básicos<h:form> <h:outputLabel for="date" value="Digite a data de hoje:"/> <h:inputText id="date" value="#{timeBean.date}"/> <h:commandButton value="Ok" action="#{timeBean.time}"/></h:form>
Importante:<h:outputText value="Hora: #{timeBean.time}" rendered="#{not empty timeBean.time}"/>
Referênciashttp://docs.oracle.com/javaee/7/tutorial/doc/jsf-develop.htm
https://www.youtube.com/watch?v=TA-s9z1eHrQ
https://netbeans.org/kb/docs/web/jsf20-intro_pt_BR.html
http://www.dsc.ufcg.edu.br/~jacques/cursos/daca/html/jsf/jsf.htm
http://www.mkyong.com/jsf2/jsf-2-0-hello-world-example/
http://www.caelum.com.br/apostila-java-testes-jsf-web-services-design-patterns/introducao-ao-jsf-e-primefaces/#7-6-recebendo-informacoes-do-usuario
Dúvidas?
Top Related