View
235
Download
0
Category
Preview:
Citation preview
7/26/2019 M8 - Tpicos Avanados IV_2
1/70
M
D
U
L
O
V
I
II
CURSO TCNICO DEINFORMTICA
Carlos Eduardo Pantoja
7/26/2019 M8 - Tpicos Avanados IV_2
2/70
Carlos Eduardo PantojaMdulo:VIII
T p i c o s
A v a n a d o sI V
Disciplina doEixo de Disciplinas do Currculo doCurso Tcnico de Informtica CEFET/RJUnED NI
Edio: CEFET/RJ UnED NI COORDENAO DE INFORMTICA
Local: Estrada de Adrianpolis, 1317 Santa Rita, Nova Iguau - RJ
Editora: CEFET/RJ
Ano de Publicao: 2015
7/26/2019 M8 - Tpicos Avanados IV_2
3/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 3
Presidente da RepblicaDilma Rousseff
Ministro da EducaoCid Ferreira Gomes
Secretrio de Educao Profissionale Tecnolgica
Eliezer Moreira Pacheco
Professor organizadorCarlos Eduardo Pantoja
Diretor Geral do CEFET/RJCarlos Henrique Figueiredo Alves
Diretora de EnsinoGisele Maria Ribeiro Vieira
Coordenadora da Educao Distncia no CEFET/RJMaria Esther Provenzano
Coordenador Geral do e-Tec no
CEFET/RJMauro Godinho Gonalves
Coordenador Geral Adjunto doe-Tecno CEFET/RJ
Alexandre Martinez dos Santos
Coordenadora do Curso deInformticae-Tec no CEFET/RJ
Rosana Soares Gomes Costa
Coordenador de Polo Nova Iguaudo e-Tec no CEFET/RJFrancisco Eduardo Cirto
Coordenador de Tutoria do e-Tec noCEFET/RJ
Unapetinga Hlio Bomfim Vieira
Professora Pesquisadora do e-Tecno CEFET/RJ
Lucia Helena Dias Mendes
Design InstrucionalLuciana Ponce Leon Montenegro de
Morais Castro
Ficha catalogrfica elaborada pela Biblioteca Central do CEFET/RJ
Curso tcnico de Informtica, mdulo VIII: Tpicos Avanados IV: disciplina doEixo de Disciplinas Transversais ao Currculo do Curso Tcnico de InformticaCEFET-RJ / Carlos Eduardo Pantoja (org.). Rio de Janeiro: CEFET/RJ, 2015.
7/26/2019 M8 - Tpicos Avanados IV_2
4/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 4
Apresentao do e-Tec Brasil
Prezado estudante,Bem vindo ao e-Tec Brasil!
Voc faz parte de uma rede nacional pblica de ensino, a EscolaTcnica Aberta do Brasil, instituda pelo Decreto n 6.301, de 12dedezembro de 2007, com o objetivo de democratizar o acesso ao ensinotcnico pblico, na modalidade a distncia. O programa resultado deuma parceria entre o Ministrio da Educao, por meio das Secretariasde Educao Profissional e Tecnolgica (SETEC), as universidades eescolas tcnicas estaduais e federais.
A educao a distncia no nosso pas, de dimensescontinentais e grande diversidade regional e cultural, longe dedistanciar, aproxima as pessoas ao garantir acesso educao dequalidade, e promover o fortalecimento da formao de jovensmoradores de regies distantes, geograficamente ou economicamente,dos grandes centros.
O e-Tec Brasil leva os cursos tcnicos a locais distantes dasinstituies de ensino e para a periferia das grandes cidades,incentivando os jovens a concluir o ensino mdio. Os cursos so
ofertados pelas instituies pblicas de ensino e o atendimento aoestudante realizado em escolas-polo integrantes das redes pblicasmunicipais e estaduais.
O Ministrio da Educao, as instituies pblicas de ensinotcnico, seus servidores tcnicos e professores acreditam que umaeducao profissional qualificada integradora do ensino mdio eeducao tcnica, - capaz de promover o cidado com capacidadespara produzir, mas tambm com autonomia diante das diferentesdimenses da realidade cultural, social, familiar, esportiva, poltica etica.
Ns acreditamos em voc!
Desejamos sucesso na sua formao profissional!
Ministrio da Educao
Janeiro de 2010
Nosso contato
etecbrasil@mes.gov.br
7/26/2019 M8 - Tpicos Avanados IV_2
5/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 5
Indicao de cones
Curiosidades: indica informaes interessantes que enriquecem o
assunto.
Interrogao: indica perguntas frequentes do aluno em
relao ao tema e respostas s mesmas.
Voc sabia? :oferece novas informaes e notciasrecentes relacionadas ao tema estudado.
Lembrete: enfatiza algum ponto importante sobre oassunto.
Tome nota 1: espao dedicado s anotaes do aluno.
7/26/2019 M8 - Tpicos Avanados IV_2
6/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 6
Tome nota 2: espao tambm dedicado s
anotaes do aluno.
Mos a obra: apresenta atividades em diferentes nveis
de aprendizagem para que o estudante possa realiz-las
e conferir o seu domnio do tema estudado.
Bibliografia: apresenta a bibliografia da apostila.
7/26/2019 M8 - Tpicos Avanados IV_2
7/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 7
SUMRIO
Palavra dos Organizadores ..................................................................................... 8
Apresentao da Disciplina ..................................................................................... 9
Projeto Institucional ............................................................................................... 10
Aula 1 -Introduo ao Java Enterprise Edit ion..................................................... 12
Aula 2 -Usando o Modelo MVC no Projeto Web................................................... 22
Aula 3 -Realizando um CRUD em um Projeto Java EE ........................................ 34
Aula 4 - Hibernate.................................................................................................... 43
Aula 5 -Realizando um CRUD em um Projeto com Hibernate............................. 55Aula 6 - Struts .......................................................................................................... 60
Aula 7 Struts com acesso a Banco de Dados ..................................................... 67
7/26/2019 M8 - Tpicos Avanados IV_2
8/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 8
COM A PALAVRA, O PROFESSOR...
Caros (as) alunos (as):
Apresento a disciplina do Mdulo VIIITpicos Avanados IV. Nesta parte do Cursoser apresentado o desenvolvimento de sistemas para internet utilizando o JavaEnterprise Edition; MVC; Hibernate e Struts. O desenvolvimento das pginas JSP sedar no ambiente de desenvolvimento Eclipse onde sero utilizadas outrastecnologias como o Tomcat e o MySQL.
Ao final deste curso, o aluno ser capaz dedesenvolver um aplicativo para webusando pginas JSP com acesso a um banco de dados MySQL, utilizando umpadro de projeto que divide a implementao do sistema em camadasindependentes que se comunicam, facilitando a manuteno e extenso do sistema.
importante lembrar que esta disciplina, necessita de exerccios de cunho prticopara que o aluno (a) adquira condies suficientes na elaborao de programas,mas para isso acontecer necessrio que o aluno (a) tenha o hbito de desenvolveros exerccios propostos na apostila. Bons estudos!
O organizador.
7/26/2019 M8 - Tpicos Avanados IV_2
9/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 9
Apresentao da Disciplina
MduloVIIITpicos AvanadosIV
Carga Horria: 30 Horas
Espera-se que o(a) cursista desenvolva as seguintes competncias:
Conhecer e desenvolver projetos webcom o uso da plataformaJava Enterprise Edition e o frameworkEclipse, fazendo o uso depginas JSP e acesso a banco de dados utilizando o MySQL.
Utilizar o Hibernatepara realizar o acesso ao banco de dados,deixando a camada de acesso a dados mais simplificada egenrica.
Utiliza o Struts para minimizar a utilizao de servlets nacamada de Controladora do modelo MVC.
7/26/2019 M8 - Tpicos Avanados IV_2
10/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 10
Projeto instrucional
Disciplina: Tpicos Avanados IV (30 horas)
Ementa: Aprimorar os conhecimentos de desenvolvimento de aplicaesWEB com JSP e Servlets. Desenvolver prottipos de websites atravs dosframeworks MVC mais utilizados no mercado (Hibernate e Struts).
AULA OBJETIVOS DEAPRENDIZAGEM
MATERIAISCARGA
HORRIA30
(horas)
1- Introduo ao JavaEnterprise Edition
Conhecer a tecnologia Java EE;
o ambiente de desenvolvimentoEclipse; o container Tomcat; epginas JSP.
impresso 4
2-Usando o ModeloMVC no Projeto Web
Conhecer o padro de projetoMVC aplicado a um sistema decadastro de filmes.
impresso 4
3Realizando umCRUD em um ProjetoJava EE
Realizar um CRUD utilizando opadro de projeto MVC em umprojeto Java EE.
impresso 5
4 Hibernate.
Utilizar o Hibernate para realizaro acesso a banco de dados.
impresso 5
5 Realizando umCRUD em um Projetocom Hibernate
Realizar um CRUD utilizando opadro de projeto MVC em umprojeto Java EE e Hibernate.
impresso 4
6 Struts Conhecer o framework Strutspara desenvolvimento com MVC.
impresso4
7 Struts com Acesso
a Banco de Dados
Utilizar o Struts em conjunto
com banco de dados.impresso
4
7/26/2019 M8 - Tpicos Avanados IV_2
11/70
Ol, caro estudante!
Antes de iniciarmos nosso estudo sobre Tecnologia,
reflita sobre essa ideia:
Carl Jung
Bom estudo!
SSaauuddaaeessCCeeffeettiiaannaass!!
""TTuuddooaaqquuiillooqquueennooeennffrreennttaammoosseemmvviiddaaaaccaabbaasseettoorrnnaannddoooonnoossssooddeessttiinnoo..""
7/26/2019 M8 - Tpicos Avanados IV_2
12/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 12
1. Introduo ao Java Enterprise Edition
Nesta aula sero apresentados os conceitos da arquitetura do
Java Enterprise Edition(EE) para programao de pginas web
dinmicas; ser apresentado o ambiente de desenvolvimento Eclipse,
que ser utilizado para a programao das pginas dinmicas; e tambm
sero apresentados como fazer a configurao do ambiente de
desenvolvimento atravs da criao de uma pgina padro inicial.
1.1. Java EE
O JavaEE uma plataforma de desenvolvimento de aplicaes
que estende a utilizao da linguagem Java (Micro Edition e Standard
Edition) com objetivo de criar softwaresexecutados no lado do
servidor.Atualmente o Java EE utilizado para a construo de pginas
dinmicas na Internet que representam sistemas de informaes
institucionais com manipulao de informaes atravs da utilizao debanco de dados. Popularmente o Java EE conhecido como Java Web.
O Java EE utiliza Java Server Pages (JSP), que so pginas
dinmicas com contedo HTML e Java, onde o contedo em Java
processado no lado do servidor e retornado estaticamente em
contedo HTML. No lado do cliente, as informaes so transformadas e
exibidas por um navegador.Uma outra soluo disponvel a Servletque
uma classe Java que trata de requisies do protocolo HTTP paraprocessar dinamicamente o contedo e roda diretamente em um servidor
web. Para serem executadas, as Servletsprecisam de um container web.
As pginas em JSP e as Servlets tambm podem acessar um
banco de dados residente em um Sistema Gerenciador de Banco de
Dados (SGBD) atravs de um conector Java DataBaseConnector
(JDBC). A arquitetura bsica da utilizao do Java EE pode ser vista na
Figura 1.
7/26/2019 M8 - Tpicos Avanados IV_2
13/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 13
Figura 1. A arquitetura de desenvolvimento do Java EE.
Para se criar e manter as pginas JSP necessrio um servidor
web com suporte a servlets (tambm chamado de container web).Existem diversas tecnologias do este tipo de suporte s aplicaes Java
EE como o Apache Tomcat, Apache Geronimo, GlassFisheJetty.
1.2. Ambiente de Desenvolvimento Eclipse
O Eclipse um ambiente de desenvolvimento integrado para
diversas linguagens de programao em uma interface genricae uma
das ferramentas mais adotadas no desenvolvimento de softwaresna
atualidade. Alm disso, uma ferramenta gratuita que permite diversas
extenses atravs da instalao deplug-ins. Neste curso ser utilizado o
EclipseGalileo -Java EE IDE For Web Developers. Contudo existem
diversas outras verses disponveis para desenvolvedores de sistemas
da internet em https://eclipse.org/.
A tela principal do ambiente do Eclipse pode ser visto na Figura 2.
Do lado esquerdo da tela possvel encontrar o Package Explorer onde
as pastas e os arquivos dos projetos estaro localizados; no centro da
tela encontra-se o editor de arquivos onde sero realizadas as
codificaes; na parte inferior da tela encontra-se um conjunto de abas
para auxiliar o programador, onde se destacam a aba Console
responsvel por exibir mensagens provenientes da execuo de um
programa; e a aba Problems, que exibem os problemas e erros
encontrados em seu projeto em tempo de Design.
7/26/2019 M8 - Tpicos Avanados IV_2
14/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 14
Figura 2. A tela inicial do Eclipse.
Na aba Servers do Eclipse, o Server configurado, como por
exemplo o TomCat, fica disposto podendo ser inicializado e interrompido
como mostra a Figura 3. Clicando no boto start possvel testar o
funcionamento do servidor web configurado. A execuo do TomCat
pode ser visualizada na aba console do Eclipse. Para interromper a
execuo do Server, o boto stopdeve ser pressionado.
Figura 3. A aba com o servidor Tomcatinicializado.
Ao iniciar o Eclipse, um diretrio que ser usado para armazenaros seus projetos deve ser escolhido. Neste momento, um diretrio j
existente pode ser escolhido ou um diretrio novo pode ser criado. Esse
diretrio chamado de Workspace pelo Eclipse. Todos os projetos
criados ficaram dispostos dentro do Workspace em suas respectivas
pastas nomeadas com o mesmo nome do projeto.
1.3. Criando um Novo Projeto Java EE
7/26/2019 M8 - Tpicos Avanados IV_2
15/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 15
Para se criar um novo projeto web necessrio clicar no menu
File>New>Dynamic Web Project, que abrir a tela de preenchimento de
dados sobre o projeto. Preencha nessa tela o nome do seu projeto
(Project Name) e deixe os demais itens sem alterao. Em seguida
clique em Finish para criar seu novo projeto web. Voc poder a
estrutura do seu projeto na aba Package Explorerdo Eclipse. O processo
pode ser visto na Figura 4.
Figura 4. Criao de um novo projeto webe o diretrio do projeto no Package Explorer.
Os diretrios criados por um projetoJava EEso organizados de
forma a separar os arquivos . java dos arquivos web. No diretrio
WebContent, os arquivos web (JSP,HTML,CSS) ficam dispostos. E em
Java Resources: src ficam armazenados os arquivos. javabem como os
seus pacotes.
No diretrio WEB-INF fica o arquivo web.xml, que contm as
configuraes para uma aplicao web, conforme a Figura 5. Os cdigos
da figura so automaticamente gerados pelo Eclipse no momento de
criao do projeto web. O elemento define o nome da
aplicao e no elemento a lista de arquivos
procurados por padro quando o projeto for executado. No diretriobuild
ficam os arquivos .class, o .javacompilado.
1.4. Instalao e Configurao do Apache Tomcat
7/26/2019 M8 - Tpicos Avanados IV_2
16/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 16
O Apache Tomcat um software de servidor webgratuito para a
implementao das tecnologias Java EE (JSP e Servlet). O Tomcat
disponibilizado no endereo eletrnico http://tomcat.apache.org/ e possui
as seguintes verses disponveis: Tomcat 6, Tomcat 7 e Tomcat8. Neste
curso ser utilizado o Apache Tomcat 6.0.43. O downloadpode ser feito
no endereo http://tomcat.apache.org/download-60.cgi
Figura 5. O arquivo web.xml.
Aps o download da verso 6 do Tomcat, executar o arquivo
apache-tomcat-6.0.43.exe. Durante o processo de instalao, ser
requisitado o nome de usurio para administrador do Tomcat e sua
respectiva senha. Tambm ser pedido o caminho do diretrio onde est
instalado o Java RuntimeEnvironment (JRE). As telas podem ser vistas
na Figura 6.
Figura 6. Configurao do Apache Tomcat.
Depois que a instalao do Tomcat for realizada, necessrio a
criao de um novo servidor (Server) no ambiente Eclipse (este processo
far a configurao entre o Eclipse e o Tomcat instalado no
7/26/2019 M8 - Tpicos Avanados IV_2
17/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 17
computador).Para isso necessrio clicar em File>New>Othere em
seguida, localizar Server. Aps clicar em Next, selecionar a pasta Apache
e a verso do servidor que estiver utilizando (Tomcat v6.0 Server). Por
fim, necessrio identificar o diretrio onde foi instalado (na sua
mquina) o Tomcat. O processo de criao do Serverpode ser visto na
Figura 7.
Alm disso, necessrio adicionar a Library referente ao Tomcat
no projeto. Para isso, clique com o boto direito em cima do projeto e
depois selecione as opes, consecutivamente, Properties>Java Build
Path>Libraries>add Library>Server Runtime>Apache Tomcat
v6.0>Finish>ok.
Figura 7. Criao de um novo serverdo Tomcat no Eclipse.
Aps a criao do Server aparecer como um novo projeto o
diretrio Serversno Package Explorerdo Eclipse (Figura 8).
Figura 8. A pasta Serversdo eclipse com o servidor Tomcat 6 configurado.
7/26/2019 M8 - Tpicos Avanados IV_2
18/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 18
1.5. Criando uma Pgina JSP
Para se criar uma nova pgina JSP necessrio clicar em
File>New>JSP, selecionar a pasta Web Content do projeto onde se
deseja criar a nova pgina e digitar o nome do arquivo. Ao final, ao dar
dois cliques na pgina JSP, a mesma ser aberta no Eclipse para edio.
A sintaxe para uso no JSP a mesma do Java, porm
necessrio colocar o fragmento do cdigo Java entre para
diferenci-las das tags prprias do HTML. Esse tipo de fragmento
tambm chamado de scriptlets.Note que para separar o cdigo Java
das tag sem HTML, os spriptlets so inseridos, possibilitando o uso dasclasses em Java. Para que a data atual seja exibida uma tag de
resultado utilizada.As tags de scriptlet mais usadas so:
Comentrio:
Expresso de resultado:
Declarao de atributos ou mtodos:
As Diretivas fornecem informaes especiais sobre a pgina
JSP.Dentre elas,as principais so:
page: essa diretiva define as diretivas da pgina.
No exemplo da Figura 9, a diretiva page utilizada juntamente
com atributo import e o language. Com o atributo import ela
permite a importao das classes em Java, no exemplo, as
classes Date e SimpleDateFormat foram importadas. J com o
atributo language, a diretivapageespecifica a linguagem que est
sendo utilizada, no exemplo, a linguagem Java especificada.
7/26/2019 M8 - Tpicos Avanados IV_2
19/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 19
Figura 9. Uma pgina JSP com diretivas.
taglib: o uso dessa diretiva permite que uma biblioteca de
tagsseja importada e utilizada em uma pgina JSP.
include: essa diretiva permite que um arquivo
seja inserido dentro de uma pgina JSP. Como por exemplo, a
Figura 10, onde o cabealho de uma pagina JSP inserida
atravs de um include, informando o caminho do arquivo HTML
que contm o cabealho atravs do atributo file.
Figura 10. A diretiva include.
Depois que a diretiva include inserida, o cabealho com o logo
do projeto ficar visvel. A Figura 11 mostra o resultado do include
para o projeto da Locadora Sesso das Dez.
7/26/2019 M8 - Tpicos Avanados IV_2
20/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 20
Figura 11. O resultado da diretivainclude
.
Alm dos atributos explicados acima, cada diretiva possui um
conjunto de atributos que podem ser utilizados para atribuir diversas
caractersticas.
1.6. Compilando e Executando um Projeto Java EE
Para testar e executar um projeto Java EEno Eclipse preciso
selecionar a pgina JSP que se deseja executar e clicar no cone start
(seta verde na barra de ferramentas). Para executar o projeto direto da
pasta do projeto noeclipse, clique em cima do projeto com o boto direito
v em Run As>Runon Server(Figura 12).
7/26/2019 M8 - Tpicos Avanados IV_2
21/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 21
Figura12. Run As>Run on Server.
7/26/2019 M8 - Tpicos Avanados IV_2
22/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 22
2. Usando o Modelo MVC no Projeto Web
Nesta aula ser apresentado o padro de projeto Modelo-Viso-
Controladora (MVC) para desenvolvimento de um projeto Java EE. Alm
disso, ser desenvolvido um sistema de controle de filmes com um
cadastro, mostrando passo-a-passo a utilizao do JSP, do padro MVC
e do acesso a um banco de dados relacional.
2.1. MVC
O padro de desenvolvimento de softwareMVC foi desenvolvido
inicialmente para a linguagem smalltalk na dcada de 70 e apresentada
oficialmente por Krasner e Pope (1988). O padro consiste em dividir
uma aplicao em trs partes interligadas, separando as regras do
negcio do sistema modelado da forma como este ser exibido para o
usurio. Em outras palavras, o padro MVC permite que o usurio tenha
acesso apenas as informaes processadas pelo servidor sem teracesso direto a lgica de negcio. O padro recomendado para
sistemas complexos e webo que facilita a manuteno do sistema e a
incluso de novas funcionalidades. O padro MVC no recomendado
para pequenas aplicaes que rodam exclusivamente em mquinas
isoladas.A Figura 13 mostra as camadas presentes em um sistema que
utiliza o MVC.
Figura 13. Arquitetura MVC [Krasner; Pope, 1988].
7/26/2019 M8 - Tpicos Avanados IV_2
23/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 23
O modelo composto de trs camadas distintas: a Modelo, a
Controladora e a Viso. A camada Controladora pode alterar a camada
do Modelo e enviar mensagens para a Viso mudar os dados que so
exibidos ao usurio. Por sua vez, a camada de Modelo envia para as
outras camadas quando houver mudanas em seu estado, dessa forma
possvel atualizar as informaes exibidas pela Viso e os comandos
disponveis para a Controladora. Por fim, a camada de Viso requisita
informaes ao Modelo para atualizar e gerar uma representao de
dados para o usurio.
Para exemplificar o modelo MVC ser utilizado um exemplo decadastro de filmes, onde o usurio ir cadastrar registros de filmes
informando o ttulo, gnero (ao, aventura, etc.), indicao se o filme
concorreu ao Oscar, a sua durao e uma sinopse (descrio textual do
filme). Dividindo a construo do softwareem camadas MVC, as Vises
(views) sero as pginas JSP de cadastro do filme; as Controladoras
(controllers) sero as servlets, enquanto as Modelos (models) sero as
classes em Java representando as regras de negcio do sistema.Na servlet(Controladora) esto os mtodos doPost ou doGet, que
so responsveis por receber as informaes que foram submetidas pelo
formulrio e por verificar se todos os dados foram preenchidos pelo
usurio no cadastramento de um filme na pgina JSP. Na classe Java
(Modelo) so definidos os atributos e os mtodosreferentes a filmes, bem
como os mtodos de comunicao com a classe dao, a qual
responsvel por realizar as operaes no banco de dados.Quando o usurio preencher as informaes para cadastrar um
filme atravs da pgina JSP no seu browsere clicar no boto submit,os
dados preenchidos no formulrio sero enviados para a controladora
pelo mtodo post, que verificar se todos os dados necessrios para
armazenar um filme foram preenchidos e enviar os dados para a classe
do Modelo. Uma vez que a classe Modelo receber os dados enviados
pela Controladora, ela ir chamar um mtodo da classe dao responsvel
pela insero no banco de dados.
7/26/2019 M8 - Tpicos Avanados IV_2
24/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 24
2.2. Criando a Camada de Viso (View)
Inicialmente crie um novo projeto de pgina dinmica Java EE
conforme a aula anterior. Em seguida insira uma pgina JSP para
cadastro de um filme contendo os seguintes campos: ttulo, gnero,
durao, oscar e descrio. Na Figura 14 possvel ver a pgina de
cadastro de filme usada neste exemplo.
Figura 14. A pgina cadastroFilme.jsp.
Na pgina JSP para o cadastro de um filme esto presentes as
representaes grficas da pgina usando HTML, as tags em cdigo
Java (spriptlets) usadas para exibir uma mensagem caso algum campo
seja enviado sem preenchimento para a Controladora, duas diretivas
includepara inserir um arquivo de cabealho e outro de rodap e a
diretivapage para definir a linguagem Java, conforme a Figura 15. Para
a submisso dos dados do formulrio para a Controladora, o atributo
methodda tagform em HTML ser definido comoposte o atributo action
7/26/2019 M8 - Tpicos Avanados IV_2
25/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 25
receber o nome da URL Mappings definido no momento de criao de
uma servlet especfica para cadastrar um filme. Mais adiante ser
explicado passo a passo como a servlet CadastrarFilmeController foi
criada.
Figura 15. A tagformda pgina cadastroFilme.jsp.
2.3. Criando a Camada do Modelo (Model)
A camada de modelo representa a lgica do negcio modelado e
consiste em classes comuns em Java. Para isso, crie uma nova
classeFilme.java dentro do pacote (package) model na pasta Java
Resources>src.Nesta classe crie os atributos ttulo, descrio, gnero e
oscar do tipo String; e os atributos id e durao do tipo int. Crie tambm
todos os getters e setters destes atributos. Em seguida crie o mtodocadastroFilmecom um parmetro do tipo Filme. A classe criada pode ser
vista na Figura 16.
7/26/2019 M8 - Tpicos Avanados IV_2
26/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 26
Figura 16. A classe Filme.java.
O mtodo cadastroFilme ser implementado mais a frente para
fazer o efetivo cadastro de um filme em um banco de dados, onde acamada de acesso de dados ser programada para realizar uma
conexo com o MySQL Server.
2.4. Criando a Camada de Controle (Control ler)
A camada de controle consiste de servlets especficas para cada
ao realizada (e.g. cadastro). Para isso crie uma nova servletCadastrarFilmeController.javadentro do pacote (package) controller na
pasta Java Resources>src. Os passos para a criao podem ser vistos
na Figura 17. Note que o campo Classname receber o nome de
CadastrarFilmeController e por conveno a terminao .doser usada
para definir o nome da servletna URL Mappings.Para isso,o nome na
URL Mappings deve ser editado para CadastrarFilmeController.do. A
pgina JSP para cadastro de um filme utilizar o nome atribudo na URL
Mappings para chamar esta servlet que responsvel pelo
7/26/2019 M8 - Tpicos Avanados IV_2
27/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 27
cadastramento de um filme. Sendo assim, o nome definido na URL
Mappingsdeve ser atribudo a tag action do formulrio na pgina JSP.
Figura 17. Criao da servlet CadastrarF ilmeControl ler.
Quando uma servlet for criada e a nomeada, automaticamente, o
arquivo web.xml pertencente ao diretrio WEB-INFser modificado,
recebendo as informaes para realizar o mapeamento de cada servlet.
Dentre os cdigos gerados, automaticamente, no arquivo web.xmlse
encontra o elemento que receber o nome informado na
URL Mappingsda servletno momento de sua criao. Esse elemento serusado para realizar o mapeamento e direcionamento para uma
determinada servletque foi chamada por uma pgina JSP.
AFigura 18apresenta o cdigo do arquivo web.xmlgerado aps a
criao da servletCadastrarFilmeController. Alguns elementos de
descrio da servlet tambm foram acrescentados no arquivo web.xml
como o, e o.
Figura 18. O arquivo web.xml.
Para cada servlet criada, os mesmos cdigos ilustrados sero
7/26/2019 M8 - Tpicos Avanados IV_2
28/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 28
gerados no arquivo web.xml, alterando apenas os nomes atribudos aos
elementos (, ,, ) j que estes dependem da nomenclatura utilizada na servlete do
pacote a qual a mesma est associada.
O prximo passo programar o mtodo doPost ou doGet, para
receber as informaes vindas da camada de Viso. Neste exemplo foi
escolhido utilizar o doPost pois as informaes enviadas do formulrio
para controladora sero transferidas de forma encapsulada, ou seja, as
informaes no estaro visveis na URL da pgina.
O mtodo doPost, assim como o doGet, possui dois parmetros: o
request do tipo HttpServletRequest, que responsvel por obter osdados vindos da camada de viso pelo mtodo post do HTML; e o
response do tipo HttpServletResponse, que responsvel por enviar
uma informao para a camada de viso (e.g. um objeto).Dentro do
mtodo doPost, o parmetro requestpossui o mtodo getParameter, que
efetivamente obter os campos enviadospelo formulrio atravs do
atributo name utilizado dentro da taginputdo HTML.A Figura 19 mostra a
implementao inicial do mtodo doPost.
Figura 19. A programao inicial do mtodo doPost.
Dentro do mtodo doPost,a validao para campos nulos ser
realizada atravs de dois arrays: um para verificar se os campos so
nulos e outro para guardar as mensagens com os campos que estiverem
nulos. A Figura 20 exibe o cdigo de validao para a controladora.
7/26/2019 M8 - Tpicos Avanados IV_2
29/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 29
Figura 20. A validao de dados na controladora.
Caso existam campos que estejam nulos, uma mensagem ser
enviada para a pgina cadastroFilme.jsppor meio de um parmetro domtodo setAttributedo objeto request.Caso contrrio, a classe Filmeda
camada de modelo ser instanciadae todos os campos recebidos da
camada de viso sero adicionados nos respectivos atributos de Filme.
Por fim, o mtodo para cadastrar o filme chamado. O restante da
programao da controladora pode ser visto na Figura 21.
Figura 21. Atribuindo valores na camada de modelo.
Para que a mensagem enviada pela controladora seja exibida na
pgina cadastroFilme.jsp, o mtodo getAttribute do objeto request deve
7/26/2019 M8 - Tpicos Avanados IV_2
30/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 30
ser utilizado recebendo como parmetro o nome mensagemdefinido no
mtodo setAttribute.
2.5. Criando o Data Access Object(DAO)
O Data Access Object(DAO) um objeto responsvel pelo acesso
a um banco de dados de forma independente do modelo do negcio. A
classe DAO separa a camada de Modelo do MVC da camada de dados,
provendo um tratamento diferenciado dos mtodos do negcio modelado
e dos mtodos que conectam, incluem, excluem, alteram e recuperam as
informaes em um banco de dados.O DAO consiste de uma classe em Javacomum com os mtodos
que fazem acesso a banco de dados (insero, excluso, alterao e
seleo) e instanciada nas classes da camada de Modelo. No exemplo
desta aula ser criado o DAO para a classe Filme, de forma que os
dados inseridos pelo usurio possam ser persistidos. Para isso, crie uma
classe com o nome deFilmeDAO dentro do pacote daona pasta Java
Resources>src.Na classe FilmeDAO crieum mtodo chamado de cadastroFilme
sem tipo de retorno e que receba como parmetro um objeto tipo Filme.A
Figura 22 exibe o cdigo do mtodo cadastroFilme pertencente a classe
FilmeDAOe que realiza o cadastro de filmes.
7/26/2019 M8 - Tpicos Avanados IV_2
31/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 31
Figura 22. O mtodocadastroFilme.
O mtodo cadastroFilmeda classe FilmeDAO possui dois objetosimportantes para a comunicao com um banco de dados: a conexo
com o banco de dados (connection) e o comando em Structured Query
Language (SQL) (PreparedStatement). Para se inserir informaes em
um banco de dados preciso realizar uma conexo entre o programa
que est sendo desenvolvido e o servidor de banco de dados. Alm
disso, necessrio um comando, preparado com as informaes do
objeto da camada de Modelo.Para se criar uma conexo, insira uma nova classe chamada de
ConexoBancoDeDados dentro do pacote dao. Neste exemplo
utilizaremos o MySQL Server 5.6 e MySQL Workbench 6.1 como
Sistema Gerenciador de Banco de Dados (SGBD). A classe de conexo
ao banco de dados no Java EE idntica a um programa em Java
Standard Edition(SE), portanto necessrio definir um Driverde conexo
e adicionar o JAR do driver no projeto. Para isso, clique com o boto
direito na pasta do projeto e selecione as opes Properties>Java Build
7/26/2019 M8 - Tpicos Avanados IV_2
32/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 32
Path>AddExternalJars.
Para criar um Driver de conexo, ser preciso definir qual servidor
e o banco de dados acessar. Neste exemplo, est sendo usado o
localhost como endereo do servidor e base de dados foi denominada
delocadorasessaodasdez.Para isso,uma tabela Filmecom as colunas id
como chave primria, titulo, genero, oscar, duracaoe descrio foi criada
na base de dados locadorasessaodasdez. O cdigo referente a classe de
conexo pode ser visto na Figura 23.
Figura 23. A classe de conexo ao banco de dados.
Para finalizar a implementao do mtodo para cadastrar um filme
usando o modelo MVC, o mtodo cadastrar da classe Filme deve ser
definido. Esse mtodo ir instanciar um objeto do tipo daclasseFilmeDaopara chamar o mtodo cadastrar filme referente a essa
classe, conforme ilustrado na Figura 24.
Figura 24. A mtodo de cadastrar filmes na classe Filme.
O prximo passo rodar o projeto e inserir um filme na pgina
7/26/2019 M8 - Tpicos Avanados IV_2
33/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 33
JSP, preenchendo todas as informaes requisitadas. Aps a execuo,
faa uma verificao no banco de dados para conferir se o registro
referente ao cadastro foi inserido.
7/26/2019 M8 - Tpicos Avanados IV_2
34/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 34
3. Realizando um CRUD em um Projeto Java EE
Um sistema deve ser capaz de realizar operaes de insero,
excluso, alterao e recuperao de informaes em um banco de
dados como forma de interao com usurio. Essas operaes em um
sistema so conhecidas como Create-Read-Update-Delete (CRUD). Na
aula anterior foi realizado o cadastro de um filme representando um
Create(criao ou insero). Nessa aula serorealizadas as outras
operaes presentes em um CRUD: recuperao, alterao e excluso.
3.1. Recuperao de Dados (Read)
Para o exemplo de recuperao de dados, sero criadas duas
pginas: selecionarFilme.jsp, que ser responsvel por listar os filmes
por gnero e possibilitar a excluso de um registro; e alterarFilme.jsp
que listar todos os filmes por gnero e possibilitar a alterao de um
deles.Primeiramente preciso modificar a classe Filmeda camada de
modelo para ser capaz de listar filmes e a classe FilmeDAOpara fazer a
comunicao com o banco de dados e retornar os registros esperados.
Na classe Filme ser necessrio a incluso de um mtodo chamado
listarFilmesPorGenero, que instanciar a classe FilmeDAO.O cdigo
referente implementao do mtodo pode ser visto na Figura 25.
Figura 25. A mtodo de listar filmes na classe Filme.
A classe FilmeDAO tambm ter um mtodo chamado
listarFilmesPorGenero. O cdigo relativo ao mtodo
listarFilmesPorGenero da classe FilmeDAO pode ser visto na Figura 26.
O cdigo de tratamento de exceo foi suprimido por questes de
7/26/2019 M8 - Tpicos Avanados IV_2
35/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 35
apresentao.
Figura 26. A mtodo de listar filmes na classe FilmeDAO.
O prximo passoser criar uma nova controladora chamada de
ListarFilmePorGeneroController.java, que ser responsvel por gerenciar
a lista de filmes a ser exibida na pgina selecionarFilme.jspou na pgina
alterarFilme.jsp. Foi utilizada a mesma controladora para listar os filmestanto para a pgina selecionarFilme.jsp(pelo mtodo doGet)quanto para
a pgina alterarFilme.jsp (pelo mtodo doPost). A diferena entre os
mtodos doGet e do doPost da controladora
ListarFilmePorGeneroController.javaest no fato do resultado da
consultaser despachadapara pginas diferentes.
Para que a pgina selecionarFilme.jsp requisite uma listagem de
filme controladora ListarFilmePorGeneroController.do necessrioprogramar o mtodo doGet. Este mtodo ser responsvel por adicionar
um atributo (um arrayde filmes) em um objeto do tipo request atravs do
mtodo setAttribute,que ser enviado para a pgina selecionarFilme.jsp.
O mtodo getRequestDispatcher receber como parmetro o nome da
pgina selecionarFilme.jsp para que o array de filme seja direcionado
para esta pgina.
Note que o mtodo doGet receber da pgina JSP um parmetrodo tipo String denominado de gnero. Este ser utilizado na camada
7/26/2019 M8 - Tpicos Avanados IV_2
36/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 36
DAO para recuperar no banco de dados os registros dos filmes que
possuam o valor do campo gneroidntico ao valor do parmetro.
O mtodo doGet pode ser visto na Figura 27.
Figura 27. O mtodo doGetpara listar filmes.
Em seguida preciso preparar a pgina selecionarFilme.jsp para
listar os filmes retornados pela controladora. Para isso preciso resgatar
o atributo arrayDeFilmePorGenero, que foi enviado pela controladora por
meio do mtodo getAttribute, caso a pgina verifique que este atributo
no nulo (esse fato indica que uma consulta foi realizada). Uma vez
que o atributo foi resgatado possvel iterar todos seus itens e lista-los
na pgina conforme mostra a Figura 28.
Figura 28. O cdigo em java na pgina JSP.
Para que os objetos possam ser instanciados sem erros
7/26/2019 M8 - Tpicos Avanados IV_2
37/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 37
necessrio importar as bibliotecas das classes no incio do arquivo JSP
atravs da diretiva Page usando o atributoimport. Na Figura 29
possvel ver as importaes necessrias para a pgina
selecionarFilme.jsp.
Figura 29. As importaes na pgina JSP.
Agora s rodar a pgina de listar filmes, escolher um gnero e
clicar no boto Buscar. No atributoaction desse formulrio o nome
ListarFilmePorGeneroController.do deve ser informado e o atributo
methoddeve ser definido como get. Todos os filmes presentes no banco
de dados sero listados conforme pode ser visto na Figura 30.
Figura 30. A lista de filmes exibidos pela pgina JSP.
3.2. Excluso de Dados (Delete)
A pgina selecionar Filme.jsp tambm ser utilizada para fazer a
excluso de registros no banco de dados, visto que para se excluir um
registro preciso primeiro listar e selecion-lo. Ao listar um filme, do lado
7/26/2019 M8 - Tpicos Avanados IV_2
38/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 38
direito dos registros aparece uma coluna Excluircom um cone de um X
que ser usado para excluir um registro. Ao se clicar nesse cone, a
pgina selecionarFilme.jsp ir chamar uma controladora pelo mtodo get
passando o iddo filme a ser excludo.
Inicialmente necessrio criar o mtodo excluirFilmetanto na
classe Filmequanto na classe FilmeDAO. Na classe Filmeo mtodo ser
responsvel apenas por instanciar a classe FilmeDAO e chamar o
mtodo para efetivamente excluir o registro. A Figura 31 exibe a
implementao do mtodo na classe Filme.
Figura 31. A mtodo de excluir filmes na classe Filme.
No mtodo excluirFilmena classe FilmeDAO preciso preparar o
comando SQL que ser responsvel pela excluso de um registro
levando em considerao o iddo filme que ser passado por parmetro.
Em seguida o mtodo executar o comando SQL que efetivamenteexcluir o registro da base de dados. A implementao do mtodo pode
ser vista na Figura 32.
Figura 32. A mtodo de excluir filmes na classe FilmeDAO.
Agora, preciso criar a controladora ExcluirFilmeController.javae
implementar o mtodo doPost para que um registro seja excludo.
7/26/2019 M8 - Tpicos Avanados IV_2
39/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 39
Quando o usurio clicar no cone de excluso (tagncora em HTML) de
um filme a controladoraExcluirFilmeController.javaser chamada atravs
do mtodo get. O mtodo doGet dessa controladora far uma chamada
ao mtodo doPost tambm pertencente a essa controladora por meio do
cdigo doPost(resquest, response). Por isso, a implementao do
mtodo excluir ser feito no mtodo doPostda controladora.
O mtododoPost far a chamada para o mtodo excluirFilme da
classe Filme, que repassar o comando para a camada dao para realizar
a excluso do registro. O mtodo doPostda controladora pode ser visto
na Figura 33.
Figura 33. O mtodo doPostda classe ExcluirFilmeController.
Na pgina selecionarFilme.jsp, a chamada a controladora
ExcluirFilmeController.javaser feita atravs de uma tagncora do HTML
passando o id referente ao filme a ser excludo.Esse cdigo pode
visualizado na Figura 28. Usando essa tag para fazer uma chamada acontroladora o mtodo getser utilizado.Agora s rodar o exemplo e
realizar uma excluso de registro.
3.3. Alterao de Dados (Update)
Para realizar uma alterao de dados, ser preciso primeiro listar
os registros por um determinado gnero antes de efetuar algumaalterao nos dados. A controladora ListarFilmePorGeneroController
7/26/2019 M8 - Tpicos Avanados IV_2
40/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 40
atravs do mtododoPost ser responsvel pela listagem dos filmes que
sero habilitados para alterao.
Na controladora ListarFilmePorGeneroController.java, o mtodo
doPost ser implementado de forma semelhante ao mtodo doGet dessa
controladora. Com apenas uma alterao no mtodo
getRequestDispatcher que agora receber como parmetro o nome da
pgina alterarFilme.jsp para que o array de filme seja direcionado para
esta pgina. No atributo action do formulrio para listar um filme na
alterarFilme.jsp o nome ListarFilmePorGeneroController.do deve ser
informado e o atributo method deve ser definido comopost.
Figura 34. O mtodo doPostda classe ListarFilmePorGeneroController.
Agora, preciso adicionar o mtodo alterarFilme nas classes
Filme e FilmeDAO (como foi feito nos demais exemplos). O mtodo
alterarFilme na classe Filme ser responsvel por fazer a chamada a
classe FilmeDAOe ao mtodo para efetivamente realizar a alterao nobanco de dados. A Figura 35 mostra o cdigo do mtodo alterarFilme.
Figura 35. O mtodo alterarFilmeda classe Filme.
No mtodo alterarFilmeda classe FilmeDAOocorrer a conexo
com o banco de dados e a preparao do comando SQL para efetiva
7/26/2019 M8 - Tpicos Avanados IV_2
41/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 41
alterao de dados de um determinado filme. O cdigo referente ao
mtodo da classe FilmeDAOpode ser visto na Figura 36.
Figura 36. O mtodo alterarFilmeda classe FilmeDAO.
O prximo passo criar a classe controladora
AlterarFilmeController.java dentro do pacote controller. Esta classe ter
implementao semelhante com a classe CadastrarFilmeController
implementada na aula anterior. As diferenas consistem em: o tratamentode erros e o objeto do tipo Filmefar a chamada ao mtodo alterarFilme
na controladora.
O ltimo passo fazer com que a camada de viso
(alterarFilme.jsp) exiba a lista de filmes por gnero e efetuar a alterao
de dados digitados pelo usurio. O cdigo para listar os filmes na pgina
de alterao similar ao cdigo da pgina de listar filmes. No caso da
alterao os valores listados aparecero em uma caixa de texto com
possibilidade de edio e ao lado de cada registro aparecer um boto
de alterar. Um trecho de cdigo da pgina alterarFilme.jsppode ser visto
na Figura 37.
Para que a controladoraAlterarFilmeController seja chamada pela
pgina alterarFilme.jsp, o atributo action do formulrio para alterar um
filme deve receber o nome AlterarFilmeController.do e o atributo method
deve ser definido comopost.
7/26/2019 M8 - Tpicos Avanados IV_2
42/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 42
Figura 37. O mtodo alterarFilmeda classe FilmeDAO.
Agora necessrio rodar o projeto e listar os filmes por um
determinado gnero (e.g. Ao). Uma listagem de filmes ser exibida e
ao se modificar os dados de um registro as informaes seropersistidas no banco de dados. A Figura 38 exibe a pgina de alterao
em execuo.
Figura 38. A lista de filmes exibidos pela pgina alterarFilme.jsp.
7/26/2019 M8 - Tpicos Avanados IV_2
43/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 43
4. Hibernate
Nesta aula, uma nova abordagem de acesso ao banco de dadosser discutida. Algumas ferramentas foram desenvolvidas para facilitar o
acesso ao banco de dados, de forma a melhorar a transio de dados
utilizados por um objeto ao um modelo tabular manipulado pelo banco de
dados ou vice-versa. Essas ferramentas realizam um trabalho de
mapeamento com acesso ao banco de dados, funcionando como um
intrprete entre o banco de dados e as classes da camada de
modelo.Uma das ferramentas de mapeamento existentes oHibernate.O Hibernate um framework que se relaciona com o banco de
dados por intermdio de um mapeamento objeto/relacional para Java.
Nenhuma alterao na aplicao necessria para utilizar o Hibernate,
bastando apenas algumas configuraes para que a persistncia de
dados possa ser gerenciada pelo framework. Dessa forma a
responsabilidade de gerenciar o acesso ao banco de dados entregue
ao Hibernate.O uso do Hibernatesimplifica as classes pertencentes camada
DAO, j que a ferramenta gerencia a transio de informaes das
classes para o banco de dados ou do banco de dados para as classes.
Em poucas linhas de cdigo essa transio realizada, permitindo que o
programador se dedique mais tempo construindo a lgica do negcio.
Em comparao com a classe DAO das aulas iniciais, ser visvel como
o uso do framework reduzir as linhas de cdigo simplificando as
operaes realizadas no banco de dados.
Os exemplos das primeiras aulas sero modificados para que o
gerenciamento do banco de dados seja realizado pelo Hibernate. Nesta
aula, a operao de insero no banco de dados ser explicada passo a
passo.
4.1. Instalando e Configurando o Hibernate
7/26/2019 M8 - Tpicos Avanados IV_2
44/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 44
Primeiramente, os arquivos necessrios para configurar o
Hibernate devem ser baixadospara serem referenciados no projeto.
Neste exemplo, ser utilizada a verso 3.6.10 do Hibernate
disponibilizada para downloadno site http://hibernate.org/.
Aps o download, o arquivo do Hibernatedeve ser descompactado
para que os arquivos e pastas visualizados na Figura 39 estejam
disponveis para a configurao.
Figura 39. Os arquivos disponveis do Hibernate.
Por seguinte, alguns arquivos JAR devero ser selecionados para
a configurao:
hibernate3.jar- Esse arquivo se encontra no diretrio raiz;
todos os arquivos encontrados dentro da pasta lib>required;
o arquivo JAR encontrado dentro pastajpa.
A Figura 40 mostra todos os arquivos JAR que foram separados
para serem referenciados ao projeto. Para referenciar esses arquivos aoprojeto, clique com o boto direito do mouse em cima do projeto;
selecione a opo Properties>Java Build Path>Libraries.Para reunir
todos os arquivos JAR referentes ao Hibernateuma Library deve ser
criada. Para isso, as opes addLibrary>UserLibrary>UserLibraries>New
devem ser selecionadas, consecutivamente. Logo aps,o nome
Hibernate deve ser informado como nome da Library. Esse nome foi
escolhido porque todas as JAR que sero adicionadas so utilizadas
para a configurao do framework.
7/26/2019 M8 - Tpicos Avanados IV_2
45/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 45
Figura 40. Os arquivos JAR do Hibernatepara serem referenciados.
Aps a criao da Library Hibernate, preciso adicionar a ela os
arquivos JAR referentes ao Hibernate. Para isso selecione a opoaddJAR, adicione todos os arquivos JAR j separadose clique em ok.
A Figura 41 mostra o resultado dos arquivos referenciados no
projeto. Todos os JAR adicionados ficaram associados Library
Hibernateque foi criada justamente para agrupar os arquivos JAR
necessrio configurao doHibernate. O arquivo JAR do conector
MySQL continuar sendo necessrio para estabelecer uma conexo com
o banco de dados, por isso o mesmo tambm deve estar referenciado noJava Build Path do projeto.
7/26/2019 M8 - Tpicos Avanados IV_2
46/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 46
Figura 41. As bibliotecas referenciadas no projeto.
Todos arquivos JAR referenciados no Java Build Pathdo projeto
devem ser copiados para a pasta libda instalao do Tomcat. Caso os
arquivos JAR no sejam copiados um erro ocorrer no momento de
execuo do seu projeto.
4.2. Criando o Arquivo XML de Configurao do Hibernate
Para iniciar as modificaes no cdigo do projeto, um arquivo XML
de configurao deveser criado dentro do pacote util com o nome de
Hibernate.cgf.xml. Para a criao de um arquivo XML clique em
File>New>XML.
Nesse arquivo XML, esto presentes todas as linhas de cdigo e
os parmetros necessrios para estabelecer uma conexo com o banco
de dados, conforme Figura 42. Esses cdigos representam um modelo
bsico de configurao, onde as nicas variveis que devem ser
substitudas so os nomes do banco de dados, do usurio e da senhautilizados em seu projeto.
7/26/2019 M8 - Tpicos Avanados IV_2
47/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 47
Figura 42. O arquivo Hibernate.cgf.xml.
Repare que a classe ConexoBancoDeDados.javado pacote dao
usada nas aulas iniciais ser substituda por esse arquivo de
configurao, pois todas as informaes dessa classe so migradas para
este arquivo XML usado pelo Hibernate.
4.3. Criando Uma Sesso Com o Banco de Dados
Dentro do pacote til necessrio criar a classe HibernateUtil, que
responsvel por estabelecer uma sesso de comunicao com o banco
de dados atravs de uma conexo JDBC. Essa conexo ser
armazenada em um atributo esttico sessiondo tipo SessionFactory, que
tem a funo demanter os mapeamentos e as configuraes do
Hibernateem tempo de execuo. A Figura 43 mostra os cdigos
pertencentes a classe HibernateUtil.
7/26/2019 M8 - Tpicos Avanados IV_2
48/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 48
Figura 43. O cdigo da classe HibernateUtil.
Para estabelecer uma sesso, as configuraes estabelecidas no
arquivo Hibernate.cgf.xml, sero invocadas pelo mtodo configure. Para
isso o caminho do arquivo XML, Hibernate.cgf.xml, deve ser informado
como parmetro neste mtodo da classe HibernateUtil. Caso ocorra
algum erro no estabelecimento de uma sesso, uma exceo do
tipoExceptionInInitializerError ser lanada juntamente com umamensagem de erro. Aindanesta classe, o mtodo getSessionFactory
responsvel por retornar um objeto do tipo SessionFactory.
Aps essas alteraes no projeto, a viso geral dos diretrios do
projeto mostrada na Figura 44. No pacote util, a classe HibernateUtile o
arquivo XML, Hibernate.cgf.xml, foram criados. Alm disso, a Library
Hibernatefoi criada com todos os arquivos JAR necessrios. J no
pacote dao, a classe ConexoBancoDeDados foi removida, pois esta foisubstituda pelo arquivo de configurao XML do pacote util.
7/26/2019 M8 - Tpicos Avanados IV_2
49/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 49
Figura 44. O diretrio do projeto utilizando Hibernate.
4.4. Mapeando Uma Tabela
Para que o Hibernateidentifique as tabelas que so utilizadas por
uma aplicao, algumas anotaes devem ser feitas nas classes
pertencentes ao pacote da model e o elemento hibernate-mapping
acrescentado no arquivo de configurao Hibernate.cgf.xml. Neste
exemplo, o mapeamento da tabela Filmeser implementado.
necessrio modificar a classe Filme inserindo anotaes quesero utilizadas para o mapeamento objeto/relacional. Essas anotaes
pertencem ao pacote javax.persistencee permitem que o Hibernatecrie
uma tabela com os respectivos atributos de uma classe segundo as
descries e as restries anotadas.A Figura 45 mostra as anotaes
inseridas na classe Filme.
7/26/2019 M8 - Tpicos Avanados IV_2
50/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 50
Figura 45. As anotaes na classe Filme.
As anotaes disponveis para utilizao pelo Hibernateso:
@Entity- Identifica uma classe como entidade. Por padro,
o nome o prprio nome da classe;
@Table- Mapeia e define um nome(name) para a tabela. O
valor padro do nome o nome da classe;
@Id- Define a chave primria de uma tabela;
@Column- Mapeia e define um nome (name) para a coluna
da tabela. utilizado o atributo length para definir o
tamanho do campo e o atributo @nullablepara definir se o
valor do campo pode ser nulo ou no. O valor padro do
nome nome do atributo da classe.
@GeneratedValue - Define a propriedade de auto
incremento da chave primria.
7/26/2019 M8 - Tpicos Avanados IV_2
51/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 51
Alm dessas, outras anotaes e atributos podem ser
acrescentados no mapeamento da entidade. possvel aplicar restries
e especificar as caractersticas para que o processo de mapeamento
objeto/relacional se a ajuste as necessidades do usurio referentes ao
banco de dados.
Por fim, o elemento hibernate-mappingjuntamente com o atributo
class acrescentado no arquivo Hibernate.cgf.xmlpara apontar para a
classe Filme, que contm as anotaes. A Figura 46 mostra o
mapeamento. Todas as classes utilizadas em seu projeto devem seguir
os mesmos passos explicados com a classe Filme: primeiro as
anotaes e depois o mapeamento no arquivo XML.
Figura 46. O mapeamento das classes da camada do modelo.
4.5. Modificando a classe DAO
Como agora o Hibernate ser utilizado como intrprete entre a
tabela e a classe Filme, a classe FilmeDAO deve ser reestruturada de
forma mais simples. Para isso ser modificado o mtodo cadastrar da
classe FilmeDAO.A Figura 47 possui todos os cdigos usados para
inserir um registro de um filme no banco de dados.
7/26/2019 M8 - Tpicos Avanados IV_2
52/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 52
Figura 47. A classe FilmeDAOutilizando o Hibernate.
Inicialmente, um atributo sessiondo tipo SessionFactoryna classe
FilmeDAO definido. Esse atributo utilizado por todos os mtodos da
classe FilmeDAO para receber uma sesso iniciada. Para iniciar uma
sesso, o mtodo esttico getSessionFactoryda classe HibernateUtil
chamado, retornando um objeto do tipo SessionFactory. Atravs do
mtodo openSession, a sesso aberta para que uma operao
(insero, alterao, excluso, busca) seja executada no banco dedados.
Para executar uma operao no banco de dados, o mtodo
beginTransaction inicia um processo de transao. As operaes so
efetuadas pelas transaes atravs do mtodo commit. Em caso de erro
na transao, este capturado pelo bloco catch que, por sua vez, lana
uma exceo do tipo ExceptionDAO e chama o mtodo rollback,
responsvel por desfazer a transao. Independentemente, se atransao for concretizada com sucesso ou no, o bloco finally
executado, chamando o mtodo close que encarregado de fechar a
sesso.Essa a descrio genrica do funcionamento dos mtodos da
classe FilmeDAOpara executar uma operao no banco de dados.
4.6. Inserindo um Novo Registro No Banco de Dados
O mtodo cadastroFilme responsvel por armazenar novos
7/26/2019 M8 - Tpicos Avanados IV_2
53/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 53
registros de um filme no banco de dados, recebendo como parmetro da
camada de modelo um objeto do tipo Filme. Esse mtodo executa os
passos genricos de funcionamento explicados anteriormente e atravs
do mtodo savedo objeto session aoperao de insero chamada
recebendo como parmetro um objeto do tipo filme.
Quando o projeto executado, o Hibernatecria uma tabela filme
no banco de dados locadora sessaodasdez com as colunas id, ttulo,
descrio, durao e gnero de acordo com as especificaes e
restries anotadas na classe Filme e mapeadas pelo arquivo XML do
Hibernate. Atribuindo o valor true a propriedade hibernate.show_sql do
arquivo Hibernate.cgf.xml, no console do Eclipse possvel observar ocomando SQL que foi executado pelo Hibernate ao realizar uma
operao de insero, conforme a Figura 48.
Figura 48. O comando SQL executado pelo Hibernate.
Na classe FilmeDao, abordada anteriormente, o valor de cadaatributo da classe Filme atribudo, um a um, a um objeto do tipo
PreparedStatement para que o mtodo execute possa ser chamado.
Com o uso do Hibernateessas atribuies no so mais necessrias e a
aplicao se ajusta de forma mais simples ao banco de dados. Isso
ocorre, justamente, pois o Hibernate tem a incumbncia de mapear o
objeto do tipo filme para a tabela filme do banco de dados.
possvel observar o banco de dados locadorasessaodasdezsemnenhuma tabela associadaem um momento antes da execuo do
7/26/2019 M8 - Tpicos Avanados IV_2
54/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 54
projeto. Aps a execuo do projeto, verificamos que a tabela Filme foi
criada com as respectivas colunas e que o registro foi inserido com
sucesso. As colunas foram criadas segundo as anotaes feitas na
classe Filme.
7/26/2019 M8 - Tpicos Avanados IV_2
55/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 55
5. Realizando um CRUD em um Projeto com Hibernate
Nesta aula, as operaes de alterao, excluso e busca da
classe FilmeDAO sero modificadas para o uso do Hibernate,
complementando a implementao de um CRUD.
5.1. Alterao de Dados (Update)
O mtodo alterarFilme responsvel por atualizar as colunas
ttulo, duraoe descriode um registro no banco de dados associado
ao valor de uma determinada chave primria, conforme os cdigos da
Figura 49.
Figura 49. O mtodo alterarFilmeusando Hibernate.
Esse mtodo executa os passos genricos de funcionamento
explicados na aula anterior e atravs do mtodo saveOrUpdatedo objeto
de tipo Session a operao de alterao chamada recebendo como
parmetro um objeto do tipo filme.A Figura 50 mostra o SQL gerado aps
a execuo do projeto.
7/26/2019 M8 - Tpicos Avanados IV_2
56/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 56
Figura 50. O comando SQL executado pelo Hibernate.
5.2. Excluso de Dados (Delete)
O mtodo excluirFilme exclui um registro do banco de dados
associado ao valor de uma chave primria, conforme os cdigos da
Figura 51. O mtodo load usado para carregar todos os dados
referentes ao objeto filme com o valor do id associado. Esse
carregamento das informaes necessrio, pois o mtodo excluirFilmerecebeu como parmetro apenas o valor do id.
Figura 51. O mtodo excluirFilmeusando Hibernate.
O funcionamento dessa operao tambm segue os passos
explicados na aula anterior e atravs do mtodo deletedo objeto de tipo
7/26/2019 M8 - Tpicos Avanados IV_2
57/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 57
Sessiona operao de excluso chamada recebendo como parmetro
um objeto do tipo filme. A Figura 52 mostra o SQL gerado aps a
execuo do projeto.
Figura 52. O comando SQL executado pelo Hibernate.
5.3. Recuperao de Dados (Read)
O mtodo listarFilmesPorGenerotraz todos os registros da tabela
Filmeem que o valor do campo gnerodo banco de dados seja igual ao
valor do parmetro gneropassado para o mtodo, conforme os cdigos
da Figura 53. Nesse mtodo, a operao de busca usa uma API Criteria,
importada por org.hibernate.Criteria, que permite construir consultas
estruturadas.
7/26/2019 M8 - Tpicos Avanados IV_2
58/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 58
Figura 53. O mtodo listarFilmePorGenerousando Hibernate.
O mtodo createCriteria recebe como parmetro a classe Filme.
Quando o Hibernate executar uma consulta, um objeto do tipo Criteria
ser criado retornando instncias da classe Filme. Para que apenas os
dados dos filmes que possuam o gnero desejado sejam retornados, a
API Criteria permite o uso de restries de consulta. O mtodo add
usado para adicionar uma restrio que juntamente com mtodo
Restrictions.eqdefinem uma restrio de igualdade, ou seja, a consulta
realizada retorna apenas os dados da tabela Filme em que a coluna
gnero seja igual a varivel gnero. A Figura 54 mostra o SQL gerado
aps a execuo do projeto.
Figura 54. O comando SQL executado pelo Hibernate.
Para suprimir a mensagem de alerta de compilao emitida por
7/26/2019 M8 - Tpicos Avanados IV_2
59/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 59
uma operao de casting, a anotao @SuppressWarnings("unchecked")
utilizada. Essa anotao informa que o programador se assegura que o
tipo de objeto retornado na consulta pelo mtodo listpode ser convertido
para o tipo ArrayList.Na Figura 55 repare que se a notao for
retirada uma mensagem de alerta aparecer em amarelo.
Figura 55. A mensagem de alerta gerada.
7/26/2019 M8 - Tpicos Avanados IV_2
60/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 60
6. Struts
O Struts um framework gratuito que utiliza o padro de projeto
MVC para criao de pginas web utilizando a tecnologia Java EE. O
Struts permite a separao da camada de HTML da camada de
processamento, atravs de classes pr-definidas. Para representao da
camada HTML utilizada a classeActionForme para a representao da
camada de processamento utilizada a classe Action. O uso do Struts
no recomendado para pequenas aplicaes.
O Struts oferece em sua biblioteca uma servlet controladora
chamada de ActionServlet.Para instalar o Struts necessrio realizar o
download em https://struts.apache.org/download.cgi#struts2320. Em
seguida, descompacte o arquivo struts-2.3.20-all.zip em qualquer
diretrio.
6.1. Criando um Projeto Java EE com Struts2
O Struts um framework para ser usado em um projeto de
pginas web dinmicas, para isso ser necessrio criar um dynamic web
project no eclipse. Crie um projeto chamado HelloCefetStrutse avance
at aparecer a tela Web Module onde necessrio marcar a caixa
generate web.xml deploymentdescriptor (Figura 56).
Figura 56. Marque a opo para gerar o web.xml descriptor.
Em seguida, copie dentro da pasta WebContente/WEB-INF/libdo
7/26/2019 M8 - Tpicos Avanados IV_2
61/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 61
projeto criado as bibliotecas especificadas na Figura 57. Essas
bibliotecas esto no diretrio struts2.3.20/lib da instalao do Struts2.
Para facilitar a criao de novos projetos, recomendado a cpia dessas
bibliotecas em uma pasta separada de fcil acesso.
Figura 57. As bibliotecas do strutsque precisam ser copiadas para qualquer projeto web.
O prximo passo a criao de uma classe de ao no diretrio
Java Resources/src do projeto. Crie uma classe com o nome
HelloActionno pacote br.cefet.actions (o pacote onde todas as aes do
projeto ficaro). Na classe necessrio especificar os atributos que
sero mapeados da camada de Viso (um arquivo JSP), assim como
todos os getters e setters (mtodos que sero usados pelo Struts para
armazenar e retornar informaes).Alm disso, a classe dever ter uma funo chamada execute,
que ser executada quando uma ao for executada no JSP. A funo
executeretornar um valor em String que ser mapeado para que uma
pgina de resposta seja exibida ao usurio. O cdigo da classe deve
estar de acordo com a Figura 58.
7/26/2019 M8 - Tpicos Avanados IV_2
62/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 62
Figura 58. O cdigo da classe HelloAction.
O prximo passo criar a pasta de nome classes dentro do
diretrio WebContent/WEB-INF. Dentro dessa pasta tambm
necessrio criar um arquivo xml chamado struts.xml que far o
mapeamento de aes do projeto. Agora, necessrio criar as duas
pginas JSP do projeto: a primeira chamada de index.jsponde o usurio
digitar um campo texto e o enviar atravs de um clique em um boto; eo response.jsp, que a pgina de resposta ao clique do usurio. O
cdigo da pgina indexpode ser visto na Figura 59, enquanto o cdigo da
pgina responsepode ser visto na Figura 60.
Figura 59. O cdigo da pgina index.jsp.
7/26/2019 M8 - Tpicos Avanados IV_2
63/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 63
Na pgina index importante definir a ao de formulrio action
com o valor hello. Esse valor ser mapeado no struts.xmlpara quando o
formulrio for executado, chamar a classeHelloAction onde o valor para o
nome digitado pelo usurio ser armazenado. O struts ao perceber que
uma ao foi executada, pega a resposta enviada pela ao (o retorno
do mtodo execute) e retorna uma pgina de resposta associada no
arquivo de mapeamento. Essa pgina de resposta, ainda pode acessar
os valores da classe de ao, para retornar valores (de um banco de
dados por exemplo).
Figura 60. O cdigo da pgina response.jsp.
O mapeamento das aes e pginas a serem exibidas realizado
no arquivo struts.xml. Para se mapear uma ao necessrio utilizar a
tagaction onde o nome da ao (name no xml) o nome da ao
executado no JSP; a tagclass onde a classe da ao em java
especificada; a tagmethod indica qual a funo que ser usada na
execuo da ao; e, por fim, a tagresultque mapeia o retorno da funo
execute e retorna uma pgina JSP como resposta. Na Figura 61
possvel ver o mapeamento no arquivo struts.xml.
Agora, o ltimo passo fazer a configurao do arquivo web.xml
gerado ao se criar o projeto. No arquivo de configurao preciso
informar que as servlets sero todas gerenciadas pelo struts. Tambm
ser definida como pgina inicial o index.jsp.
7/26/2019 M8 - Tpicos Avanados IV_2
64/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 64
Figura 61. O cdigo do arquivo de mapeamento struts.xml.
No arquivo web.xml (Figura 62), a tagwelcome-filedefine a pgina
inicial; e a tagfilterfaz com que o strutsseja o responsvel pelo controle
do fluxo de informao entre o modelo e a viso, no necessitando mais
das servlets tradicionais como no modelo MVC tradicional.
Figura 62. O cdigo do arquivo web.xml.
Para executar o projeto de pginas dinmica desenvolvido
necessrio exportar o arquivo war do projeto clicando com o boto direito
7/26/2019 M8 - Tpicos Avanados IV_2
65/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 65
no nome do projeto e ir em Export>WAR file (Figura 63). Em seguida
mova o arquivo gerado para a pasta webappsdo diretrio de instalao
do tomcat.
Figura 63. Projeto>Export>WAR Fi le.
Agora basta digitar no navegador o endereo
http://localhost:8080/HelloCefetStruts/index.jsp,que a pgina index serexibida conforme a Figura 64.
Figura 64. A pgina index.jspem execuo.
Ao digitar qualquer informao e clicar no boto SayHello, a ao
ser verificada no arquivo de mapeamento e o strutsexecutar a classe
de ao indicada no arquivo. Uma vez que a ao for executada, esteretornar uma String que disparar a pgina de resposta. Para o
http://localhost:8080/HelloCefetStruts/index.jsphttp://localhost:8080/HelloCefetStruts/index.jsp7/26/2019 M8 - Tpicos Avanados IV_2
66/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 66
exemplo desenvolvido, a pgina de resposta em execuo (com valor
etec de entrada) pode ser vista na Figura 65.
Figura 65. A pgina response.jspem execuo.
7/26/2019 M8 - Tpicos Avanados IV_2
67/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 67
7. Struts com acesso a Banco de Dados
Para se fazer acesso a um banco de dados utilizando oStruts,
basta programa a camada de acesso a dados a partir da camada de
modelo como foi realizado na aula 2. Uma vez que o Struts prov uma
servletgenrica de controle de fluxo de informao entre a camada de
viso e a camada controladora, no existe diferenas significativas no
acesso ao banco de dados.
7.1. Criando um Projeto Java EE com Struts2 e acesso ao BD
Nesta aula ser utilizado o sistema de locadora das aulas
desenvolvido nas aulas anteriores onde o usurio cadastrar um filme
atravs de uma pgina JSP e o mesmo ser armazenado em um banco
de dados.
Ento, crie um novo projeto dinmico conforme as aulas
anteriores, adicione as bibliotecas do Struts e crie o cadastroFilme.jsp.
Em seguida programe a pgina JSP para realizar o cadastro de um Filmeem uma locadora e uma pgina de resposta informando que o filme foi
cadastrado com sucesso.
Em seguida crie a classe FilmeAction, com os atributos ttulo,
durao, gnero, oscar e descrio. Defina tambm todos os mtodos
gets e sets para os atributos.Antes de criar o mtodo execute, crie a
classe da camada de Modelo chamada Filmee a classe da camada de
acesso a dados FilmeDAO(conforme as aulas iniciais).Agora necessrio programar o mtodo executede forma que,a
cada ao executada, o strutspossa pegar as informaes oriundas da
pgina JSP e inseri-las em um objeto do tipo Filme, que em seguida far
chamada ao mtodo para insero do registro no banco de dados.O
cdigo do mtodo executepode ser visto na Figura 66.
7/26/2019 M8 - Tpicos Avanados IV_2
68/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 68
Figura 66. O mtodo executeda classe FilmeAction.
Aps a criao das classes, preciso configurar o arquivo de
mapeamento struts.xmlconforme a aula 6. A tagaction foi configurada
com o nome cadastrarFilme; a tagclassfoi configurada com o endereo
completo da classe FilmeAction (incluindo o pacote); e a pgina de
response.jspfoi configurada como resposta.A Figura 67 mostra o cdigo
do struts.xmlpara este exemplo.
Figura 67. O arquivo struts.xmlpara o exemplo do cadastro de filme.
Ao executar o projeto Java EE com o Struts, a pgina de cadastro
aparecer para que seja digitado as informaes necessrias para o
cadastro de um filme. Ao enviar as informaes, o filme ser armazenado
no banco de dados e a pgina de resposta (Figura 68) ser exibida.
7/26/2019 M8 - Tpicos Avanados IV_2
69/70
Estrada de Adrianlopis, 1317 Santa Rita - CEP 26.041-271Rio de Janeiro- RJ.p. 69
Figura 68. A pgina de resposta para o cadastro de filme.
7/26/2019 M8 - Tpicos Avanados IV_2
70/70
Referncias Bibliogrficas
Kurniawan, B. (2002). Java para Web com Servlets, JSP e EJB. Editora
Cincia Moderna, Rio de Janeiro, 2002.
Fields, D. K., Kolb, M.A. (2000). Desenvolvimento na Web com
JavaServerPages. Editora Cincia Moderna, Rio de Janeiro, 2000.
Metlapalli, P. (2010). Pginas JavaServer (JSP). Editora LTC, Rio de
Janeiro, 2010.
Recommended