Você está na página 1de 44

Desenvolvimento WEB com JavaServer Faces

Renato V. Mendes Tc. De Tecnologia da Informao NTI/UFPE

O que veremos ao longo do curso

O que JSF? Ciclo de vida do JSF Componentes JSF Entendendo o MVC Converso e Validao Internacionalizao Ajax Componentes customizados Facelets Templates

Desenvolver um sistema simples com JSF, JPA e Spring Bibliotecas de componente Frameworks de desenvolvimento que utilizam JSF Dicas e boas prticas

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

Requisitos Desejveis

Programao em Java Noes de HTML e CSS Noes de JSP e Servlets Orientao a objetos Banco de dados Interesse em aprender. =D

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

Links teis

JavaServer Faces Technology http://www.oracle.com/technetwork/java/javaee/javaserverfaces-139869.html Grupo de usurios JSF - http://groups.google.com/group/javasf Blog Rafael Ponte - http://www.rponte.com.br

Artigo O que todo bom desenvolvedor JSF deveria saber http://www.rponte.com.br/2009/01/19/o-que-todo-bom-desenvolvedor-jsf-deveria-saber/ Artigo Os 10 maus hbitos dos desenvolvedores JSF http://www.rponte.com.br/2008/11/24/os-10-maus-habitos-dos-desenvolvedores-jsf/ Artigo Repitam comigo: Redirect no forward http://www.rponte.com.br/2008/07/12/repitam-comigo-redirect-nao-e-forward/

www.google.com =P http://blog.vmendes.com.br ; )

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

O que JSF?
JavaServer Faces uma especificao do framework MVC Java padro para construir interfaces de usurios em aplicaes WEB. JavaServer Faces define um framework para o desenvolvimento simplificado de interfaces grficas baseadas em componentes.
[12]
Oct 9, 2012 Desenvolvimento WEB com JavaServer Faces 5

O que JSF? - Principais Caractersticas

Tecnologia definida atravs do JCP (Java Community Process) Baseado em componentes (Semelhante ao desenvolvimento desktop) Possui um conjunto de componentes de interface com usurio padro extensvel, ou seja, novos componentes podem ser adicionados

Componentes criados pelo desenvolvedor Componentes de terceiros

Dirigido a eventos Validadores e conversores de dados Internacionalizao Suporte a AJAX (Nativo a partir do JSF 2.0)
[3] [9]

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

Por que usar JSF?

Padro de Mercado Presente nas especificaes JEE 5 e JEE 6. Suporte de Big Players

Extensvel e Reutilizvel Grande atividade da comunidade em fruns, listas de discusso, blogs, portais, revistas, livros etc Integrao com diversos frameworks:

Sun, Apache, IBM, Oracle, BEA Systems, Borland Fcil de usar e produtivo Alta abstrao para desenvolvimento WEB Baixa curva de aprendizagem Converters, Validators, Listeners, Componentes Prontos

Spring, Hibernate, EJB3, JPA, JBoss Seam, JAAS, Struts, Shale, Tiles,GWT, Portlets e muitos outros Testes Unitrios (JSFUnit) Templates
[3]
7

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

Histria do JSF

Surgiu da necessidade de um framework orientado a interface de usurio robusto para aplicaes WEB, tal qual o Swing para aplicaes desktop. Criado atravs do Java Community Process (JCP) por um grupo de lderes em tecnologia, incluindo a Sun Microsystems, Oracle, Borland, BEA, IBM e, atravs de um grupo de peritos Java e Web bem conhecido na indstria. O processo de especificao iniciou em 2001.*

[1] [2] [8]


Oct 9, 2012 Desenvolvimento WEB com JavaServer Faces 8

Histria do JSF

JSF 1.0 (2004-03-11) (DEPRECATED) JSR 127


Release inicial da especificao do JSF. No fazia parte de nenhuma especificao JavaEE/J2EE Configuraes baseadas fortemente em XML JSF 1.1 (2004-05-27) (DEPRECATED)* Esta release corrigiu bugs da verso anterior. No houve mudanas na especificao, nem no renderkit HTML. JSF 1.2 (2006-05-11) JSR 252 Muitas melhorias do core e APIs. Passou a fazer parte do Java EE (Java EE 5).
[1] [2] [8]
Desenvolvimento WEB com JavaServer Faces 9

Oct 9, 2012

Histria do JSF

JSF 2.0 (2009-06-28) JSR 314

