JSF JavaServer Faces
Francisco Ernesto Teixeira - fco.ernesto@gmail.com
Quem
Nordestino dali de Recife, colega de vocês do curso
de Sistemas de Informação. Botou os pés pra rua há
16 anos, tem 12 fora de Casa e 3 anos curtindo BSB.
Conheceu o Java (?) em 97 com os applets (?)
quando ainda não havia o Flash.
Um pouco de história
Século passado, Web, CGI, Servlet, JSP, MVC, Struts...
Enfim JavaServer Faces!!!
Explique-me
O JSF é uma tecnologia, que:
● Usa boas práticas
● Tem o MVC na veia!!!
● Como qualquer tecnologia, requer bom senso em
seu uso
Relembrando MVC
MVC do JSF
O que é que tem nele?
● Um conjunto de APIs para componentes de UI
● Gerenciamento de estado, controle de eventos,
validação de entradas
● É uma biblioteca, coloca juntinho do Tomcat, Weblogic,
Glassfish, JBoss...
Existem tantos outros
● Leve, flexível e extremamente prático
● Toda IDE possui
● Eu gosto do NetBeans, mas o Eclipse também tem
● Reuso bem “facinho”
● Requisições AJAX bem organizado, você não precisa
mexer diretamente
Entendo algumas coisas
● No HTML, temos as TAGs
● No JSF também temos as TAGs
● O HTML é um “tio” do JSF
● No JSF existem TAGs diferentes, mas vamos aprender
a gostar deles
● A mágica acontece no Servidor, especificamente no
FacesServlet
Então...
HTML JSF
head h:head
body h:body
form h:form
div h:panelGroup
label h:outputLabel
input[type=”hidden”] h:inputHidden
input[type=”text”] h:inputText
- f:convertDateTime
select h:selectOneMenu
option f:selectItem
button h:commandButton clique me
uma opção
Continuando...
HTML JSF
table h:dataTable
td h:column
th f:facet name=”header”
a h:commandLink
- h:outputText
- f:setPropertyActionList
ener value=”” target=””
sou uma âncora
Quem usa?
● Tramita, TCE-PB
● Ministério Público, Judiciários, Procuradorias
● Vai trabalhar na Oi? JSF
● Matéria de Concurso
Problemas no mercado
● Falta mão de obra especializada
● Os problemas são simples, as necessidades são
muitas
Voltando para a BR
Vamos fazer um simples CRUD com o modelo:
Sim, e...?
● Como já disse que gosto do NetBeans, vou usar o
NetBeans... mas podem usar o Eclipse se preferir
● Para agilizar, usaremos o Apache Tomcat que vem
nele, Hibernate e uma instância do MySQL
Só isso?
Sim!!! E para facilitar lhes dou o fluxo das telas,
diagrama da classe principal, diagrama dos pacotes e
só não pego na mãozinha porque vocês já podem
caminhar sozinhos!!!
Fluxo de Telas
essa tela é da listagem
Classe Principal
Pacotes
O pulo do gatinho
Erro 404
● Precisa ser feitos ajustes no Hibernate para funcionar
direito com o MySQL
● Está havendo erro de acentos na hora que insere uma
Pessoa (somente no Tomcat)
Erro 404 - Hibernate
Precisamos adicionar no hibernate.cfg.xml:
<!-- Enable Hibernate's automatic session context management -->
<property
name="current_session_context_class">thread</property>
<!-- DONE: Unknown entity: modelo.entidade.Pessoa -->
<mapping class="modelo.entidade.Pessoa" />
Erro 404 - Acentos
O Tomcat vem com ISO8859-1, hoje devemos sempre
usar UTF-8. Corrigimos isso com a criação de um filtro
src/java/util/filtro/EncodeFilter.java. Não vamos nos
adentrar nele, no projeto que vocês possuem em mãos
ele já existe. Podem usar e abusar à vontade!
Modo Turbo
O JSF não para por aí. Existem outras bibliotecas que
“turbinam” a sua capacidade. Dentre eles, os mais
conhecidos:
RichFaces - http://www.jboss.org/richfaces
ICEFaces - http://www.icesoft.org/
PrimeFaces - http://primefaces.org/
Comparativo
Fonte: http://www.mastertheboss.com/richfaces/primefaces-vs-richfaces-vs-icefaces/
Vantagens Desvantagens
● Biblioteca JSF madura e amplamente usada
● Possui maior integração com o servidor
● Boa performance
● Pouquíssimos componentes disponíveis,
entretanto você pode usar o material de
desenvolvimento (SDK) para criar novos
● Documentação poderia ser melhor detalhada
● Renderização única "Direct-2-DOM"
● Grande variedade de componentes baseados
no servidor
● Maior variedade de documentos e tutoriais,
entretanto quase tudo requer registro
● Parece ser o de menor performance, ao
menos comparando o dataTable
● Consiste da maior quantidade de incidentes
críticos abertos
● Gigantesca coleção de componentes
baseados no levíssimo jQuery
● Simples de usar e documentação prática
● Aparenta ser a biblioteca mais rápida
● Os tópicos dos desenvolvedores dizem:
Primefaces
● O mais novo do grupo, então possívelmente
menos maduro que o RichFaces e o IceFaces
● Mais centrado no cliente, possui menores
melhorias no núcleo do JSF que o outros dois
Em gráfico
Fonte: http://www.google.com.br/trends/explore#q=primefaces%2C%20icefaces%2C%20richfaces&cmpt=q
Exemplos
Muitos exemplos para brincar e fazer a melhor escolha
de acordo com sua necessidade (lembre-se que o
PrimeFaces tem maior busca e previsão):
http://showcase.richfaces.org/
http://icefaces-showcase.icesoft.org/
http://www.primefaces.org/showcase/
Dúvidas?
alle Fragen?

