Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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
1 - PREPARANDO O AMBIENTE
Para desenvolver uma aplicao web em Java, ser necessrio as
ferramentas abaixo.
Tabela Sotwares
Software
Disponvel em
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:
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
Soluo
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:
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.
JavaServer Pages (JSP), Java Servlets, Java Server Faces (JSF) (trabalhar para
a Web)
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)
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
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
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>
Expresso EL
(Expression
Language)
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}" />
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;
}
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 modelo.Cliente;
@ManagedBean(name = "beanCliente")
@SessionScoped
public class ClienteBean {
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.
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
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>
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();
Armazena as informaes do
cadastro que esto no objeto pessoa
em pessoaLista que um objeto
instrnciado atravs de:
ArrayList<Pessoa>();
Nome do
ManagedBean
classe PessoaMB
</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>
Interface: view
<h:outputLabel value="Nome:"/>
<h:inputText id="nome" value="#{pessoaMB.pessoa.nome}" size="20"
requiredMessage="Campo Obrigatrio"/>
required="true"
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>
<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>
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
Observaes:
Caro Aluno,
Pea para o tutor de sala enviar suas dvidas pelo Chat Atividade para que o professor
possa esclarec-las.