Nova verso com melhoria na facilidade de uso, funcionalidade e desempenho. Passou a adotar anotaes (Annotations) para suas configuraes. Faz parte do Java EE 6. JSF 2.1 (2010-10-22) Verso atual. Segunda verso de manuteno da 2.0. Apenas um pequeno conjunto de mudanas na especificao.
[1] [2] [8]

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

10

Histria do JSF

JSF 2.2 (Em desenvolvimento) JSR 344


http://javaserverfaces-spec-public.java.net/ Novidades

Facilitadores para o Desenvolvimento:


No ser necessria Classe para manipulao de tags customizadas (tag handler); Ajustes para bibliotecas Facelets (abreviando atributos e tags); Suporte para OSGi (Open Services Gateway Initiative); Suporte para CDI em toda API;

[1] [2] [8]


Oct 9, 2012 Desenvolvimento WEB com JavaServer Faces 11

Histria do JSF
Novidades (Cont.)

Integrao com Portlet: Bookmarkability; Endereamento via Ajax; Implementao de component server; Novidades:

HTML 5; Page Action; Melhorias na captura de Eventos; Correes e Melhorias:


Validao em mltiplos campos; UIData Collection interface; Depreciao do atributo target.


Desenvolvimento WEB com JavaServer Faces 12

[1] [2] [8]

Oct 9, 2012

Implementaes JSF

O JSF definido pelo JCP atravs de JSRs (Uma para cada verso) Uma JSR (Java Specification Request) resulta em documentaes, interfaces e algumas classes que especificam como deve funcionar um novo produto. Ou seja, JSF apenas uma especificao e cada empresa pode implementar um produto final compatvel com o proposto pela especificao.

[2][4]
Oct 9, 2012 Desenvolvimento WEB com JavaServer Faces 13

Implementaes JSF

Mojarra

a implementao de referncia do JSF (JSF RI) Implementao da SUN (GlassFish) a mais utilizada hoje em dia

Myfaces

Implementao open source da Apache

ADF Faces (Oracle) A implementao da BEA (j vem embutido WebLogic) A implementao da IBM (j vem embutido WebSphere) Backbase NetAdvantage
Desenvolvimento WEB com JavaServer Faces 14

[2][4]

Oct 9, 2012

Implementaes JSF

Leitura Recomendada: Qual implementao JSF voc usa http://www.rponte.com.br/2008/02/18/qual-implementacao-jsfvoce-usa/

[2][4]
Oct 9, 2012 Desenvolvimento WEB com JavaServer Faces 15

Hello World Configurando o Ambiente

