desenvolvimento web com jsf

23
Programação Web JavaServer Faces Dalton Valadares

Upload: dalton-valadares

Post on 05-Dec-2014

169 views

Category:

Technology


7 download

DESCRIPTION

Introdução ao Framework de Desenvolvimento WEB JavaServer Faces (JSF)

TRANSCRIPT

Page 1: Desenvolvimento Web com JSF

Programação WebJavaServer Faces

Dalton Valadares

Page 2: Desenvolvimento Web com JSF

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.

Page 3: Desenvolvimento Web com JSF

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.

Page 4: Desenvolvimento Web com JSF

Funcionamento da WebCliente

RequisiçõesServidor

RespostasHTTP

Page 5: Desenvolvimento Web com JSF

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.

Page 6: Desenvolvimento Web com JSF

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

Page 7: Desenvolvimento Web com JSF

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

Page 8: Desenvolvimento Web com JSF

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.

Page 9: Desenvolvimento Web com JSF

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

Page 10: Desenvolvimento Web com JSF

RichFaceshttp://www.jboss.org/richfaces

rich:calendar rich:select rich:inplaceInput

Page 11: Desenvolvimento Web com JSF

PrimeFaceshttp://www.primefaces.org/

p:calendar p:autoComplete p:inputText

Page 12: Desenvolvimento Web com JSF

ICEFaceshttp://www.icefaces.org/ace:dateTimeEntry ace:comboBox ace:textEntry

Page 13: Desenvolvimento Web com JSF

Ciclo JSFRequisição

Restaurar visão

Aplicar valores da requisição

Processar requisições

Atualizar valores do modelo

Chamar aplicação

Renderizar resposta

Resposta

Page 14: Desenvolvimento Web com JSF

Configuração de ambiente

Fonte: https://www.youtube.com/watch?v=TA-s9z1eHrQ

Page 15: Desenvolvimento Web com JSF

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’

Page 16: Desenvolvimento Web com JSF

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

Page 17: Desenvolvimento Web com JSF

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>

Page 18: Desenvolvimento Web com JSF

Tags JSF - ComponentesHierarquia de componentes

<html ...> <h:head> <!-- Cabeçalho --> </h:head> <h:body> <!-- Corpo da página --> </h:body></html>

Page 19: Desenvolvimento Web com JSF

Managed Bean@ManagedBeanpublic class TimeBean { public String getTime() { SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss"); return "Hora atual: " + sdf.format(new Date()); }}

Page 20: Desenvolvimento Web com JSF

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>

Page 21: Desenvolvimento Web com JSF

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}"/>

Page 22: Desenvolvimento Web com JSF

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

Page 23: Desenvolvimento Web com JSF

Dúvidas?