JavaServer Faces Produtividade em Desenvolvimento

38
TCS Confidential JavaServer Faces Produtividade em Desenvolvimento

description

Palestra ministrada no JustJava 2007

Transcript of JavaServer Faces Produtividade em Desenvolvimento

Page 1: JavaServer Faces Produtividade em Desenvolvimento

TCS Confidential

JavaServer Faces

Produtividade em Desenvolvimento

Page 2: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Tópicos Abordados• O que JavaServer Faces nos traz?

– Especificações– Managed Beans– Expression Language

• Life Cycle JSF• Roteiro de Uso• IDEs• Customizações• Pequenas mudanças no Default• Implementações• Templates• JSF 2.0

Produtividade com JavaServer Faces

Page 3: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Apresentação• Eduardo Bregaida

– Analista de sistemas Java da Tata Consultancy Services do Brasil - TCS.– Membro do Java Community Process (JCP).– Desenvolvedor JSF há 2 anos.– Bacharelando na Universidade IMES – São Caetano do Sul.

Page 4: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

O que JavaServer Faces nos traz?

Page 5: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

O que JavaServer Faces nos traz?• É mais do que um framework, é uma especificação baseada em MVC;

• Suporte a internacionalização;

• Facilita criação de telas;

• Facilita a transferência dos dados entre telas e camadas de negócio através da EL.

• Produtividade para conversores recebidos do formulário para os tipos nas classes;

• Flexibilidade para renderização.

• Criar modelos simples de eventos entre interfaces gráficas e as classes no servidor.

• Mecanismos produtivos para validação de campos na tela.

• Facilidade para criação de componentes;

Page 6: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Especificações• JSF 1.0 e 1.1 – JSR 127

– Problemas com renderização– ELs diferentes entre JSP e JSF– Não portava a tag JSTL <c:forEach>

• JSF 1.2 – JSR 252– Resolveram todos os problemas de incompatibilidade, pois o JSF 1.2 e o JSP 2.1 tiveram

muitas uniões e estão dentro do JEE.

• JSF 2.0 – JSR 314– Ainda está em discussão muitas coisas, porém estão planejando deixar bem integrado e

intuitivo JSF e JSP.

Page 7: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Managed Beans• É uma classe que expões objetos de negócio para camada de apresentação;

• São Registrados no faces-config.xml;

• 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;

• São como as Actions do Struts, porém os form beans são injetados por setters dentro do seu próprio bean;

• Os ManagedBeans serão usados na EL das páginas.

Page 8: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Expression Language - EL• É uma poderosa linguagem de expressão (Linguagem de navegação) para acessar

propriedades de beans e coleções.

• Quando ocorrer uma requisição pelo browser é preenchido dinamicamente os elementos da página pela camada de negócios.

• Quando ocorre um Submit ocorre a modificação no estado da camada de negócio.

Page 9: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Life Cycle JSF

Page 10: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Life Cycle JSF - Fases• São Atendidas pelo Reader Response e Restore Component Tree

• Restore Component Tree: O conjunto de componentes JSF é criado ou restaurado dependento da requisição (Primeira ou demais vezes executadas)

Page 11: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Life Cycle JSF - Fases• Apply request Values: Os componentes irão extrair seu novo valor dos parâmetros da Request,

colocando-os em variaveis de estado no servidor.

Page 12: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Life Cycle JSF - Fases• Process Validations: todos os validadores serão executados, em caso de erro de qualquer

valor, a mensagem é alocada no FacesContext, caso contrário ele atualiza (Update Model Values) os valores dos inputs na camada de negócio através da EL.

Page 13: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Life Cycle JSF - Fases• Invoke Application: Os métodos do ManagedBeans são executados e as regras de navegação

(Gravar, Excluir, Alterar,...) são resolvidas.• Se tudo ocorrer bem é renderizada pelo container do JSP, caso contrario as mensagens

gravadas no FacesContext são apresentadas.

Page 14: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Roteiro de Uso

Page 15: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Roteiro de Uso1. Criar um bean que represente o formulário

2. Usar f:view e h:form para formulários

3. Especificar o Action Controller com o atributo de ação h:commandButton.

4. Criar um controlador que leia os dados do formulário, chame a lógica de negócio, guarde os resultados em beans e tenha um retorno.

5. No faces-config é usado para declarar o form bean e as regras de navegação.

6. Criar os JSP´s responsáveis por cada retorno declarado

Page 16: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Exemplo: Passo 1 – Criar um Beanpackage br.com.justjava.sgv.cadastro.campanha;

import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;

@Entitypublic class CadastroCampanha {

@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private long id;

private String nomeCampanha;

private String observacaoCampanha;

public long getId() { return id;}

public void setId(long id) { this.id = id;}

public String getNomeCampanha() { return nomeCampanha;}

public void setNomeCampanha(String nomeCampanha) { this.nomeCampanha = nomeCampanha;

}

public String getObservacaoCampanha() { return observacaoCampanha;}

public void setObservacaoCampanha(String observacaoCampanha) { this.observacaoCampanha = observacaoCampanha;}

}

Page 17: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Exemplo: Passo 2 e 3 - f:view e h:form e Especificar o Action Controller <%@ page contentType="text/html; charset=UTF-8" %>

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t" %>

<html>

<head>

<title>Cadastro de Cliente</title>

</head>

<body>

<f:view>

<h:form>

<t:panelGrid align="center">

<h:outputText value="Nome Campanha:"/>

<h:inputText value="#{campanhaHandler.cadastroCampanha.nomeCampanha}"required="true"/>

<h:outputText value="Observação:"/>

<h:inputTextarea value="#{campanhaHandler.cadastroCampanha.observacaoCampanha}" required="true"/>

