Você está na página 1de 21

Anlise e Desenvolvimento de Sistemas

Disciplina:
Prof.(a):
Aula:
Semestre:

Programao Web II
Veronice de Freitas
03 JSF com PRIMERACES e Hibernate
6

Aula Atividade
Objetivo: introduo ao desenvolvimento web Java usando framework.
Orientaes:
Caro aluno,
Inicialmente faa download e instale os softwares preparando o ambiente para criar os
projetos JSF  no incio do texto da atividade coloquei uma tabela contendo os links para
download (no material de apoio (logo aps a tabela) contm vrios tutoriais que auxiliam
na instalao e configurao do ambiente).
Na unidade 01 do livro da disciplina Programao Web II tambm contm orientaes
para instalar os programas (se voc ainda no teve contato com as ferramentas, siga o
padro utilizado na disciplina eclipse e tomCat).
Em relao ao gabarito dos projetos:
Obs: deixei as primeiras atividades com o gabarito para facilitar a analise dos cdigos. Em
relao aos exemplos de projetos (02, 03, 04) veja as descries passo a passo nos
artigos referenciados nas atividades
(tambm esto nas sees aprofundando
conhecimento dos captulos 02, 03, 04 e 05 do livro da disciplina programao Web II (os
arquivos
do
projeto
tambm
estaro
disponveis
no
endereo:
https://www.dropbox.com/sh/ozxlcn9925dn0qf/AACrdllTeNnQPo6hdYywsMfda)  se ainda no
teve contato com desenvolvimento Web em Java, siga as orientaes para preparar o
ambiente de desenvolvimento usando o Eclipse e TomCat.

Sobre a impresso da atividade:


Obs: imprima somente as pginas das atividades.

Organizao do texto
1 - PREPARANDO O AMBIENTE ...................................................................................................... 2
2 PROGRAMAO WEB EM JAVA (CONTINUAO) ................................................................ 3
2.1 - Necessidades de uma aplicao web ............................................................................................. 3
2.2 Como o Java EE pode ajudar? ......................................................................................................... 5
2.3 Servidor de Aplicao Java EE ........................................................................................................ 5
3 - Atividade .......................................................................................................................................... 7
4 - Material de apoio ............................................................................................................................ 20

UNOPAR VIRTUAL (pgina: 1)

Anlise e Desenvolvimento de Sistemas

1 - PREPARANDO O AMBIENTE
Para desenvolver uma aplicao web em Java, ser necessrio as
ferramentas abaixo.
Tabela Sotwares
Software

Disponvel em

SDK Java 1.7

http://www.oracle.com/technetwork/java/javase/downloads/index.ht
ml
http://www.eclipse.org/downloads/packages/release/juno/sr1
http://tomcat.apache.org/download-70.cgi
http://dev.mysql.com/downloads/
Obs: orientaes para instalao (unidade 04)
http://javaserverfaces.java.net/
Obs: orientaes para instalao (unidade 02)
http://www.hibernate.org/)
Obs: orientaes para instalao (unidade 04)
http://www.primefaces.org/downloads.html
Obs: orientaes para instalao (unidade 03)
OUTRAS OPES
(http://netbeans.org/community/releases/72/
J vem embutido no Netbeans verso JEE

Eclipse Juno
Tomcat
MySQL 5.5
JSF 2.1
Hibernate 3.5
Primefaces 3.3.1

Netbeans 7.2
Glassfish 3.2

Observao: poder usar como forma alternativa para o Eclipse o NetBeans e para o
Tomcat o Glassfish, que j contm embutido a verso JEE).
Material de apoio:

Programao Java para a Web


https://www.novatec.com.br/livros/javaparaweb/capitulo9788575222386.pdf

Tutorial de instalao do Java 7 no Windows 7.


http://www.activeinfo.com.br/tutos/tutorial_instalacao_java_windows.pdf

Tutorial Tomcat - Instalao e Configurao Bsica.


http://www.mhavila.com.br/topicos/java/tomcat.html

Tutorial Configurando o Eclipse ...


http://ges.dc.ufscar.br/graduacao/tutorial_criacao_projeto_web_eclipse.pdf

Curso de Java bsico para iniciantes usando Eclipse:


http://www.java.marcric.com/pages/004-instalandoeclipse.html

No capitulo 01 do livro Programao Web II contm orientaes para


preparar o ambiente.

UNOPAR VIRTUAL (pgina: 2)

Anlise e Desenvolvimento de Sistemas

2 PROGRAMAO WEB EM JAVA (CONTINUAO)


2.1 - Necessidades de uma aplicao web
HTTP

Os usurios de uma aplicao web utilizam navegadores (browsers) para interagir com
essa aplicao.
A comunicao entre navegadores e uma aplicao web realizada atravs de requisies
e respostas definidas pelo protocolo HTTP. Dessa forma, os desenvolvedores de aplicao
web devem estar preparados para trabalhar com o protocolo HTTP.

Acesso simultneo
Alm disso, na grande maioria dos casos, as aplicaes web devem ser acessadas por
diversos usurios ao mesmo tempo. Consequentemente, os desenvolvedores web devem
criar ou utilizar algum mecanismo eficiente que permita esse tipo de acesso.

Contedo dinmico
As pginas de uma aplicao web devem ser geradas dinamicamente. Por exemplo,
quando um usurio de uma aplicao de email acessa a sua caixa de entrada, ele deseja
ver todos os emails enviados at aquele momento. A pgina contendo a lista de emails
deve ser gerada novamente toda vez que essa pgina for requisitada. Consequentemente,
os desenvolvedores web devem criar ou utilizar algum mecanismo eficiente que permita
que o contedo das pginas das aplicaes web seja gerado dinamicamente.
Figura 01: Necessidades de uma aplicao web

Fonte: k19

UNOPAR VIRTUAL (pgina: 3)

Anlise e Desenvolvimento de Sistemas

Soluo

Resolver os trs problemas apresentados tomaria boa parte do tempo de desenvolvimento,


alm de exigir conhecimentos tcnicos extremamente especficos por parte dos
desenvolvedores. Para facilitar o desenvolvimento de aplicaes web, a plataforma Java
oferece uma soluo genrica que pode ser utilizada para desenvolver aplicaes web.
Figura 02 Web Container

web container

Fonte: k19

Web Container
Uma aplicao web Java deve ser implantada em um Web Container para obter os
recursos fundamentais que ela necessita.
Um Web Container responsvel:

Pelo envio e recebimento de mensagens HTTP.

Por permitir que as aplicaes sejam acessadas simultaneamente por vrios


usurios de uma maneira eficiente.

Por permitir que as pginas de uma aplicao web sejam geradas dinamicamente.

Dois Web Containers mais conhecidos do mercado so Tomcat e Jetty. Tambm pode
utilizar um servidor de aplicao Java EE como o JBoss, Glassfish ouWebSphere, pois
eles possuem um Web Container internamente.

Para saber mais

Desenvolvimento Web com JSF 2 e JPA 2


http://www.k19.com.br/downloads/apostilas/java/k19-k12-desenvolvimento-web-com-jsf2e-jpa2
Orientao a Objetos em Java
http://www.k19.com.br/downloads/apostilas/java/k19-k11-orientacao-a-objetos-em-java

UNOPAR VIRTUAL (pgina: 4)

Anlise e Desenvolvimento de Sistemas

2.2 Como o Java EE pode ajudar?


As aplicaes Web de hoje em dia j possuem regras de negcio bastante complicadas.
Codificar essas muitas regras j representam um grande trabalho. Alm dessas regras,
conhecidas como requisitos funcionais de uma aplicao existem outros requisitos que
precisam ser atingidos atravs da nossa infraestrutura: persistncia em banco de dados,
transao, acesso remoto, web services, gerenciamento de threads, gerenciamento de
conexes HTTP, cache de objetos, gerenciamento da sesso web, balanceamento de
carga, entre outros. So chamados de requisitos no-funcionais. Se fosse o responsvel
por escrever cdigo para tratar esses outros requisitos, teria muito mais trabalho a fazer.
Tendo isso em vista, a Sun criou uma srie de especificaes que, quando implementadas,
podem ser usadas por desenvolvedores para tirar proveito e reutilizar toda essa
infraestrutura j pronta  fonte: CAELUM).
Algumas APIS especificadas no Java EE

JavaServer Pages (JSP), Java Servlets, Java Server Faces (JSF) (trabalhar para
a Web)

Enterprise Javabeans Components (EJB) e Java Persistence API (JPA). (objetos


distribudos, clusters, acesso remoto a objetos etc)

Java API for XML Web Services (JAX-WS), Java API for XML Binding (JAX-B)
(trabalhar com arquivos xml e webservices)

Java Autenthication and Authorization Service (JAAS) (API padro do Java para
segurana)

Java Transaction API (JTA) (controle de transao no continer)

Java Message Service (JMS) (troca de mensagens assncronas)

Java Naming and Directory Interface (JNDI) (espao de nomes e objetos)

Java Management Extensions (JMX) (administrao da sua aplicao e


estatsticas sobre a mesma)

2.3 Servidor de Aplicao Java EE


o nome dado a um servidor que implementa as especificaes do Java EE. Existem
diversos servidores de aplicao famosos compatveis com a especificao Java EE. O
JBoss um dos lderes do mercado e tem a vantagem de ser gratuito e open source.
Alguns softwares implementam apenas uma parte dessas especificaes do Java EE,
como o Apache Tomcat, que s implementa JSP e Servlets (como dissemos, duas das
principais especificaes), portanto no totalmente correto cham-lo de servidor de
aplicao. A partir do Java EE 6, existe o termo application server web profile, para poder
se referencia a servidores que no oferecem tudo, mas um grupo menor de especificaes,
consideradas essenciais para o desenvolvimento web  fonte: CAELUM.
Alguns servidores de aplicao conhecidos no mercado:

RedHat, JBoss Application Server, gratuito;

Sun (Oracle), GlassFish, gratuito;


UNOPAR VIRTUAL (pgina: 5)

Anlise e Desenvolvimento de Sistemas

Apache, Apache Geronimo, gratuito;

Oracle/BEA, WebLogic Application Server;

IBM, IBM Websphere Application Server;

Sun (Oracle), Sun Java System Application Server (baseado no GlassFish);

SAP, SAP Application Serve.

Servlet Container
O Java EE possui vrias especificaes, entre elas, algumas especficas para lidar com o
desenvolvimento de uma aplicao Web:

JSP

Servlets

JSTL

JSF

Um Servlet Container um servidor que suporta essas funcionalidades, mas no


necessariamente o Java EE completo. indicado a quem no precisa de tudo do Java EE
e est interessado apenas na parte web (boa parte das aplicaes de mdio porte se
encaixa nessa categoria).
H alguns Servlet Containers famosos no mercado. O mais famoso o Apache Tomcat,
mas h outros como o Jetty

Para saber mais

Apostila Java Web


http://www.flashcafe.com.br/wp-content/uploads/2012/04/Apostila-Java-WebPrimefaces.pdf

UNOPAR VIRTUAL (pgina: 6)

Anlise e Desenvolvimento de Sistemas

3 - Atividade
Atividade 01:
Analise a figura abaixo e responda o procedimento usado para que o valor definido na
classe Java ExemploBean seja alterado atravs da interface com o usurio.
Resposta:
Atravs uma classe Bean (com uso da
anotao @ManagedBean) que possibilita
intermediar a comunicao com o formulrio
atravs de uma Linguagem de Expresso (em
ingls, Expression Language ou EL).
"#{exemploBean.numero}"
Exemplo: package bean
package bean;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

Atributo privado
inicializado com o
valor 20

@ManagedBean
@RequestScoped
public class ExemploBean {
private int numero = 20;

Mtodos pblicos
get e set para o
atributo numero

public int getNumero() {


return numero;
}
public void setNumero(int numero) {
this.numero = numero;
}
}

Mtodos pblicos
get e set para o
atributo numero

Exemplo: view
<?xml version='1.0' encoding='UTF-8' ?>
<!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>Exemplo JSF</title>
</h:head>
<h:body>
Valor: #{exemploBean.numero}
<h:form>

UNOPAR VIRTUAL (pgina: 7)

Expresso EL
(Expression
Language)

Anlise e Desenvolvimento de Sistemas


<h:inputText value = "#{exemploBean.numero}"/>
<h:commandButton value="Altera"/>

Boto de ao

</h:form>
</h:body>
</html>

Atividade 02:
1. Crie um formulrio para cadastro de clientes com pelo menos trs campos.
2. Qual a diferena dos componentes que iniciam com <p: ...> e <h: ...> utilizados no cdigo.

Resposta: item 01
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Formulrio</title>
</h:head>
<h:body>
<p:fieldset legend="Meu Cadastro" toggleable="true">
<h:form>
<h:outputText value="Nome:" />
<p:inputText id="nome" value="#{beanCliente.cliente.nome}" />
<h:outputText value="Observaes:" />
<p:inputTextarea value="#{beanCliente.cliente.obervacao}" />

UNOPAR VIRTUAL (pgina: 8)

Anlise e Desenvolvimento de Sistemas

<h:outputText value="Data cadastro:" />


<p:calendar value="#{beanCliente.cliente.dataCadastro}" />
<h:outputText value="Telefone:" />
<p:inputMask mask="(999)9999-9999" value="#{beanCliente.cliente.telefone}" />
<h:outputText value="CPF:" />
<p:inputMask mask="999.999.999-99" value="#{beanCliente.cliente.CPF}" />
<h:outputText value="Descrio:" />
<p:keyboard layout="qwertyBasic" value="#{beanCliente.cliente.descricao}" />
<h:outputText value="Senha:" />
<p:keyboard password="true" keypadOnly="true" value="#{beanCliente.cliente.senha}" />
<h:commandButton value="Salvar" action="#{beanCliente.salvar}" />
</h:form>
</p:fieldset>
</h:body>
</html>
Resposta: item 02
<p: ...> - componentes primefaces  necessrio o namespace  xmlns:p="http://primefaces.org/ui"
<h: ...> - componentes JSF  necessrio o namespace (xmlns:h="http://java.sun.com/jsf/html"

ATIVIDADE 03:
Crie uma classe (POJO) com os atributos do formulrio (crie tambm os mtodos gets e sets para
cada atributo).
Resposta:
package modelo;
import java.util.Date;
public class Cliente {
private String CPF;
private String nome;
private String descricao;
private String telefone;
private String obervacao;
private Date dataCadastro;
private String senha;
public String getCPF() {
return CPF;
}
public void setCPF(String cPF) {
CPF = cPF;
}

UNOPAR VIRTUAL (pgina: 9)

Anlise e Desenvolvimento de Sistemas


public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
public String getObervacao() {
return obervacao;
}
public void setObervacao(String obervacao) {
this.obervacao = obervacao;
}
public Date getDataCadastro() {
return dataCadastro;
}
public void setDataCadastro(Date dataCadastro) {
this.dataCadastro = dataCadastro;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
}

Atividade 04:
Crie uma classe bean para intermediar a comunicao entre a pgina JSF (atividade 02) e o modelo
(atividade 03). Nessa classe crie tambm o mtodo salvar (nesse mtodo imprima os dados enviados
pelo formulrio para que seja apresentado no console).
package bean;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import classe Cliente


(atividade 03)

import modelo.Cliente;
@ManagedBean(name = "beanCliente")
@SessionScoped
public class ClienteBean {

Nome para o ManagedBean (nesse caso o


nome ser beanCliente nomeado atravs do
name (se omitir o name o nome do bean ser o
nome da classe com a inicial em minsculo)

Cliente cliente = new Cliente();

UNOPAR VIRTUAL (pgina: 10)

Anlise e Desenvolvimento de Sistemas


public String salvar(){
// ------ teste - visualiza no console -------------System.out.println(cliente.getNome());
System.out.println(cliente.getCPF());
System.out.println(cliente.getDescricao());
System.out.println(cliente.getTelefone());
System.out.println(cliente.getObervacao());
System.out.println(cliente.getDataCadastro());
System.out.println(cliente.getSenha());

Apresenta no console os valores


dos atributos da classe modelo
(atividade 03) atravs dos mtodos
get (pblicos) de cada atributo.

return "sucesso";
}
public Cliente getCliente() {
return cliente;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
}

ATIVIDADE 05
1) Qual a funo da anotao @ManagedBean(name = "beanCliente") no cdigo
01?
Resposta:
A classe ClienteBean representa um managed bean, isso significa dizer que eu possvel
vincular (binding) seus atributos ou mtodos com componentes da pginas JSF. Essa
caracterstica que torna o JSF uma framework orientado a componentes e a eventos. O
que
caracteriza
a
classe
como
sendo
um
bean
gerenciado

a
anotao @ManagedBean definida logo acima a definio da classe. Essa nova forma
de se declarar Managed Bean na nova especificao JSF (JSF2)
Obs: se omitir o uso do name o nome do bean ser o nome da classe (ClienteBean) com a
inicial e minsculo (clienteBean).
2) Qual a funo da anotao @SessionScoped no cdigo 01?
Resposta:
Outra anotao usada logo abaixo da anotao @ManagedBean a
anotao @SessionScoped. Essa anotao informa que o escopo do bean gerenciado
de sesso, ou seja, enquanto durar minha sesso eu vou ter um objeto da
classe ClienteBean na sesso da minha aplicao. Anlogo ao escopo de sesso existe o
escopo de request referenciado pela anotao @RequestScoped onde um novo objeto
criado a cada requisio realizada pelo usuario.

UNOPAR VIRTUAL (pgina: 11)

Anlise e Desenvolvimento de Sistemas

O escopo nada mais do que o tempo de vida e morte do seu objeto, ou seja, quando ele
ser criado e destrudo. Dentre esses escopos esto os apresentados na tabela 01:
Tabela 01: Tempo de vida da classe
Escopo
Descrio
@ApplicationScoped
Apenas uma instncia da classe em toda a aplicao. Todos
os usurios acessam a mesma instncia.
@SessionScoped
Existe uma instncia para cada usurio.
@RequestScoped
Existe uma instncia pelo tempo de durao da requisio
feita pelo usurio.
@NoneScoped
Cada vez que houver uma chamada a uma propriedade ou
mtodo da classe Bean ser criada uma nova instncia
@ViewScoped
Armazena a instncia da classe Bean na pgina exibida.
Enquanto esta estiver sendo manipulada, a mesma instncia
da classe Bean estar disponvel.
@CustomScoped(value= Armazena a instncia da classe Bean em um java.util.Map
#{meuMap})
declarado.
Fonte: http://blog.fimes.edu.br/fernando/files/2012/05/JavaServer-Faces-%E2%80%93-JSF.pdf

3) Qual a relao entre a linha de cdigo import modelo.Cliente e a linha de cdigo


Cliente cliente = new Cliente();
Resposta:
import modelo - importa da classe Cliente
Cliente cliente = new Cliente(); cria um objeto Cliente da classe Cliente
Cdigo 01:
import modelo.Cliente;

O escopo padro do JSF 2.0 o request (anotao


@ManagedBean(name = "beanCliente") @RequestScoped). Os beans gerenciveis do
tipo request podem ter a anotao de escopo omitida.
@SessionScoped
Porm, para uma melhor legibilidade do
public class ClienteBean {
cdigo, recomendvel no omitir a anotao de escopo.
http://www.venturus.org.br/wpCliente cliente = new Cliente();
content/themes/newera/artigo/anotacoes-navegacao//...
JSF.pdf

Cdigo 02:
<h:form>
<h:outputText value="Nome:" />
<p:inputText id="nome" value="#{beanCliente.cliente.nome}" />
<h:outputText value="Observaes:" />
<p:inputTextarea value="#{beanCliente.cliente.obervacao}" />
<h:commandButton value="Salvar" action="#{beanCliente.salvar}" />
</form>

UNOPAR VIRTUAL (pgina: 12)

Anlise e Desenvolvimento de Sistemas


ATIVIDADE 06: (projeto seo aprofundando conhecimento autor Thiago Marques)
Analise os trs cdigos a seguir:

1)

a) Como foi possvel cadastrar os dados no formulrio e apresentar de forma tabular logo
abaixo do formulrio?
Segue os blocos de cdigo:
package controllers;
//imports omitidos

Import da
classe Pessoa

import models.Pessoa;

@ManagedBean
@ViewScoped
public class PessoaMB implements Serializable {
private Pessoa pessoa = new Pessoa();

Cria uma instncia da classe


Pessoa (objeto  pessoa) 
atravs desse objeto
possvel armazenar
informaes nos atributos
privados atravs dos mtodos
pblicos gets e sets.

private List<Pessoa> pessoaLista = new ArrayList<Pessoa>();


/** Creates a new instance of PessoaMB */
public PessoaMB() {
}
/**Getters e Setters */
public Pessoa getPessoa() {
return pessoa;
}

objeto pessoaLista (armazena na memria


as informaes do objeto pessoa) 
imagine todas as informaes do objeto
pessoa sendo armazenado em uma linha
de uma matriz heterognea (so atributos
de vrios tipos).

public void setPessoa(Pessoa pessoa) {


this.pessoa = pessoa;
}
public List<Pessoa> getPessoaLista() {
return pessoaLista;
}
public void setPessoaLista(List<Pessoa> pessoaLista) {
this.pessoaLista = pessoaLista;
Mtodo chamado ao clicar no boto
}
Salvar no formulrio de cadastro de
clientes.
public void salvarPessoa() {
//adicionando pessoas a lista
pessoaLista.add(pessoa);
//instanciado uma nova para ser cadastrada
pessoa = new Pessoa();
}

Armazena as informaes do
cadastro que esto no objeto pessoa
em pessoaLista que um objeto
instrnciado atravs de:
ArrayList<Pessoa>();

UNOPAR VIRTUAL (pgina: 13)

Anlise e Desenvolvimento de Sistemas


Na view foi utilizado um componente <h:dataTable ...> que apresenta os dados armazenados no
objeto pessoaLista indicados no cdigo anterior.
<h:dataTable id="tablePessoa" value="#{pessoaMB.pessoaLista}" var="p" title="Pessoas Cadastradas" border="1"
rows="10" >
<h:column>
<f:facet name="header">
<h:outputText value="NOME" />

Nome do
ManagedBean 
classe PessoaMB

var=p  varivel para


acesso aos atributos da
lista.

</f:facet>
<h:outputText value="#{p.nome}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="ENDEREO" />
</f:facet>
<h:outputText value="#{p.endereco}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="NMERO" />
</f:facet>
<h:outputText value="#{p.numero}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="TELEFONE" />
</f:facet>
<h:outputText value="#{p.telefone}"/>
</h:column>
<h:column>

UNOPAR VIRTUAL (pgina: 14)

Anlise e Desenvolvimento de Sistemas


<f:facet name="header">
<h:outputText value="CIDADE" />
</f:facet>
<h:outputText value="#{p.cidade}"/>
</h:column>
</h:dataTable>

b) Qual a relao dos cdigos com a arquitetura MVC?


Atravs dos trs cdigos possvel ter uma viso dos benefcios da arquitetura MVC onde
A view contm somente cdigos relacionados a interface, os dados representados na classe
Pessoa e o controle representado na classe PessoaMB (que facilita a organizao e
Manuteno do projeto).

Interface: view

Cdigo 01: modelo


package models;
public class Pessoa {
private String nome;
private String endereco;
private String numero;
private String telefone;
private String cidade;
public String getCidade() {
return cidade;
}

UNOPAR VIRTUAL (pgina: 15)

Anlise e Desenvolvimento de Sistemas


public void setCidade(String cidade) {
this.cidade = cidade;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getNumero() {
return numero;
}
public void setNumero(String numero) {
this.numero = numero;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
}

Cdigo 02: controller


package controllers;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import models.Pessoa;
@ManagedBean
@ViewScoped
public class PessoaMB implements Serializable {
private Pessoa pessoa = new Pessoa();
private List<Pessoa> pessoaLista = new ArrayList<Pessoa>();
UNOPAR VIRTUAL (pgina: 16)

Anlise e Desenvolvimento de Sistemas

/** Creates a new instance of PessoaMB */


public PessoaMB() {
}
/**Getters e Setters */
public Pessoa getPessoa() {
return pessoa;
}
public void setPessoa(Pessoa pessoa) {
this.pessoa = pessoa;
}
public List<Pessoa> getPessoaLista() {
return pessoaLista;
}
public void setPessoaLista(List<Pessoa> pessoaLista) {
this.pessoaLista = pessoaLista;
}
public void salvarPessoa() {
//adicionando pessoas a lista
pessoaLista.add(pessoa);
//instanciado uma nova para ser cadastrada
pessoa = new Pessoa();
}
}
Cdigo 03: formulrio (view)
<?xml version='1.0' encoding='UTF-8' ?>
<!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"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Cadastro</title>
</h:head>
<h:body>
<h:form>
<h:panelGrid columns="3">

UNOPAR VIRTUAL (pgina: 17)

Anlise e Desenvolvimento de Sistemas

<h:outputLabel value="Nome:"/>
<h:inputText id="nome" value="#{pessoaMB.pessoa.nome}" size="20"
requiredMessage="Campo Obrigatrio"/>

required="true"

<h:message for="nome" />


<h:outputLabel value="Endereo:"/>
<h:inputText id="end" value="#{pessoaMB.pessoa.endereco}" size="20" required="true"
requiredMessage="Campo Obrigatrio"/>
<h:message for="end" />
<h:outputLabel value="Nmero:"/>
<h:inputText id="nro" value="#{pessoaMB.pessoa.numero}" size="20" />
<h:message for="nro" />
<h:outputLabel value="Telefone:"/>
<h:inputText id="tel" value="#{pessoaMB.pessoa.telefone}" size="20" />
<h:message for="tel" />
<h:outputLabel value="Cidade:"/>
<h:inputText id="mun" value="#{pessoaMB.pessoa.cidade}" size="20" required="true"
requiredMessage="Campo Obrigatrio"/>
<h:message for="mun" />
<h:commandButton id="btnE" value="Enviar" type="submit"
action="#{pessoaMB.salvarPessoa}"/>
<h:commandButton id="btnL" value="Limpar" type="reset"/>
</h:panelGrid>

Bloco
componente
<h:dataTable
,,,>

</h:form>
<h:panelGrid>
<h:dataTable id="tablePessoa" value="#{pessoaMB.pessoaLista}" var="p" title="Pessoas
Cadastradas" border="1" rows="10" >
<h:column>
<f:facet name="header">
<h:outputText value="NOME" />
</f:facet>
<h:outputText value="#{p.nome}"/>
</h:column>
<h:column>

UNOPAR VIRTUAL (pgina: 18)

Anlise e Desenvolvimento de Sistemas

<f:facet name="header">
<h:outputText value="ENDEREO" />
</f:facet>
<h:outputText value="#{p.endereco}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="NMERO" />
</f:facet>
<h:outputText value="#{p.numero}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="TELEFONE" />
</f:facet>
<h:outputText value="#{p.telefone}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="CIDADE" />
</f:facet>
<h:outputText value="#{p.cidade}"/>
</h:column>
</h:dataTable>
</h:panelGrid>
</h:body>
</html>

UNOPAR VIRTUAL (pgina: 19)

Anlise e Desenvolvimento de Sistemas

4 - Material de apoio
ACTIVEINFO. Tutorial de instalao do Java 7 no Windows 7.
http://www.activeinfo.com.br/tutos/tutorial_instalacao_java_windows.pdf
ADRIELCAFE. Hibernate: tipos de dados e dialetos suportados. 2013
http://adrielcafe.com/cafelog/hibernate/46-hibernate-tipos-de-dados-e-dialetos-suportados
ALGAWORKS. DWJSF desenvolvimento web com javaserver faces.
http://www.algaworks.com/downloads/apostilas/algaworks-dwjsf-desenvolvimento-webcom-javaserver-faces-2a-edicao.pdf
BRUNETTA, Andii. JSF 2.0: Componentes PrimeFaces 2.2.1 - Parte 1. 2011
http://javasemcafe.blogspot.com.br/2011/05/jsf-20-componentes-primefaces-221-parte.html
BRUNETTA, Andii. JSF 2.0: Template em Facelets com Layout do PrimeFaces 3.0.
http://javasemcafe.blogspot.com.br/2012/03/jsf-20-template-em-facelets-com-layout.html.
CAELUM Ensino e Inovao. JSF Lidando com o estado da view.
http://blog.caelum.com.br/jsf-lidando-com-o-estado-da-view
CAELUM. Introduo ao JSF e Primefaces.
http://www.caelum.com.br/apostila-java-testes-jsf-web-services-design-patterns/introducaoao-jsf-e-primefaces/#7-6-introducao-ao-jsf-com-mojarra-e-primefaces
DOMENECH, Edson. Desenvolvimento de um sistema Web com JavaServer Faces e
PrimeFaces (Parte I)
http://domenechbr.blogspot.com.br/ 2012/08/desenvolvimento-de-um-sistema-webcom.html
FLASHCAGE. Apostila Java Web
http://www.flashcafe.com.br/wp-content/uploads/2012/04/Apostila-Java-Web-Primefaces.pdf
GONALVES, Edson. Desenvolvimento de Aplicaes Web com IDE 5.5. Rio de
Janeiro: Editora Cincia Moderna. 2007.
GONALVES, Edson. Dominando Java Server Faces e Facelets utilizando Spring 2.5,
Hibernate e JPA. http://www.flashcafe.com.br/wp-content/uploads/2012/04/dominando-jsfe-facelets-utilizando-spring-2.5-hibernate-e-jpa.pdf
GONALVES, Edson. JavaServer Faces 2.0 na Prtica Parte 3
http://www.edsongoncalves.com.br/2010/02/21/javaserver-faces-2-0-na-pratica-parte-3/
K19. Desenvolvimento Web com JSF 2 e JPA 2
http://www.k19.com.br/downloads/apostilas/java/k19-k12-desenvolvimento-web-com-jsf2-ejpa2
K19. Orientao a Objetos em Java
http://www.k19.com.br/downloads/apostilas/java/k19-k11-orientacao-a-objetos-em-java

UNOPAR VIRTUAL (pgina: 20)

Anlise e Desenvolvimento de Sistemas


KING, Gavin. et al. Documentao de Referncia Hibernate. 2010.
http://docs.jboss.org/hibernate/core/3.5/reference/pt-BR/pdf/hibernate_reference.pdf
PROCACI, THIAGO. Internacionalizao de mensagens com JSF Exemplo prtico.
http://thiagoprocaci.blogspot.com/2009/07/internacionalizacao-de-mensagens-com.html
UNIVERSIDADEJAVA. Introduo ao JavaServer Faces 2.0.
http://www.universidadejava.com.br/docs/introducaoaojavaserverfaces20
UNIVERSIDADEJAVA. Criando uma tela de login. Disponvel em
http://www.universidadejava.com.br/docs/criandoumateladeloginutilizandoojsf20
UNIVERSIDADEJAVA. Criando uma tela de login.
http://www.universidadejava.com.br/docs/jsf20-bibliotecadetagshtml
USANDO hibernate: conceitos e consultas.2012.
http://www.facom.ufu.br/~bacala/DAW/06%20-%20Usando%20Hibernate.pdf
VENTURINI, Danilo; MARCHI, Kssia Rita da Costa. Desenvolvimento web utilizando
primefaces. 2013.
http://web.unipar.br/~seinpar/artigos/Danilo-Venturini.pdf
VINICIUS, Samuel. Conhea o ciclo de vida do JSF. Disponvel
http://imasters.com.br/linguagens/java/conheca-o-ciclo-fe-vida-do-jsf
WORKBENCH. MYSQL WORKBENCH.
http://www.mysql.com/products/workbench
ZANOTTI, Emerson. Aula 7: converso e validao. 2012.
http://www.codigosfontes.com.br/jsf-conversao-e-validacao/

Observaes:
Caro Aluno,
Pea para o tutor de sala enviar suas dvidas pelo Chat Atividade para que o professor
possa esclarec-las.

UNOPAR VIRTUAL (pgina: 21)

Você também pode gostar