Apostila Java WEB
Apostila Java WEB
3
Desenvolvimento JAVA WEB
Desenvolvimento JAVA WEB
Autor: Bruno Zolotareff dos Santos
Como citar este documento: SANTOS, B.Z. Desenvolvimento JAVA WEB. Valinhos: 2016.
Sumário
Apresentação da Disciplina 03
Unidade 1: Introdução às Tecnologias Java Enterprise Edition 05
Unidade 2: Web Container Necessidades de uma aplicação Web 24
Unidade 3: Persistência e Reaproveitamento de Código na utilização de sistemas Web 47
Unidade 4: Configurando o Hibernate e Integração JSF e JPA 77
Unidade 5: Inclusão de Práticas de Validação, Requisição, outras Linguagens e Construção de
122
Projeto (Prático-Conceitual)
Unidade 6: JSF com PrimeFaces 149
Unidade 7: Temas do PrimeFaces, apresentação e utilização 166
Unidade 8: JSF com JPA e MVC apresentação e utilização 188
2/218
Apresentação da Disciplina
A tecnologia Web é uma das principais fer- da engenharia de software fazem parte do
ramentas no mundo corporativo que utiliza entendimento do conteúdo programado.
a rede de computadores como meio de co-
Contudo, a disciplina abordará os concei-
municação capaz de proporcionar a inter-
tos de desenvolvimento necessários para
conectividade e transações de informações
uma aplicação, utilizando o Java Enterprise
de instituições financeiras, militares, hospi-
Edition (JEE) e todos os recursos necessários
tais, dentre outros.
para realizar uma programação de software
A disciplina foi estruturada para um apro- distribuída.
fundamento nas tecnologias necessárias
Além disso, a abordagem da disciplina pro-
para o desenvolvimento de aplicativos Web,
porcionará a utilização de padrões e APIs
utilizando o JAVA como ferramenta. Portan-
necessários para o desenvolvimento utili-
to, serão apresentados os principais con-
zando persistência de dados. Assim, poderá
ceitos da importância da tecnologia e como
ter o domínio de tecnologias como JSP/JSF e
utilizá-la.
Servlet para o desenvolvimento de páginas
Entender métodos práticos e ágeis para o Web.
desenvolvimento de projetos Web e esti-
A disciplina proporciona um entendimento
mular boas práticas de programação utili-
maior do assunto em relação a tecnologias
zando padrões das especificações do JAVA e
3/218
Web, tais como: HTML, XML, JAAS, AJAX, que
são abordadas para o conhecimento geral.
Portanto, o desenvolvimento começa com
uma introdução a tecnologia JAVA e explora
as especificações do JEE. Em seguida, você
conhecerá as ferramentas necessárias para
o desenvolvimento e como configurar o am-
biente de desenvolvimento.
4/218
Unidade 1
Introdução às Tecnologias Java Enterprise Edition
Objetivos
5/218
Introdução
APIs Descrição
JavaServer Pages (JSP) (páginas Web)
14/218
Considerações Finais
15/218
Referências
APACHE. Servidor TOMCAT. Disponível em: <http://tomcat.apache.org/>. Acesso em: 30 jul. 2016.
OASIS. SOA. Disponível em: <http://www.pcs.usp.br/~pcs5002/oasis/soa-rm-csbr.pdf>. Acesso
em: 12 jul. 2016.
CAELUM. O que é Java? Disponível em: <https://www.caelum.com.br/apostila-java-orientacao-
-objetos/o-que-e-java/#2-3-maquina-virtual>. Acesso em: 12 jul. 2016.
PRESSMAN, Roger; MAXIM, Bruce. Engenharia de Software. 8. ed. New York, McGraw Hill Brasil,
2016.
18/218
Questão 2
2. Qual foi o propósito da criação do Java por James Gosling?
19/218
Questão 3
3. Para programação distribuída com JEE, quais são os requisitos?
20/218
Questão 4
4. Quais desses servidores Web suportam JEE?
a) IIS
b) APACHE
c) MySQL
d) FTP Server
e) Glassfish
21/218
Questão 5
5. Quais dessas tecnologias representa melhor o sistema de mensageria
no JEE?
a) JSE
b) JRE
c) JSF
d) JTA
e) JMS
22/218
Gabarito
1. Resposta: C. Java. Porém, é preciso ter um servidor Web
e uma IDE para auxiliar no desenvolvimento
Qualquer aplicação dinâmica em um proje- do software.
to Web é preciso ter um servidor Web, se não
irá compilar. Uma aplicação estática não 4. Resposta: E.
precisa de um servidor e é interpretada ao
lado do cliente. Glassfish é um servidor Web que suporta
aplicações Java Enterprise Edition.
2. Resposta: C.
5. Resposta: D.
O Java foi originalmente projetado para dis-
positivos eletrodomésticos baseado na lin- O Java Message Service é a tecnologia espe-
guagem SmallTalk e que mais tarde foi utili- cífica para tratar serviços de mensagens.
zado para Web.
3. Resposta: B.
Objetivos
24/218
Introdução
import java.io.IOException;
import javax.servlet.ServletException; APIs importadas para o Servlet
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
Comentários
/**
Nome do Servlet
* Servlet implementation class CursoServlet
*/ Herda a classe HttpServlet (API)
28/218 Unidade 2 • Web Container Necessidades de uma aplicação Web
Nome do Servlet
@WebServlet(“/CursoServlet”)
public class CursoServlet extends HttpServlet { Herda a classe HttpServlet (API)
private static final long serialVersionUID = 1L;
public CursoServlet() { Construtor
super();
// TODO Auto-generated constructor stub
} Método doGet
java.io.PrintWriter
out.println(“Olá JAVA”);
Com essa atualização em cursoServlet no método POST, será possível apresentar os dados em
nosso browser. Para isso, deve ser chamado a página JSP no browser de nome: index.jsp, que
contém o formulário, apenas para demonstrar como chamar esse Servlet na execução como no
código a seguir:
Index.jsp
<html><head>
O resultado ao carregar o projeto será como na Figura 2. Caso ocorra algum erro, verifique o có-
digo e se configurou todo o ambiente do Eclipse ou Netbeans para o funcionamento correto, pois
qualquer detalhe que faltar pode resultar erros.
Lembre-se de que o mapeamento do Servlet é realizado por um arquivo web.xml nas especifica-
ções anteriores ao JEE 6. A partir das novas especificações, é utilizada a seguinte notação para o
nome da classe:
Notação para mapeamento do
Servlet quando requisitado.
@WebServlet(“/CursoServlet”)
public class CursoServlet extends HttpServlet {
Todo esse processo é realizado pelo container do servidor Web e engloba um ciclo de vida do Ser-
vlet que é requisitado. A Figura 3 auxilia no entendimento de como funciona o ciclo de vida do
33/218 Unidade 2 • Web Container Necessidades de uma aplicação Web
Servlet segundo as especificações da JSR (JCP, 2016).
Figura 3 – Ciclo de vida do Servlet
Segundo o professor Sauvé (2016), o ciclo de vida de um Servlet passa pelas seguintes fases apre-
sentadas no Quadro 2:
Fases Descrição
Instanciação O Web container cria uma instância do servlet
Inicialização O Web container chama o método init() do servlet
Serviço Se o container receber um pedido para o servlet, o método service() do servlet é chamado
Destruição Antes de destruir a instância, o Web container chama o método destroy() do servlet
Não disponível A instância é destruída e marcada para coleta de lixo
O processo do ciclo de vida do Web container possui todas as fases especificadas no quadro, sen-
do importante conhecer o funcionamento do Servlet para compreender o que acontece em seu
projeto Web.
<html>
<head>
<title>Insert title here</title>
</head>
<body> Código Java dentro da JSP
<%
if (request.getParameter(“nome”) == null){
out.println(“Olá Java”);
} else {
out.println(“olá, “ + request.getParameter(“nome”));
} %>
</body>
</html>
A tecnologia JSP é utilizada, principalmente, para separar a camada de apresentação da camada
lógica da programação (HUNTER, 2001 p. 4-21).
36/218 Unidade 2 • Web Container Necessidades de uma aplicação Web
Glossário
Container: recipiente.
TOMCAT: servidor Web.
MVC: Model View Controller (Modelo Visão Controle).
38/218
Considerações Finais
39/218
Referências
HUNTER, Jason; CRAWFORD, William. Java servlet programming. “O’Reilly Media, Inc.”, 2001.
LINHARES, E.S. et al. TÓPICOS AVANÇADOS COMPARATIVOS ENTRE OS SERVIDORES WEB APA-
CHE E IIS. Revista Computação Aplicada – UNG, v. 3, n. 1, p. 35-39, 2014.
LUCKOW, Décio Heinzelmann; MELO, Alexandre Altair. Programação Java para a WEB. São Paulo:
Novatec, 2010.
SAUVE, Jacques Philippe. Introdução a Containers Web: A Primeira Aplicação Web com Servlets.
Disponível em: <http://www.dsc.ufcg.edu.br/~jacques/cursos/j2ee/html/servlets/intro.htm>.
Acesso em: 12 jul. 2016.
TOMCA. Apache Software Fundation. Disponível em: <https://tomcat.apache.org>. Acesso em:
12 jul. 2016.
a) HTTP.
b) IEEE.
c) IOT.
d) POST.
e) GET.
41/218
Questão 2
2. Qual dessas alternativas se refere a um Web container?
42/218
Questão 3
3. Qual desses servidores Web não suportam JEE?
a) Apache TOMCAT
b) JBOSS
c) Web Sphere
d) IIS
e) GlassFish
43/218
Questão 4
4. Qual desses métodos existe no Servlet e apresenta os dados na URL no
browser quando processado?
a) POST
b) GET
c) processRequest
d) delete
e) DAO
44/218
Questão 5
5. O mapeamento automático com anotações foi implementado a partir de
qual versão do JEE?
45/218
Gabarito
1. Resposta: A. 4. Resposta: B.
2. Resposta: C. 5. Resposta: D.
3. Resposta: D.
46/218
Unidade 3
Persistência e Reaproveitamento de Código na utilização de sistemas Web
Objetivos
1. Persistência.
2. Reaproveitar dados.
3. Padronização.
47/218
Introdução
Em sua aplicação JEE, é possível se conectar LETE), será apresentado o padrão de cone-
a qualquer Sistema Gerenciador de Banco xão DAO (Data Access Object) junto com o
de Dados (SGBD) que contenha o Driver dis- banco de dados MySQL.
ponível para essa ação. Para conectar-se a Com esse padrão, é possível ter um aprovei-
uma base de dados, é preciso utilizar APIs tamento melhor no código e reutilizar sem
que façam essa ligação e possibilitem fazer precisar reescrever ou validar novamen-
ações como: gravar, consultar, editar e ex- te. O padrão DAO utiliza os paradigmas da
cluir. programação orientada a objetos, que fa-
Segundo as especificações do Java, o JDBC cilitam na herança e abstração das classes
(Java Database Connectivity) é capaz de fa- (CORDEIRO, 2014, p. 7-15).
zer essa ligação de conexão com SGBD (JCP, Essa camada de persistência possui uma
2016). A empresa ORACLE possui o SGBD estrutura padrão, e, no exemplo a seguir,
mais famoso, que é o ORACLE (mesmo nome serão utilizadas as seguintes classes:
da companhia), e a empresa também possui
um dos SGBD gratuitos mais utilizados, que • Conexão com banco de dados: den-
é o MySQL. tro dessa classe, há especificações de
qual banco de dados será utilizado e
Para conectar-se e efetuar as ações do cha-
a referência do Driver e o endereço do
mado CRUD (CREATE, READ, UPDATE E DE-
48/218 Unidade 3 • Persistência e Reaproveitamento de Código na utilização de sistemas Web
servidor que utiliza o JDBC como API, e é responsável em fazer a ligação.
• GETTERS e SETTERS: há uma classe que representa os mesmos atributos da tabela do ban-
co de dados; nessa classe, são gerados os GETTERS e SETTERS para ações de transações de
dados.
• CRUD: essa classe contém os métodos necessários para fazer as operações: gravar, consul-
tar, editar e excluir.
Antes de começar a programar, você deve criar um banco de dados com nome: cadastro e uma
tabela chamada users com os seguintes atributos (id_usuario, login, senha e email). Segue o có-
digo SQL para criar os requisitos no MySQL:
CREATE DATABASE cadastro; Nome do banco de dados
Class.forName(“com.mysql.jdbc.Driver”);
} catch (ClassNotFoundException ex) {
System.out.println(“Driver do banco nao encontrado.”);
System.exit( -1); }
}
public static Connection getConnection() {
Connection conn = null;
try {
conn = DriverManager.getConnection( Banco de dados no
“jdbc:mysql://localhost/cadastro”, MySQL
“root”,
Usuário e senha do
“1234”
banco de dados
);
} catch (SQLException ex) {
A próxima classe a ser criada é a classe Dados.java que representará os atributos do banco de
dados para manipular e encapsular as informações.
package bd.jee.conexao;
public DadosDAO() {}
return dadosAux;
} Método para apagar os dados
pstmt.setString(1, dados.getId_usuario());
pstmt.setString(2, dados.getLogin());
pstmt.setString(3, dados.getSenha());
pstmt.setString(4, dados.getEmail());
pstmt.executeUpdate();
conn.close();
} catch (SQLException ex) {
retorno = false;
ex.printStackTrace();
}
return retorno;
}
Assim que o padrão DAO estiver pronto, você poderá utilizar junto às páginas JSP e Servlets. No
exemplo proposto, será aplicado o padrão DAO para fazer as seguintes ações: gravar (CREATE).
Com o exemplo utilizando a ação de cadastrar para demonstrar, você será capaz de desenvolver
outras ações do CRUD. No projeto, iremos utilizar uma página cadastro.jsp e desenvolver o for-
mulário:
Para colocar as ações no botão, você deverá criar um Servlet com nome cadastroServlet e es-
colher o método POST que terá todos os códigos necessários em sua programação. Dentro do
método POST, deverá ter os seguintes códigos:
Esse código capturará o que foi digitado nos campos do formulário na página cadastro.jsp e
chamará o cadastroServlet para fazer a ação de cadastrar. Dentro do código, você pode perceber
que os parâmetros são colocados em variáveis e o método CREATE (que irá gravar) é chamado
pelo objeto instânciado: dao que contém os métodos de ação para ser gravado no banco de da-
dos conforme a (Figura 5). Além disso, é utilizada a API de sessão que serve para navegar entre
as sessões de uma página para outra e manipular os dados.
Para verificar o funcionamento do recurso de sessão, uma página resultado.jsp deve ser criada
para receber os dados para demonstração:
A utilização do DAO não é o único método empregado para persistência de dados e há alguns
frameworks que fazem todo processo de mapeamento relacional com a base de dados. Você verá
na próxima lição a configuração do framework Hibernate para completar seu conhecimento.
68/218
Considerações Finais
• Controle de dados;
• Gerenciar códigos com persistência;
• Encapsular e padronizar dados;
• Reaproveitar código.
69/218
Referências
CORDEIRO, Gilliard. Aplicações Java para a web com JSF e JPA. São Paulo: Editora Casa do Códi-
go, 2014.
ORACLE. Acesso a dados. Disponível em: <http://www.oracle.com/technetwork/java/dataacces-
sobject-138824.html>. Acesso em: 12 jul. 2016.
a) ODBC.
b) JDBC.
c) TOPLINK.
d) MYSQL.ODBC.
e) DERBY.
71/218
Questão 2
2. Qual dessas alternativas refere-se ao Driver do MySQL?
a) com.mysql.odbc.Driver
b) orm.mysql.jdbc.Driver
c) mysql.jdbc.odbc.Driver
d) com.jdbc.odbc.Driver
e) com.mysql.jdbc.Driver
72/218
Questão 3
3. Qual dessas páginas aceita scriptlets?
a) ASP
b) ASP.NET
c) HTML
d) PHP
e) JSP
73/218
Questão 4
4. Qual dessas alternativas representa melhor o CRUD?
74/218
Questão 5
5. Qual dessas API é utilizada para sessão em JEE?
a) javax.servlet.http.HttpSession.Sessiom
b) java.servlet.http.HttpSession
c) javax.servlet.http.HttpSession
d) javax.servlet.HttpSession
e) java.http.HttpSession
75/218
Gabarito
1. Resposta: B. 5. Resposta: C.
O padrão do JAVA é o JDBC que está nas es- A API utilizada em Servlets para o protocolo
pecificações da tecnologia. HTTP é javax.servlet.http.HttpSession.
2. Resposta: E.
A declaração do Driver correto é com.mys-
ql.jdbc.Driver.
3. Resposta: E.
Scriptlets é utilizado apenas na linguagem
JSP.
4. Resposta: B.
76/218
Unidade 4
Configurando o Hibernate e Integração JSF e JPA
Objetivos
77/218
Introdução
Agora, você criará o POJO, que é a representação da persistência. Volte na pasta do Hibernate e
escolha (Figura 13): Arquivos de Mapeamento e POJOS de banco de dados.
package model;
APIs utilizados no JPA
import javax.persistence.Column; Hibernate
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.Table;
Anotação JPA
@Entity
@Table(name=”users”
,catalog=”cadastro”
)
public class Users implements java.io.Serializable {
public Users() {
}
public Users(String login, String senha, String email) {
this.login = login;
this.senha = senha; Anotação
this.email = email; identificação da
} chave primária
@Id @GeneratedValue(strategy=IDENTITY)
Com essa estrutura, é possível utilizar recursos da linguagem do Hibernate, o HQL. Para fazer
consultas, por exemplo, clique com botão direito do mouse sobre o arquivo hibernate.cfg.xml e
escolha a opção: Executar a consulta HQL (Figura 16).
Esse arquivo servirá para o Hibernate utilizar o recurso de sessão em suas transações, ou seja,
para navegar de uma página para outra e utilizar dados. Dentro dessa classe, terá os seguintes
códigos:
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.SessionFactory;
Com a classe HibernateUtil configurada, agora você terá de criar uma classe com comandos que
enviam informações para camada de visão que é utilizado o JSF. Na classe, coloque o nome de
Consulta.java dentro de um novo pacote chamado controller. O seguinte código deve ter em
sua classe:
package controller;
import model.HibernateUtil;
import model.Users;
import org.hibernate.SessionFactory;
public class Consulta {
private Users user;
try{
} catch(Exception e){
e.printStackTrace();
}
return null;
}
Você deve fornecer o nome sugerido ao Bean e localizar a classe Consulta.java para adicionar ao
arquivo xml. Seu código deverá ficar semelhante ao descrito:
<property name=”hibernate.current_session_context_class”>
org.hibernate.context.internal.ThreadLocalSessionContext</property>
Toda configuração do Hibernate está pronta, e, agora que você atualizou e criou o Bean no aqui-
vo xml do JSF, é possível acessar os dados com Hibernate. Na página index.xhtml, faça uma atu-
alização, como no código a seguir:
Na classe Consulta.java, foi determinado para trazer o primeiro registro gravado em sua base
de dados. Se modificar esse registro para 2 ou 3, irá trazer os registros com esse número em sua:
id_usuario.
Não se esqueça de incluir o Driver do MySQL nas Bibliotecas do projeto Web no Netbeans para
110/218 Unidade 4 • Configurando o Hibernate e Integração JSF e JPA
que ele possa ler as requisições. Faça uma atualização (limpar e construir) em seu projeto e car-
regue para ver o resultado, que ficará como na Figura 21.
Figura 21 – Resultado da aplicação
Com essa aplicação, você aprendeu a integrar as tecnologias JSF e JPA com Hibernate, que po-
derão servir como base para outras aplicações futuras. Há uma vasta documentação nos links
disponibilizados para aperfeiçoar os estudos.
113/218
Considerações Finais
• Persistência;
• frameworks que implementa o JPA;
• reaproveitamento de código;
• integração de tecnologias utilizando MVC.
114/218
Referências
a) JSP.
b) JSF.
c) EJB.
d) JSE.
e) JME.
116/218
Questão 2
2.Qual desses frameworks refere-se à camada View do MVC?
a) JSF.
b) Hibernate.
c) JPA.
d) TopLink.
e) EclipseLink.
117/218
Questão 3
3. No MVC, qual desses frameworks utiliza a camada do Model?
a) Hibernate.
b) JSF.
c) JSP.
d) HTML.
e) XHTML.
118/218
Questão 4
4. Qual dessas opções representa melhor a camada do Controller do MVC?
119/218
Questão 5
5. Qual dessas empresas que mais contribui para o JSF?
a) Microsoft.
b) Apache.
c) Facebook.
d) HP.
e) Googl.
120/218
Gabarito
1. Resposta: C. 4. Resposta: D.
Toda especificação do JPA venho do EJB. A camada Controller pertence ao MVC e nes-
sa camada é desenvolvida a lógica de negó-
2. Resposta: A. cio, ou seja, as regras que serão feitas den-
tro do sistema, por exemplo: o que o cliente
JSF, assim como o JSP, é a camada que apre- irá acessar na camada View não é o mesmo
senta os dados para o cliente. que o administrador irá acessar, há regras e
é nessa camada que deve estabelecê-las.
3. Resposta: A.
5. Resposta: B.
Hibernate persiste os dados, ou seja, a co-
nexão e manipulação dos dados é tratada A empresa Apache recebeu como doação
na camada do Model no MVC que interagem da SUN Microsystems toda especificação do
com as outras camadas que são responsá- JSF e é uma das empresas que mais contri-
veis pelas regras de negócio e apresentação bui para essa tecnologia.
das informações.
121/218
Unidade 5
Inclusão de Práticas de Validação, Requisição, outras Linguagens e Construção de Projeto (Práti-
co-Conceitual)
Objetivos
1. Práticas de validação.
2. Validadores.
3. Ajax com JavaServer Pages.
122/218
Introdução
123/218 Unidade 5 • Inclusão de Práticas de Validação, Requisição, outras Linguagens e Construção de Projeto (Prático-Conceitual)
Para essa aplicação, crie um projeto Web no Netbeans ou no Eclipse com framework JSF 2.x com
nome: WebValidador, e na página index.xhtml crie um formulário com os seguintes campos:
Nome, Idade e Telefone com Botão com valor:
<html xmlns=”http://www.w3.org/1999/xhtml”
xmlns:h=”http://xmlns.jcp.org/jsf/html”>
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h1>Cadastro de Usuário</h1>
<hr/> Nomes dos campos
<h:form>
<h:panelGrid columns=”2”>
<h:outputLabel value=”Nome” for=”nome” />
<h:inputText id=”nome” label=”Nome” />
<h:outputLabel value=”Idade” for=”idade” />
124/218 Unidade 5 • Inclusão de Práticas de Validação, Requisição, outras Linguagens e Construção de Projeto (Prático-Conceitual)
<h:inputText id=”idade” label=”idade” />
<h:outputLabel value=”Telefone” for=”telefone” />
<h:inputText id=”telefone” label=”telefone” />
<h:commandButton value=”Validar” />
</h:panelGrid>
</h:form>
</h:body>
</html>
O formulário da (Figura 22) gerado pelo código acima com JSF aceita qualquer tipo de caracteres
e isso irá gerar erros posteriores de validação em sua base de dados, por exemplo, se um campo
do banco de dados for inteiro e o cliente digitar letras, ocorrerá erros.
125/218 Unidade 5 • Inclusão de Práticas de Validação, Requisição, outras Linguagens e Construção de Projeto (Prático-Conceitual)
Figura 22 – Formulário de cadastro com JSF implementados validadores para não aceitar
números no campo do nome e números ne-
gativos ou letras no campo da idade.
Primeiro, colocaremos no campo nome um
requerimento (required=”true”) e será adi-
cionada a tag <h:messages> para enviar a
mensagem para o cliente. Caso você não
coloque a tag para enviar a mensagem, o
cliente não saberá o que está acontecendo
e simplesmente não irá cadastrar.
Atualize seu código anterior do formulário
Fonte: Elaborada pelo autor. de Cadastro de Usuário como o código logo
Para validar os campos, o framework do JSF abaixo e teste sua aplicação sem a tag <h:-
possui recursos de validação desde suas pri- messages>, que não irá apresentar a men-
meiras versões 1.x até as mais atuais. Você sagem e com a tag aparecerá a mensagem
atualizará as tags do JSF do código anterior. como na (Figura 23).
No formulário de Cadastro de Usuários, serão
126/218 Unidade 5 • Inclusão de Práticas de Validação, Requisição, outras Linguagens e Construção de Projeto (Prático-Conceitual)
<html xmlns=”http://www.w3.org/1999/xhtml”
xmlns:h=”http://xmlns.jcp.org/jsf/html”>
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
Tag <h:messages> para
<h1>Cadastro de Usuário</h1> exibir mensagens caso o
<hr/> required for igual a “true”.
<h:form>
<h:messages>
<h:panelGrid columns=”2”>
<h:outputLabel value=”Nome” for=”nome” />
<h:inputText id=”nome” label=”Nome” required=”true” />
<h:outputLabel value=”Idade” for=”idade” />
<h:inputText id=”idade” label=”idade” /> Deixar campo de
preenchimento
<h:outputLabel value=”Telefone” for=”telefone” /> obrigatório.
<h:inputText id=”telefone” label=”telefone” />
127/218 Unidade 5 • Inclusão de Práticas de Validação, Requisição, outras Linguagens e Construção de Projeto (Prático-Conceitual)
<h:commandButton value=”Validar” />
</h:panelGrid>
</h:messages>
</h:form>
</h:body>
</html>
128/218 Unidade 5 • Inclusão de Práticas de Validação, Requisição, outras Linguagens e Construção de Projeto (Prático-Conceitual)
A tag <h:messages> possui diversas variações de validação, por exemplo, para mudar a cor da
mensagem para vermelho poderá atualizar seu código para:
<h:messages errorStyle=”color:red”>.
No campo de validação, é possível personalizar a mensagem (Figura 24) que será apresentada
para o usuário inserindo o requiredMessage, como no código a seguir.
129/218 Unidade 5 • Inclusão de Práticas de Validação, Requisição, outras Linguagens e Construção de Projeto (Prático-Conceitual)
Figura 24 – Mensagem personalizada
2 Tipos de Validadores
130/218 Unidade 5 • Inclusão de Práticas de Validação, Requisição, outras Linguagens e Construção de Projeto (Prático-Conceitual)
<h:inputText id=”nome” label=”Nome” required=”true” requiredMessage=”Esse campo é obri-
gatório”>
<f:validateLength minimum=”4” maximum=”9” />
</h:inputText>
Validador de tamanho mínimo e
máximo de caracteres.
Na (Figura 25), o campo nome é validado e o cadastro não ocorrerá, gerando uma mensagem
para o usuário. No caso, exibe o mínimo de caracteres ou o máximo permitido.
Figura 25 – validação de tamanho de caracteres
132/218 Unidade 5 • Inclusão de Práticas de Validação, Requisição, outras Linguagens e Construção de Projeto (Prático-Conceitual)
javax.faces.component.UIInput.REQUIRED=’’{0})’’ campo obrigatório.
javax.faces.validator.LengthValidator.MINIM=Valor menor do que o mínimo permitido ‘’{0}’’
javax.faces.validator.LengthValidator.MINIM=Valor maior do que o máximo permitido ‘’{0}’’
Para o validador funcionar com o arquivo criado (messages.properties), você precisará modificar o
arquivo de configuração faces-config.xml (ORACLE, 2016). Caso não houver o arquivo de configu-
ração em seu projeto, insira um novo. Seu arquivo de configuração deverá ter os seguintes códigos:
<?xml version=’1.0’ encoding=’UTF-8’?>
<faces-config version=”2.2”
xmlns=”http://xmlns.jcp.org/xml/ns/javaee”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/
javaee/web-facesconfig_2_2.xsd”>
<application>
<message-bundle>jsf.valida.campo.messages</message-bundle>
</application>
</faces-config> Localizará o arquivo de mensagem
quando requisitado.
133/218 Unidade 5 • Inclusão de Práticas de Validação, Requisição, outras Linguagens e Construção de Projeto (Prático-Conceitual)
Você irá notar que não será preciso utilizar mais o: requiredMessage=”Esse campo é obriga-
tório” dentro de seu código da página index.xhtml. Confira o código a seguir e veja o resultado,
como apresentado na Figura 27.
<html xmlns=”http://www.w3.org/1999/xhtml”
xmlns:h=”http://xmlns.jcp.org/jsf/html”
xmlns:f=”http://xmlns.jcp.org/jsf/core”>
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h1>Cadastro de Usuário</h1>
<hr/>
<h:form>
<h:messages errorStyle=”color:red”>
<h:panelGrid columns=”2”>
<h:outputLabel value=”Nome” for=”nome” />
<h:inputText id=”nome” label=”Nome” required=”true” >
134/218 Unidade 5 • Inclusão de Práticas de Validação, Requisição, outras Linguagens e Construção de Projeto (Prático-Conceitual)
<f:validateLength minimum=”4” maximum=”9” />
</h:inputText>
<h:outputLabel value=”Idade” for=”idade” />
<h:inputText id=”idade” label=”idade” />
<h:outputLabel value=”Telefone” for=”telefone” />
<h:inputText id=”telefone” label=”telefone” />
<h:commandButton value=”Validar” />
</h:panelGrid>
</h:messages>
</h:form>
</h:body>
</html>
135/218 Unidade 5 • Inclusão de Práticas de Validação, Requisição, outras Linguagens e Construção de Projeto (Prático-Conceitual)
Figura 27 – Validado com arquivo messages.properties
O arquivo messages.properties trará o nome do campo que está sendo validado antes da men-
sagem, como identificado na Figura 27. Nesse arquivo, você poderá adicionar todo tipo de vali-
dação para sua aplicação.
Há muitos tipos de validações que poderão ser adicionadas no documento e isso dependerá do
projeto que você estará desenvolvendo. Além de validações, é possível utilizar outros recursos e
linguagens para otimizar sua aplicação. Uma das tecnologias mais utilizadas é conhecida como
Ajax, que poderá ser um recurso em sua aplicação que reduzirá o acesso constante ao servidor.
136/218 Unidade 5 • Inclusão de Práticas de Validação, Requisição, outras Linguagens e Construção de Projeto (Prático-Conceitual)
3 AJAX COM JAVASERVER PAGES cript, que faz parte das bibliotecas nativas
do JSF. Pode-se utilizar os códigos de Ajax
A utilização reduz a requisição de informa- em JSF em aplicações Web da seguinte ma-
ções que acessam o servidor tornando mais neira:
eficiente, não onerando o processo de tran-
• Usando a tag f:ajax como um compo-
sação na comunicação. Ajax é o acrônimo
nente do Facelets sem precisar confi-
para assíncrono JavaScript e XML uma tec-
gurar ou adicionar algum componen-
nologia altamente responsiva para aplica-
te;
ções Web. Na plataforma do JEE, há suporte
para utilização com JSF. • utilizar API do JavaScript e o méto-
do jsf.ajax.request() diretamente na
A tecnologia do Ajax não se limita apenas ao
aplicação com possibilidade de cus-
JavaScript e XML, podendo ser utilizados ou-
tomização de controle.
tros tipos nesse conjunto. Em uma requisi-
ção do cliente, o servidor manda respostas de A utilização do Ajax dentro do JSF de forma
atualização para o Document Object Model Built-in torna o uso de suas tags uma forma
(DOM) em formato XML ou em formato JSON. fácil de implementação desse recurso, por
exemplo, utilizando a tag f:ajax dentro do
É possível utilizar o Ajax como um recurso
contexto do JSF:
embutido (built-in) com biblioteca de JavaS-
137/218 Unidade 5 • Inclusão de Práticas de Validação, Requisição, outras Linguagens e Construção de Projeto (Prático-Conceitual)
<h:inputText value=”#{bean.message}”>
<f:ajax />
</h:inputText>
138/218 Unidade 5 • Inclusão de Práticas de Validação, Requisição, outras Linguagens e Construção de Projeto (Prático-Conceitual)
Glossário
DOM: Document Object Model.
JSON: JavaScript Object Notation.
AJAX: Asynchronous Javascript and XML.
139/218 Unidade 5 • Inclusão de Práticas de Validação, Requisição, outras Linguagens e Construção de Projeto (Prático-Conceitual)
?
Questão
para
reflexão
140/218
Considerações Finais
• Validadores;
• JSF e recursos de componentes;
• Ajax em aplicações JSF;
• integração de tecnologias Web.
141/218
Referências
142/218 Unidade 5 • Inclusão de Práticas de Validação, Requisição, outras Linguagens e Construção de Projeto (Prático-Conceitual)
Questão 1
1. Qual dessas alternativas requisita ao cliente o preenchimento do campo
obrigatório?
143/218
Questão 2
2. É possível ler um arquivo messages.properties para validação. Em qual
documento é declarado para ser lido na sua aplicação?
a) index.jsp.
b) web.xml
c) faces.xml
d) config.xml
e) faces-config.xml
144/218
Questão 3
3. Em qual dessas tags é declarado o arquivo messages.properties?
a) <message>jsf.valida.campo.messages</message>
b) <message-bundle>jsf.valida.campo.messages</message-bundle>
c) <bundle>jsf.valida.campo.messages</bundle>
d) < application>jsf.valida.campo.messages</application>
e) < faces-config>jsf.valida.campo.messages</faces-config>
145/218
Questão 4
4. Qual dessas alternativas é correta no uso do Ajax com JSF?
a) É possível utilizar o Ajax como um recurso embutido (built-in) com bibliotecas de JSON que
faz parte do JSF.
b) É possível utilizar o Ajax como um recurso embutido do framework com bibliotecas de JavaS-
cript que faz parte das biblioteca nativas do JSP.
c) É possível utilizar o Ajax como um recurso importado com bibliotecas de JavaScript que faz
parte do JSF.
d) É possível utilizar o Ajax como um recurso embutido (built-in) com bibliotecas de JavaScript
que faz parte das biblioteca nativas do JSF.
e) É possível utilizar o Ajax como um recurso inserido com bibliotecas que faz parte do JSF.
146/218
Questão 5
5. Para utilizar Ajax com JSF, qual desses procedimentos de tag é correto?
147/218
Gabarito
1. Resposta: A. 4. Resposta: D.
O required deve ser igual a ‘true’, que signi- O Ajax se encontra embutido no JSF.
fica que o campo é requerido.
5. Resposta: A.
2. Resposta: E.
A tag utilizada é a f:ajax no JSF.
O nome correto de configuração para JSF
estabelecido pelas normas regulamenta-
das pela ORACLE como nome padrão do ar-
quivo utilizado na elaboração dos padrões,
os demais não estão completos ou não se
referem ao JSF.
3. Resposta: B.
148/218
Unidade 6
JSF com PrimeFaces
Objetivos
149/218
Introdução
1 MVC
[...] Uma das principais vantagens do JSF é que ele é ao mesmo tempo
um padrão de interface de usuário Java Web, bem como um quadro que
segue firmemente o padrão de design Model-View-Controller (MVC). Isso
faz com que aplicativos JSF sejam muito mais gerenciáveis, porque o có-
digo de interface do usuário (View) é claramente separado dos dados e
lógica (modelo). Para preparar o contexto JSF, que fornece acesso a dados
de aplicação para as páginas, e para se proteger contra o acesso não au-
torizado ou impróprio das páginas, todas as interações do usuário com o
aplicativo são manipuladas por um front-end “Faces” servlet (Controller)
[...] (ORACLE, 2016).
A Microsoft faz referência ao padrão MVC original da comunidade Smalltalk em um de seus sites
e descreve o padrão (MSDN, 2016):
2 PRIMEFACES
É um conjunto de componentes desenvolvido com as especiações do JSF e utiliza de forma nati-
va o Ajax. Para usar o framework do PrimeFaces, você precisa ter instalado no mínimo o Java 5 e
o JSF 1.2 (PALIARI, 2016). Entretanto, é recomendado instalar as últimas versões do framework
disponíveis no site oficial.
O PrimeFaces não é o único framework que possui a mesma linha de componentes que traba-
lham com JSF. Há outras empresas que disponibilizam tecnologias semelhantes, dentre elas: Ri-
chFaces (JBoss) e ICEFaces(ICEsoft).
Destaque para o framework ICEFaces, que possui ferramentas visuais em uma palette para ar-
rastar e soltar (Drag and drop) semelhantes ao antigo Visual JSF (ICEFACES, 2016).
156/218
Considerações Finais
• MVC
• PrimeFaces
• Frameworks
• Design Pattern
157/218
Referências
160/218
Questão 2
2. Qual dessas empresas é responsável pelo ICEFaces?
a) Apache.
b) JBoss.
c) PrimeFaces.
d) RichFaces.
e) ICEsoft.
161/218
Questão 3
3. O padrão MVC tem origem de qual projeto?
a) Smalltalk.
b) JAVA.
c) Visual Studio.
d) NET.
e) UML.
162/218
Questão 4
4. Como é considerado o MVC dentro da engenharia de software?
163/218
Questão 5
5. Qual framework pelo qual a empresa Prime Teknoloji da Turquia é res-
ponsável?
a) RichFaces.
b) PrimeFaces.
c) ICEFaces.
d) JavaServer Faces.
e) JavaServer Pages.
164/218
Gabarito
1. Resposta: A. 5. Resposta: B.
2. Resposta: E.
3. Resposta: A.
4. Resposta: C.
165/218
Unidade 7
Temas do PrimeFaces, apresentação e utilização
Objetivos
1. Temas
2. PrimeFaces
3. Configuração
166/218
Introdução
O framework PrimeFaces possui a caracte-
1 TEMAS DO PRIMEFACES
rística de adicionar temas para trabalho em
projetos Web; é um complemento que dei- O framework PrimeFaces possui caracterís-
xa o visual de sua aplicação moderno e com tica de adicionar temas para trabalho em
satisfatória aparência para o cliente. projetos Web. No site oficial, é possível ad-
No site oficial, é possível adquirir temas quirir temas gratuitos para utilizar em sua
gratuitos para utilizar em sua aplicação. Há aplicação.
diversos temas a serem escolhidos no ar- Além disso, a utilização de temas com Pri-
cabouço de conteúdos do PrimeFaces. De meFaces é algo simples de implementar,
acordo com a aplicação que irá desenvolver, como será mostrado adiante. No site oficial,
poder-se-á selecionar a que se melhor en- são oferecidos outros temas pagos na cate-
caixa com suas perspectivas. goria premium.
Os temas do PrimeFaces possuem cores e O PrimeFaces integra-se ao ThemeRoller
efeitos que podem ser adicionados, trocados CSS framework, que disponibiliza outros
ou removidos de sua aplicação com facilida- temas para utilizar em sua aplicação Web.
de utilizando o arquivo em xml. Assim, seu No site do jQuery, poderá escolher diversas
projeto vislumbra uma apresentável camada alternativas para utilizar em sua aplicação.
de visão e desenvolvimento mais produtível.
167/218 Unidade 7 • Planejamento de Ensino na Universidade: a Importância da Utilização dos Recursos Didáticos na Construção
do Conhecimento
Além desses recursos, o PrimeFaces também se integra ao framework Bootstarp, que possui
muitos temas gratuitos e é fácil de utilizar em projetos Web.
Para um maior conhecimento desse recurso do Primefaces, você irá conhecer cinco temas que
poderão ser utilizados em sua aplicação. Esses temas podem ser desde o layout de sua aplicação
até componentes, como calendários disponibilizados sob a licença Apache.
O site do PrimeFaces possui um showcase para você fazer download e utilizar os componentes (Fi-
gura 29). Para escolher, entre no site, clique sobre os componentes e verá o código e o componente.
Figura 29 – PrimeFaces showcase
168/218 Unidade 7 • Planejamento de Ensino na Universidade: a Importância da Utilização dos Recursos Didáticos na Construção
do Conhecimento
Após inserir o arquivo .jar do PrimeFaces em seu projeto, você precisa declarar no escopo do ca-
beçalho da página JSF os componentes do framework, como ilustra o código a seguir:
<html xmlns=”http://www.w3.org/1999/xhtml”
xmlns:h=”http://xmlns.jcp.org/jsf/html”
xmlns:p=”http://primefaces.org/ui”>
Com o framework do PrimeFaces dentro de seu projeto, é possível utilizar em suas páginas do JSF
diversos temas em sua página xhtml do JSF que estão disponíveis dentro do repositório oficial na
Web para fazer download.
Você verá cinco temas diferentes aos temas (skins) disponíveis para utilizar em sua aplicação:
black-tie, bluesky, bootstrap, casablanca e dark-hive. Aplicando em seu projeto e ao carregar
os temas, verá essa aparência:
169/218 Unidade 7 • Planejamento de Ensino na Universidade: a Importância da Utilização dos Recursos Didáticos na Construção
do Conhecimento
1º Tema: black-tie (Figura 30):
Figura 30 – Black-tie tema do PrimeFac
170/218 Unidade 7 • Planejamento de Ensino na Universidade: a Importância da Utilização dos Recursos Didáticos na Construção
do Conhecimento
3º Tema: bootstrap (figura 32):
Figura 32 – Bootstrap tema do PrimeFaces
Você observou uma grande diferença dependendo do tema que escolher para sua aplicação. Tes-
te alguns temas para saber quais são os mais adequados para utilizar em algum projeto que tem
em mente ou mesmo para praticar.
Utilizar os temas em sua aplicação com JSF + PrimeFaces é uma tarefa relativamente fácil. Ao
escolher o tema no repositório oficial do PrimeFaces, você precisa importar o arquivo jar para
dentro de seu projeto como na (Figura 35), que ilustra os arquivos com os temas apresentados.
172/218 Unidade 7 • Planejamento de Ensino na Universidade: a Importância da Utilização dos Recursos Didáticos na Construção
do Conhecimento
Note que o framework do JSF está no mes- Ao importar um ou mais temas, você pode
mo local: mudar a aparência de sua aplicação assim
Figura 35 – Framework do JSF no projeto Netbeans
que desejar. Para configurar o tema a ser uti-
lizado, abra o arquivo web.xml de sua apli-
cação e adicione as seguintes tags (<con-
text-param></context-param>), como o
código a seguir:
173/218 Unidade 7 • Planejamento de Ensino na Universidade: a Importância da Utilização dos Recursos Didáticos na Construção
do Conhecimento
<?xml version=”1.0” encoding=”UTF-8”?>
<web-app version=”3.1” xmlns=”http://xmlns.jcp.org/xml/ns/javaee” xmlns:xsi=”http://www.
w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://xmlns.jcp.org/xml/ns/ja-
vaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd”>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<session-config><session-timeout>30</session-timeout>
174/218 Unidade 7 • Planejamento de Ensino na Universidade: a Importância da Utilização dos Recursos Didáticos na Construção
do Conhecimento
</session-config>
<welcome-file-list><welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>dark-hive </param-value>
</context-param>
Tag para escolher o tema do
</web-app> PrimeFaces em sua aplicação
Observe no código anterior que o nome do tema que você escolheu deve ficar entre a tag (<pa-
ram-value>seu tema<param-value>), e o nome a ser colocado é o mesmo do arquivo jar.
Depois de configurar o arquivo XML e escolher o tema de sua aplicação, adicione alguns compo-
nentes do JSF para testar a sua aplicação. No código a seguir, há uma caixa de texto e um botão
dentro do corpo da página index.xhtml para verificar a mudança do tema.
175/218 Unidade 7 • Planejamento de Ensino na Universidade: a Importância da Utilização dos Recursos Didáticos na Construção
do Conhecimento
<?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://xmlns.jcp.org/jsf/html” Declaração dos
componentes do
xmlns:p=”http://primefaces.org/ui”> PrimeFaces
<h:head>
<title>Meu Tema</title>
</h:head>
<h:body>
<h:form>
<h:panelGrid columns=”4” cellpadding=”5”>
<h:outputLabel for=”name” value=”Nome:” style=”font-weight:bold” />
<p:inputText id=”name” value=”#{basicView.text}” />
<p:commandButton value=”Enviar” update=”display” icon=”ui-icon-check” />
<h:outputText id=”display” value=”#{basicView.text}” />
</h:panelGrid>
</h:form>
</h:body> Componentes do PrimeFaces. A tag
inicia com ‘p’ e em seguida o
</html> componente escolhido.
176/218 Unidade 7 • Planejamento de Ensino na Universidade: a Importância da Utilização dos Recursos Didáticos na Construção
do Conhecimento
Ao carregar sua aplicação, você verá um re-
sultado semelhante à Figura 22 com o tema
dark-hive, que está declarado no arquivo
XML. Escolha um tema e veja os resultados.
PrimeFaces é um framework moderno que
apresenta facilidade no uso de aplicações
Web. Há diversas possibilidades no uso do
JSF + PrimeFaces, dentre elas: aplicações
Web e Mobile.
É recomendado explorar o framework do
PrimeFaces e seus componentes que possi-
bilitam trazer uma qualidade no front-end
de sua aplicação. Além disso, a integração
de tecnologias como Ajax e outros frame-
works com jQuery aumenta a possibilidade
em melhorar o visual da aplicação.
177/218 Unidade 7 • Planejamento de Ensino na Universidade: a Importância da Utilização dos Recursos Didáticos na Construção
do Conhecimento
Glossário
CSS: Cascading Style Sheets.
SKINS: temas.
STATEFUL: estado dos objetos.
178/218 Unidade 7 • Planejamento de Ensino na Universidade: a Importância da Utilização dos Recursos Didáticos na Construção
do Conhecimento
?
Questão
para
reflexão
179/218
Considerações Finais
• Temas;
• configurando temas;
• tipos de temas diferentes;
• aplicando temas.
180/218
Referências
181/218 Unidade 7 • Planejamento de Ensino na Universidade: a Importância da Utilização dos Recursos Didáticos na Construção
do Conhecimento
Questão 1
1. Para que serve o ThemeRoller CSS framework?
182/218
Questão 2
2. O que é possível encontrar no showcase do PrimeFaces?
183/218
Questão 3
3. O que é Stateful?
184/218
Questão 4
4. Essa declaração xmlns:p=”http://primefaces.org/ui”> no escopo da JSF
representa?
a) Estado do parâmetro.
b) Estado da variável.
c) Estado dos objetos.
d) Adição de layout.
e) Adição de componentes
185/218
Questão 5
5. Em qual tag deve se colocar o nome do tema do PrimeFaces dentro da
<context-param>?
a) <param-name>
b) <param-value>
c) <url-pattern>
d) <session-config>
e) <welcome-file>
186/218
Gabarito
1. Resposta: B. 5. Resposta: B.
2. Resposta: A.
3. Resposta: A.
Referente ao objeto.
4. Resposta: E.
187/218
Unidade 8
JSF com JPA e MVC apresentação e utilização
Objetivos
1. CRUD
2. ORM
3. JPA
4. DAO
5. MVC
188/218
Introdução
Nos módulos anteriores, você aprendeu Portanto, o JPA será utilizado como fra-
como configurar o JSF com PrimeFaces e es- mework de persistência e, antes de come-
colher os temas de sua aplicação; ele poderá çar a desenvolver o projeto, verifique se o
ser usado com qualquer outro framework, banco de dados de nome: cadastro com a
inclusive com persistência. tabela users utilizado em lições anteriores
No Tema 4, você aprendeu a configurar o Hi- está disponível em seu Sistema Gerenciador
bernate integrando com JSF e JPA Hibernate, de Banco de Dados MySQL:
fazendo uma pequena aplicação para verifi-
car o funcionamento que faz uma consulta
ao banco de dados.
Neste tema, o foco é a persistência que re-
alizará as ações de CRUD (Create, Read, Up-
date e Delete) no padrão MVC (Model, View
e Controller). Além disso, colocar-se-á em
prática a persistência utilizando padrão
MVC com JSF.
Para realizar a persistência, será utilizado o mesmo banco de dados nomeado de: cadastro com
a tabela users do Tema 4. Inclua alguns registros na base de dados para serem apresentados em
sua aplicação com JSF.
No Tema 4, você fez uma pequena aplicação com a integração das tecnologias do JSF com persis-
tência, ao carregar o projeto pode entender como funciona a persistência de dados, conseguin-
do ter um melhor entendimento e ao clicar no botão na aplicação Web a programação trouxe os
dados do primeiro registro da tabela.
Para melhor aprendizado, você fará uma aplicação do CRUD utilizando o Netbeans. O objetivo é
utilizar o JPA. No caso, utilizará o EclipseLink para persistência, que é um dos frameworks seme-
190/218 Unidade 8 • Dimensão Prática: Construção de Planos de Ensino
lhante ao Hibernate, com as mesmas espe- to Java Web (JEE), não escolha nenhum fra-
cificações do JPA. mework, apenas avance e, assim que con-
Lembre-se de que o JPA é uma especificação cluir, verifique se seu projeto ficou com a
do JAVA vinda do EJB e há diversos frameworks aparência da Figura 36:
que auxiliam na persistência. A persistência Figura 36 – Estrutura do projeto WebCrudJPA
Ao abrir a próxima tela, escolha o Provedor de Persistência, no caso: EclipseLink (JPA 2.1) e na
estratégia de tabela coloque nenhuma (Figura 40), O próximo passo é estabelecer a conexão
com banco de dados cadastro no MySQL (Figura 41):
Adicione a tabela que irá fazer o mapeamento. No banco de dados cadastro, há uma tabela users
que você irá utilizar nessa aplicação. Em seguida, deverá dar um nome ao pacote que será criado
a classe. Você deve colocar o nome de modelo e poderá avançar e finalizar (Figura 44):
Essa classe é responsável em utilizar os métodos do CRUD. Na sequência, escolha a classe que está
dentro do modelo e, em seguida, troque o nome do pacote para: controle e finalize (Figura 46):
Ao selecionar essa opção, escolha a classe dentro do modelo e depois avançar e concluir. Verá
que a estrutura de seu projeto criará uma pasta chamada users com páginas JSFs com o CRUD
(Figura 48) e as pastas do restante do MVC.
202/218 Unidade 8 • Dimensão Prática: Construção de Planos de Ensino
Figura 48 – Estrutura do projeto WebCrudJPA
Carregue seu projeto, que deverá iniciar com a seguinte tela (Figura 49):
203/218 Unidade 8 • Dimensão Prática: Construção de Planos de Ensino
Figura 49 – Resultado da aplicação WebCrudJPA
Ao clicar para mostrar todos os itens, você verá o quadro apresentado na Figura 50, e, dentro
dele, é possível editar, ver e apagar o item desejado:
209/218
Considerações Finais
• CRUD;
• PERSISTÊNCIA;
• FRAMEWORK;
• JPA;
• DAO;
• provedores JPA e EclipseLink;
• integração de tecnologias;
• aplicação JSF com JPA e DAO no padrão MVC;
• aplicação Web com CRUD completa;
• manipulação de dados na Web com JPA e MVC;
• servidor de aplicação para aplicação JPA/ORM.
210/218
Referências
212/218
Questão 2
2. Qual dessas ferramentas é uma IDE completa de gerenciamento de ban-
co de dados?
a) Eclipse.
b) JDeveloper.
c) Netbeans.
d) Workbench.
e) Visual Studio.
213/218
Questão 3
3. Para utilização do JPA, qual desses servidores não possui todas as espe-
cificações do EJB?
a) Glassfish.
b) JBoss.
c) WebSphere.
d) TOMCAT.
e) BEA.
214/218
Questão 4
4. Em qual dessas opções todos são provedores do JPA?
215/218
Questão 5
5. Na aplicação com Hibernate ou EclipseLink que são frameworks de per-
sistência, quando há uma classe com o CRUD em qual pacote é aconselhá-
vel colocar a classe com os métodos de ação de acordo com o padrão MVC?
a) jpa.model.
b) jpa.controller.
c) jpa.view.
d) jpa.aplication.
e) jpa.provedor.
216/218
Gabarito
1. Resposta: A. 4. Resposta: C.
Referem-se aos comandos SQL feitos na ta- Os nomes corretos de provedores com es-
bela de seu banco de dados. pecificação JPA são Hibernate, EclipseLink e
TopLink.
2. Resposta: D.
5. Resposta: B.
Apesar de o Netbeans fornecer algumas
ferramentas, não é considerado completo Nessa classe, há um controle com CRUD e é
como o Workbench. apropriado colocar no pacote jpa.controller.
3. Resposta: D.
O TOMCAT é apenas um Web container e não
possui todas especificações do EJB.
217/218