<h:commandButton value="Gravar" action="#{campanhaHandler.salvar}"/>

</t:panelGrid>

</h:form>

</f:view>

</body>

</html>

Page 18: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Exemplo: Passo 4 – Criar o Controlador

public void salvar() {

Session session = HibernateUtil.getCurrentSession();

DAO<CadastroCampanha> dao = new DAO<CadastroCampanha>(session,CadastroCampanha.class);

if (cadastroCampanha.getId() == 0) {

dao.salveOrUpdate(this.cadastroCampanha);

} else {

session.merge(this.cadastroCampanha);

}

this.cadastroCampanha = new CadastroCampanha();

}

Page 19: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Exemplo: Passo 5 – Configurar o faces-config.xml

<managed-bean>

<managed-bean-name>campanhaHandler</managed-bean-name>

<managed-bean-class>

br.com.justjava.sgv.cadastro.campanhahandler.CampanhaHandler

</managed-bean-class>

<managed-bean-scope>session</managed-bean-scope>

</managed-bean>

<navigation-rule>

<from-view-id>/cadastroCampanha.jsp</from-view-id>

</navigation-rule>

Page 20: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Exemplo: Passo 6 – Criar o JSP responsável pelo retorno<!- - Insiro este <h:form> com a tabela de retorno dentro do próprio JSP que cadastra - -><h:form>

<t:panelGrid align="center">

<h:dataTable value="#{campanhaHandler.allCadastroCampanha}" id="tabelaDados" rows="5" var="ccam" border="1“>

<h:column>

<f:facet name="header">

<h:outputText value="Nome Campanha"/>

</f:facet>

<h:outputText value="#{ccam.nomeCampanha}"/>

</h:column>

<h:column>

<f:facet name="header">

<h:outputText value="Observação"/>

</f:facet>

<h:outputText value="#{ccam.observacaoCampanha}"/>

</h:column>

</h:dataTable>

</t:panelGrid>

</h:form>

Page 21: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Rodando• Antes:

• Depois:

Page 22: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

IDEs

Page 23: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

IDEs• Netbeans

- Web Pack – Studio Creator

• Eclipse– Webtools + jsftoos (a ser liberado em julho)– EasyEclipse– MyEclipse– Red Hat Developer Studio

• Rational Application Developer – WSAD

• JDeveloper

Page 24: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Customizações

Page 25: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Customizações• Facilidade na customização de:

– Validadores– Conversores– Componentes de Interface– Renderizadores– Mensagens

Page 26: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Pequenas mudanças no Default

Page 27: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Pequenas mudanças no Default• Montagem de templates: como Clay (Shale) e Facelets e substituir um pelo outro é

questão de uma linha de configuração.

• A beans factory: podemos usar os beans do Spring ao invés dos managed beans do faces-config.xml.

• Renderização dos componentes: existem implementações, utilizando por exemplo XUL ou HTML + Ajax.

Page 28: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Implementações

Page 29: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Implementações• Apache

– MyFaces• Tomahawk/ Sandbox/ Tobago/ Trinidad/ Orchestra

• Red Hat/JBoss – RichFaces– Ajax4JSF

• Red Hat/JBoss – RichFaces

• ICEsoft Technologies Inc. – ICEfaces

• Oracle – ADF Faces

Page 30: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Templates

Page 31: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Templates• Tiles• Facelets• JSFTemplating

Page 32: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Templates• Alexandre (escrever)

Page 33: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

O que vai ter novo no JSF 2.0?

Page 34: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

JSF 2.0• Suporte a templates, baseado no Facelets, Tiles, dentre outros;• Simplificar a criação de aplicações do tipo CRUD;• Melhor tratamento de mensagens de erro;• Mecanismo de tratamento de exceções padrão;• Criação de aplicações Web sem XML, utilizando anotações;• Simplificação no desenvolvimento de componentes;• Especificar onde os artefatos (Conversores, Renderizadores, etc.) dever ser colocados no

WAR, permitindo ao container encontra-los sem a necessidade de sua definição em arquivos de configuração;

• Permitir que artefatos sejam alterados sem a necessidade de reinicializar o servidor.

Page 35: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Perguntas???

Page 36: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Contato:[email protected]

http://www.javawora.blogspot.com

Blog Java Anywhere:

Page 37: JavaServer Faces Produtividade em Desenvolvimento

April 10, 2023

Referências• http://www.caelum.com.br• http://javawora.blogspot.com/search/label/JSF• http://www.guj.com.br/java.tutorial.artigo.158.1.guj• http://java.sun.com/javaee/javaserverfaces/• www.jcp.org

– JSRs: 127; 252; 314.• http://www.jspolympus.com/JSF/JSFLifeCycle.jsp• http://www.guj.com.br/java.tutorial.artigo.187.1.guj• http://javaplace.blogspot.com/2007/07/frameworks-jsf-que-encapsulam-o-uso-do.html• http://www.nabble.com/Struts-+-JSF:-Vale-a-Pena--t4056131.html• http://www.javaplace.blogspot.com/ • http://myfaces.apache.org/• http://www.oracle.com/technology/products/adf/adffaces/index.html• http://www.icefaces.org/main/home/index.jsp• https://ajax4jsf.dev.java.net/

• Revistas:– Mundo Java nº: 21.– Java Magazine nº: 23; 26; 43; 44; 45; 46; 47; 48.

• Livros:– Faces in Action (Kito Mann – Manning, 2004);– JavaServer Faces (Hans Bergsten – O´Reilly, 2004);– Core JavaServer Faces (David Geary e Cay Horstmann).

Page 38: JavaServer Faces Produtividade em Desenvolvimento

TCS Confidential

Obrigado