Sistema Operacional CentOS 6.3 JDK 6 (http://www.oracle.com/technetwork/java/javase/downloads/jdk6downloads-1637591.html)

D permisso de execuo - sudo chmod +x jdk-6u33-linux-x64rpm.bin Executar o instalador - sudo ./jdk-6u33-linux-x64-rpm.bin

Eclipse IDE for Java EE Developers (Juno)http://www.eclipse.org/downloads/

Plugins

Jboss Tools

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

16

Hello World Configurando o Ambiente

Apache Tomcat 7 (http://tomcat.apache.org/download-70.cgi) MySQL

Server http://tecnoinformacao.wordpress.com/2012/03/16/instalando-omysql-no-centos-6/ Client (Workbecnh) - http://certcollection.org/forum/topic/141624how-to-install-mysql-workbench-in-centos-6/

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

17

Hello World - Criando o projeto (JSF 1.2)

Criar projeto do tipo Dynamic Web Project

File > New > Project... > Dynamic Web Project

Adicionar as bibliotecas do JSF 1.2 e suas dependncias na pasta WebContent/WEB-INF/lib


jsf-api.jar jsf-impl.jar jstl-1.2.jar

Criar o arquivo web.xml na pasta WebContent/WEB-INF

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

18

Hello World - Criando o projeto (JSF 1.2)

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

19

Hello World - Criando o projeto (JSF 1.2)

Criar o arquivo faces-config.xml na pasta WebContent/WEBINF

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

20

Hello World - Criando o projeto (JSF 1.2)

Adicionar Project Facet para JSF 1.2 (Opcional)

Clicar com o boto direito no projeto e ir em Properties > Project Facets e marcar JavaServer Faces, selecionando a verso 1.2. Permite o uso do auto-complete nas telas.

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

21

Hello World (JSF 1.2)

Implementar a classe HelloMB.java

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

22

Hello World (JSF 1.2)

Adicionar a referncia a classe HelloMB.java no arquivo facesconfig.xml.

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

23

Hello World (JSF 1.2)

Criar tela (index.jsp) dentro da pasta WebContent que exibir a mensagem do nosso ManagedBean

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

24

Hello World (JSF 1.2)

Adicionar o projeto ao Apache Tocamt Iniciar o servidor Acessar o endereo http://localhost:8080/jsf1.2

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

25

Hello World Criando o Projeto (JSF 2)

Criar projeto do tipo Dynamic Web Project

File > New > Project... > Dynamic Web Project jsf-api-2.1.x.jar jsf-impl-2.1.x.jar jstl-1.2.jar

Adicionar as biliotecas do JSF e suas dependncias


Criar o arquivo web.xml na pasta WebContent/WEB-INF

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

26

Hello World Criando o Projeto (JSF 2)

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

27

Hello World Criando o Projeto (JSF 2)

Adicionar Project Facet para JSF 2.1 (Opcional)

Clicar com o boto direito no projeto e ir em Properties > Project Facets e marcar JavaServer Faces, selecionando a verso 2.1. Permite o uso do auto-complete nas telas.

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

28

Hello World (JSF 2)

Implementar a classe HelloMB.java

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

29

Hello World (JSF 2)

Criar tela (index.xhtml) dentro da pasta WebContent que exibir a mensagem do nosso ManagedBean

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

30

Hello World (JSF 2)

Adicionar o projeto ao Apache Tocamt Iniciar o servidor Acessar o endereo http://localhost:8080/jsf2

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

31

Arquivos de Configurao web.xml

o descritor da aplicao web. Arquivo de configurao padro de projetos Java WEB. nele onde declaramos e mapeamos o uso do Faces Servlet. (O servlet que faz o JSF funcionar) Quando o JSF 2 roda em um Containner Servlet 3.0 (Ex. Sun Glassfish v3 ou Apache Tomcat 7) o web.xml opcional, e o Faces Servlet Controller mapeado automaticamente para os padres de URL mais populares: /faces/*, *.jsf, and *.faces

[8][10]
Oct 9, 2012 Desenvolvimento WEB com JavaServer Faces 32

Arquivos de Configurao web.xml

Alguns parmetros opcionais para JSF:

javax.faces.STATE_SAVING_METHOD Determina onde ser salvo o estado da rvore de componentes da view. Os valores permitid so: server e client javax.faces.CONFIG_FILES Utilizado para determinar arquivos de configurao do JSF, com nomes diferentes do padro (faces-config.xml). Deve-se informar os nomes dos arquivos separads por vrgula. javax.faces.PROJECT_STAGE Serve para que em tempo de execuo informaes e pginas adicionais de ajuda sejam exibidas. Os valores so: Development, Production, SystemTest, and UnitTest.
[8][10]

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

33

Arquivos de Configurao faces-config.xml

Permite a configurao de todos os elementos de uma aplicao JSF: Manageds Beans, Regras de Navegao, Validadores, Conversores, Componentes, Phase Listeners, etc. Opcional a partir do JSF 2, pois a maioria das configurao podem ser substitudas por anotaes.

[8][10]
Oct 9, 2012 Desenvolvimento WEB com JavaServer Faces 34

Managed Bean

POJO (Plain Old Java Objects)

Objetos Java que armazenam dados da aplicao e no implementam ou extendem nenhuma interface ou clase de algum framework especfico.

Envia objetos de negcio para a camada de apresentao, que sofrero alteraes em seus atributos durante uma requisio, assim como o mtodos podem ser chamado a partir de um command. Qualquer classe Java com construtor pblico sem argumento, que siga a conveno de nomes JavaBeans para suas propriedades
[8][3]

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

35

Managed Bean

Objetos do tipo java.util.List ou java.util.Map tambm podem ser registrados como managed beans acessado pela camada de viso atravs da expression language (EL) do JSF. Possuem um escopo: perodo de tempo em que uma instncia de um managed bean estar diponvel para outras partes do sistema.

Application, Session, View, Request, None ou Custom

[8][3]
Oct 9, 2012 Desenvolvimento WEB com JavaServer Faces 36

Managed Bean - Escopos


Escopo none ou @NoneScoped custom ou @CustomScoped application ou @ApplicationScoped session ou @SessionScoped Descrio No permite acesso direto pelas pginas, apenas atravs de outro Managed Bean Escopo implementado de forma customizada O Managed Bean existir durante o tempo de vida da aplicao e ser compartilhado por todas as sesses O Managed Bean existir desde o momento que for requisitado a primeira vez at que a sesso do cliente seja finalizada O Managed Bean existir durante o tmpo de uma requisio HTTP O Managed Bean existir a partir de uma requisio para uma pgina e fica disponvel enquanto o cliente fizer requisies para a mesma pgina [8]
Oct 9, 2012 Desenvolvimento WEB com JavaServer Faces 37

request ou @RequestScoped view ou @ViewScoped

Pginas JSF

JSP: HTML or XML syntax

Permite o uso JSTL e taglibs customizadas baseadas em pginas JSP Inicialmente criado como uma extenso para JSF, sendo incorporado a partir da verso 2. Desenhado com JSF em mente Prover a facilidade de criar templates Fora uma separao limpa do MVC, porque desabiita a incluso de cdigo Java.
[8][11]

Facelets: XHTML syntax

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

38

Value Binding

Liga o valor de um componente a um Managed Bean Essa ligao feita atravs de JSF Expression Language (EL) Pode ser utilizado para executar mtodos Ex.:
<h:outputText value="#{PessoaBean.nome}"/>

[][]
Oct 9, 2012 Desenvolvimento WEB com JavaServer Faces 39

Value Binding Objeto implcitos diponveis por EL

application: The ServletContext or PortletContext, depending on whether an application is running in a servlet or portlet context, respectively. applicationScope: A map for storing application-scoped data component (JSF 2): The UIComponent instance being currently processed cc (JSF 2): The top-level composite component currently being processed. cookie: A map view of values in the HTTP Set-Cookie header facesContext: The actual FacesContext instance flash (JSF 2): A map whose values are guaranteed to be present only on the next request. header: A map view of all the HTTP headers for this request. headerValues: A map view of all the HTTP headers for this request
[8]
Desenvolvimento WEB com JavaServer Faces 40

Oct 9, 2012

Value Binding Objeto implcitos diponveis por EL

initParam: A map view of the init parameters for this application

param Map A map view of all the query parameters for this request. paramValues: Map A map view of all the HTTP headers for this request. request: The ServletRequest or PortletRequest, depending on or whether the code is executing in a servlet or portlet environment, respectively. requestScope: A map for storing request-scoped data. resource: Allow a resource reference to be rendered to the page. session: The HttpSession or PortletSession, depending on or whether code is executing in a servlet or portlet environment, respectively. sessionScope: A map view of the session-scoped attributes. view: The current UIViewRoot for this view. viewScope (JSF 2): A map view of the attributes scoped to the current view.
Desenvolvimento WEB com JavaServer Faces 41

[8]

Oct 9, 2012

Value Binding Acessando Maps

Propriedades do tipo Map podem ser acessadas a seguinte forma de expresso: #{MapObject[key]} Ex.:
<h:outputText value="#{param['userid']}" /> ou <h:outputText value="#{param.userid}" />

[8]
Oct 9, 2012 Desenvolvimento WEB com JavaServer Faces 42

Referncias

Java EE 6: Da configurao aos testes Java Magazine 106 - Luciano Davoglio Molinari http://www.slideshare.net/jornaljava/curso-jsf http://www.algaworks.com/cursos-online/desenvolvimento-web-com-jsf-2/127/o-que-e-jsf / http://en.wikipedia.org/wiki/JavaServer_Faces http://www.algaworks.com/downloads/apostilas/algaworks-dwjsf-desenvolvimento-web-c om-javaserver-faces-2a-edicao.pdf JavaServer Faces 2.0: The Complete Reference. Ed Burns. Chris Schalk com Neil Griffin Desenvolvendo com JavaServer Faces Java Magazine N 72 Marcos Souza http://javaserverfaces.java.net/presentations/demystifyingjsf.pdf http://www.rponte.com.br/wp-content/uploads/2007/10/anatomia-jsf-javaserver-faces-cct .pdf
Desenvolvimento WEB com JavaServer Faces 43

Oct 9, 2012

Desenvolvimento WEB com JSF

Renato V. Mendes renato.mendes@ufpe.br http://blog.vmendes.com.br

Oct 9, 2012

Desenvolvimento WEB com JavaServer Faces

44

Você também pode gostar