PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de...
Transcript of PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de...
![Page 1: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/1.jpg)
PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB
Prof. Dr. Daniel Caetano
2013 - 2
PADRÕES DAO, VIEW
CONTROL E FRONT CONTROL
![Page 2: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/2.jpg)
Objetivos
• Capacitar para a implementação seguindo o padrão DAO
• Compreender a implementação seguindo o padrão View Control
• Compreender a implementação seguindo o padrão Front Control
• TAREFA! – Atividade Estruturada 1!
![Page 3: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/3.jpg)
Material de Estudo
Material Acesso ao Material
Notas de Aula -
Apresentação http://www.caetano.eng.br/ (Prog. Servidor Web – Aula 8)
Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)
Biblioteca Virtual -
![Page 4: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/4.jpg)
IMPLEMENTANDO O PADRÃO DAO
![Page 5: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/5.jpg)
Padrão DAO • MVC Nível 2: Separar o acesso ao banco
– MVC Nível 2
![Page 6: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/6.jpg)
Padrão DAO • Esses caras...
– São objetos de acesso a dados
– Chamados de DAO
• É um “construtor” de objetos com base nas informações do banco de dados
• Devem ter nome no formato:
![Page 7: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/7.jpg)
Padrão DAO • Usando o DAO para persistir:
ClienteDAO.acidiona(objeto_cliente);
• Usando o DAO para restaurar:
Cliente c;
c = ClienteDAO.busca(“012.345.678-90”);
• Vamos implementar?
![Page 8: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/8.jpg)
Implementando o DAO • Criar o projeto WProjeto6
• Criação da Classe ClienteDAO
• Abrir o projeto WProjeto5
• Transferência das Funções (do 5 para o 6)
– persist → adiciona (ou insert)
– restore → busca (ou query)
• Modificando o Cliente para usar o DAO
• Modificando o Servlet para usar o DAO
![Page 9: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/9.jpg)
Usar o DAO sem criar objetos? • Mas é muito chato criar um objeto DAO só
para poder fazer uma busca!
• Por que isso ocorre?
• O Java não tem como saber se o método depende das características de um objeto específico
– Ex.: Será que o método lê algum atributo? Será que ele usa a cor do carro?
![Page 10: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/10.jpg)
Usar o DAO sem criar objetos? • Por essa razão, por padrão, o Java cria os
métodos no modo “dinâmico”, isto é, indicando que o resultado dela depende do objeto:
– O que retorna o método getCor() ?
• E, sendo assim, esses métodos só podem ser solicitados para um OBJETO:
Cliente cli = new Cliente();
System.out.println( cli.getNome() );
![Page 11: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/11.jpg)
Usar o DAO sem criar objetos? • Entretanto, nós podemos “assinar um
contrato” com o Java, dizendo que nosso método só retorna valores que independem do objeto.
• Isso significa que seu resultado é estático: não importa para qual objeto eu solicite a execução do método, o resultado é sempre o mesmo
![Page 12: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/12.jpg)
Usar o DAO sem criar objetos? • Declaramos um método como estático
usando a seguinte palavra:
static
• Se declarar um método da classe Cliente:
public static int getNumNarizes() {
return 1;
}
• Poderemos usá-la assim:
System.out.println( Cliente.getNumNarizes() );
![Page 13: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/13.jpg)
Usar o DAO sem criar objetos? • Declaramos um método como estático
usando a seguinte palavra:
static
• Se declarar um método da classe Cliente:
public static int getNumNarizes() {
return 1;
}
• Poderemos usá-la assim:
System.out.println( Cliente.getNumNarizes() );
Sem criar objetos!
![Page 14: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/14.jpg)
Implementando o DAO “estático” • Modificar o projeto WProjeto6 para
– Métodos estáticos na classe ClienteDAO
– A classe DAO seja usada sem a criação de objetos
![Page 15: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/15.jpg)
O PADRÃO VIEW CONTROL
![Page 16: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/16.jpg)
View Control - Introdução • Se quisermos um menu, seguindo o MVC...
• Calcula Média • Calcula Consumo • Calcula IMC
<a href=“CalcMedia”>Calcula Média</a> <a href=“CalcCons”>Calcula Consumo</a> <a href=“CalcIMC”>Calcula IMC</a>
![Page 17: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/17.jpg)
View Control - Introdução • Se quisermos um menu, seguindo o MVC...
![Page 18: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/18.jpg)
View Control - Introdução • Se quisermos um menu, seguindo o MVC...
Que tal centralizar esse
controle?
![Page 19: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/19.jpg)
View Control • Padrão Controle de Apresentação
• Calcula Média • Calcula Consumo • Calcula IMC
<a href=“Menu?op=1”>Calcula Média</a> <a href=“Menu?op=2”>Calcula Consumo</a> <a href=“Menu?op=3”>Calcula IMC</a>
![Page 20: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/20.jpg)
View Control • Padrão Controle de Apresentação
![Page 21: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/21.jpg)
View Control • Padrão Controle de Apresentação
Controla o que ocorre com o valor recebido de
um objeto de visão... Controle... Visão...
View Control
![Page 22: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/22.jpg)
View Control • Padrão Controle de Apresentação
View Control: Distribuidor de
Tarefas
![Page 23: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/23.jpg)
IMPLEMENTANDO O VIEW CONTROL
![Page 24: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/24.jpg)
Implementando o View Control • Criar o projeto WProjeto7
• Criação dos Links no index.jsp
– Cálculo de IMC (WProjeto 1)
– Cálculo de Média (WProjeto 2)
• Criação do servlet View Control menu.java
– Redireciona Calculo IMC para CalcImc.jsp
– Redireciona Cálculo Média para CalcMedia.jsp
• Criação dos Servlets Imc e Média
– A partir de WProjeto1 e WProjeto2
![Page 25: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/25.jpg)
O PADRÃO FRONT CONTROL
![Page 26: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/26.jpg)
Padrão Front Control • Como vimos, com o padrão View Control
![Page 27: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/27.jpg)
Padrão Front Control • Como vimos, com o padrão View Control
Fluxo da Aplicação depende de cada
Servlet/JSP...
![Page 28: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/28.jpg)
Padrão Front Control • Como vimos, com o padrão View Control
E se eu não quiser mostrar o resultado?
![Page 29: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/29.jpg)
Front Control • Padrão Controle Frontal
![Page 30: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/30.jpg)
Front Control • Padrão Controle Frontal
![Page 31: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/31.jpg)
Front Control • Padrão Controle Frontal
![Page 32: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/32.jpg)
Front Control • Padrão Controle Frontal
![Page 33: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/33.jpg)
Front Control • Padrão Controle Frontal
![Page 34: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/34.jpg)
Front Control • Padrão Controle Frontal
![Page 35: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/35.jpg)
Implementando o Front Control • Implementar isso?
• É um pouco mais complicado...
– Controle da sequência de processamento
• Ainda precisamos aprender uma forma prática para fazer isso
– Sessão (próxima aula!)
![Page 36: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/36.jpg)
O CONCEITO DO STRUTS
![Page 37: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/37.jpg)
Introdução ao Struts • Struts: framework
• Conjunto de ferramentas “prontas”
• Objetivo Geral do Struts: – Implementar, de forma simples:
– View Control
– Front Control
• Struts trata, portanto, das camadas – Visão
– Controle
• O Modelo fica por contra do programador
![Page 38: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/38.jpg)
CONCLUSÕES
![Page 39: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/39.jpg)
Resumo • DAO: centraliza comunicação com o BD
• View Control: centraliza tratamento de menus
• Front Control centraliza sequência de processamento
• Struts: facilita uso do Front/View control
• TAREFA: Atividade Estruturada 1!
• Algumas implementações exigem “Sessão”
– O que é e para que serve a Sessão?
– Como controlar?
![Page 40: PROGRAMAÇÃO ERVIDOR EM SISTEMAS WEB(Prog. Servidor Web – Aula 8) Material Didático Padrões de Arquitetura de Aplicações Corporativas, páginas 75 a 77, 318 a 332 (avançado)](https://reader035.fdocumentos.tips/reader035/viewer/2022062919/5f01c13e7e708231d400e0e8/html5/thumbnails/40.jpg)
PERGUNTAS?