JSF - JavaServer Faces

  • 1.
    JSF JavaServer Faces FranciscoErnesto Teixeira - fco.ernesto@gmail.com
  • 2.
    Quem Nordestino dali deRecife, colega de vocês do curso de Sistemas de Informação. Botou os pés pra rua há 16 anos, tem 12 fora de Casa e 3 anos curtindo BSB. Conheceu o Java (?) em 97 com os applets (?) quando ainda não havia o Flash.
  • 3.
    Um pouco dehistória Século passado, Web, CGI, Servlet, JSP, MVC, Struts... Enfim JavaServer Faces!!!
  • 4.
    Explique-me O JSF éuma tecnologia, que: ● Usa boas práticas ● Tem o MVC na veia!!! ● Como qualquer tecnologia, requer bom senso em seu uso
  • 5.
  • 6.
  • 7.
    O que éque tem nele? ● Um conjunto de APIs para componentes de UI ● Gerenciamento de estado, controle de eventos, validação de entradas ● É uma biblioteca, coloca juntinho do Tomcat, Weblogic, Glassfish, JBoss...
  • 8.
    Existem tantos outros ●Leve, flexível e extremamente prático ● Toda IDE possui ● Eu gosto do NetBeans, mas o Eclipse também tem ● Reuso bem “facinho” ● Requisições AJAX bem organizado, você não precisa mexer diretamente
  • 9.
    Entendo algumas coisas ●No HTML, temos as TAGs ● No JSF também temos as TAGs ● O HTML é um “tio” do JSF ● No JSF existem TAGs diferentes, mas vamos aprender a gostar deles ● A mágica acontece no Servidor, especificamente no FacesServlet
  • 10.
    Então... HTML JSF head h:head bodyh:body form h:form div h:panelGroup label h:outputLabel input[type=”hidden”] h:inputHidden input[type=”text”] h:inputText - f:convertDateTime select h:selectOneMenu option f:selectItem button h:commandButton clique me uma opção
  • 11.
    Continuando... HTML JSF table h:dataTable tdh:column th f:facet name=”header” a h:commandLink - h:outputText - f:setPropertyActionList ener value=”” target=”” sou uma âncora
  • 12.
    Quem usa? ● Tramita,TCE-PB ● Ministério Público, Judiciários, Procuradorias ● Vai trabalhar na Oi? JSF ● Matéria de Concurso
  • 13.
    Problemas no mercado ●Falta mão de obra especializada ● Os problemas são simples, as necessidades são muitas
  • 14.
    Voltando para aBR Vamos fazer um simples CRUD com o modelo:
  • 15.
    Sim, e...? ● Comojá disse que gosto do NetBeans, vou usar o NetBeans... mas podem usar o Eclipse se preferir ● Para agilizar, usaremos o Apache Tomcat que vem nele, Hibernate e uma instância do MySQL
  • 16.
    Só isso? Sim!!! Epara facilitar lhes dou o fluxo das telas, diagrama da classe principal, diagrama dos pacotes e só não pego na mãozinha porque vocês já podem caminhar sozinhos!!!
  • 17.
    Fluxo de Telas essatela é da listagem
  • 18.
  • 19.
  • 20.
    O pulo dogatinho
  • 21.
    Erro 404 ● Precisaser feitos ajustes no Hibernate para funcionar direito com o MySQL ● Está havendo erro de acentos na hora que insere uma Pessoa (somente no Tomcat)
  • 22.
    Erro 404 -Hibernate Precisamos adicionar no hibernate.cfg.xml: <!-- Enable Hibernate's automatic session context management --> <property name="current_session_context_class">thread</property> <!-- DONE: Unknown entity: modelo.entidade.Pessoa --> <mapping class="modelo.entidade.Pessoa" />
  • 23.
    Erro 404 -Acentos O Tomcat vem com ISO8859-1, hoje devemos sempre usar UTF-8. Corrigimos isso com a criação de um filtro src/java/util/filtro/EncodeFilter.java. Não vamos nos adentrar nele, no projeto que vocês possuem em mãos ele já existe. Podem usar e abusar à vontade!
  • 24.
    Modo Turbo O JSFnão para por aí. Existem outras bibliotecas que “turbinam” a sua capacidade. Dentre eles, os mais conhecidos: RichFaces - http://www.jboss.org/richfaces ICEFaces - http://www.icesoft.org/ PrimeFaces - http://primefaces.org/
  • 25.
    Comparativo Fonte: http://www.mastertheboss.com/richfaces/primefaces-vs-richfaces-vs-icefaces/ Vantagens Desvantagens ●Biblioteca JSF madura e amplamente usada ● Possui maior integração com o servidor ● Boa performance ● Pouquíssimos componentes disponíveis, entretanto você pode usar o material de desenvolvimento (SDK) para criar novos ● Documentação poderia ser melhor detalhada ● Renderização única "Direct-2-DOM" ● Grande variedade de componentes baseados no servidor ● Maior variedade de documentos e tutoriais, entretanto quase tudo requer registro ● Parece ser o de menor performance, ao menos comparando o dataTable ● Consiste da maior quantidade de incidentes críticos abertos ● Gigantesca coleção de componentes baseados no levíssimo jQuery ● Simples de usar e documentação prática ● Aparenta ser a biblioteca mais rápida ● Os tópicos dos desenvolvedores dizem: Primefaces ● O mais novo do grupo, então possívelmente menos maduro que o RichFaces e o IceFaces ● Mais centrado no cliente, possui menores melhorias no núcleo do JSF que o outros dois
  • 26.
  • 27.
    Exemplos Muitos exemplos parabrincar e fazer a melhor escolha de acordo com sua necessidade (lembre-se que o PrimeFaces tem maior busca e previsão): http://showcase.richfaces.org/ http://icefaces-showcase.icesoft.org/ http://www.primefaces.org/showcase/
  • 28.