m8 - tópicos avançados iv_2

Upload: leonardolehnemann

Post on 02-Mar-2018

235 views

Category:

Documents


0 download

TRANSCRIPT

  • 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

    [email protected]

  • 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.jsp
  • 7/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.