71
Implementação MVC Pedro Antonino

Implementação MVC

Embed Size (px)

DESCRIPTION

Implementação MVC. Pedro Antonino. Agenda. MVC Desenvolvendo com Play. MVC. Separação das preocupações : Interação do usuário Apresentação Lógica de negocios. Controller. Model. View. MVC Passivo. Controllador. Atualiza view. Http response. MVC Passivo. Browser. - PowerPoint PPT Presentation

Citation preview

Page 1: Implementação  MVC

Implementação MVC

Pedro Antonino

Page 2: Implementação  MVC

Agenda

• MVC• Desenvolvendo com Play

Page 3: Implementação  MVC

MVC

Model View

Controller

Separação das preocupações:- Interação do

usuário- Apresentação- Lógica de

negocios

Page 4: Implementação  MVC

MVC Passivo

ControlladorAtualiza view

Http response

Page 5: Implementação  MVC

MVC Passivo

Browser Servidor

HttpRequest

HttpResponse

View

Page 6: Implementação  MVC

MVC Passivo

Browser Servidor

HttpRequest

HttpResponse

View

Page 7: Implementação  MVC

Framework

• Conjunto de design patterns implementado e configurável para um dado projeto

Page 8: Implementação  MVC

Play Framework

• Framework Java• Alta produtividade para Web• Multi-plataforma: Windows, MacOS, Linux• MVC• 2.0.4

Page 9: Implementação  MVC

Porque Play

• Java EE– Muita configuração, Muito XML– Vários frameworks– JSF: simplifica Java EE

• Struts– Simplifica a criação dos controllers– Integrar com outros Frameworks

• Play– Integração de alguns frameworks + Parte original de Play– Pouca configuração, XML free

Page 10: Implementação  MVC

Desenvolvendo com Play

• Uma aplicação web simples usando Play– Estrutura inicial do projeto– Framework está OK– Mapeamentos: requisições -> ações dos

controllers– Criar stubs das ações nos controllers– Criar a lógica de negócio no pacote Model– Criar as view para apresentação dos dados– Implementar os stubs dos controllers

Page 11: Implementação  MVC

Exemplo: RealizarDOC

• A implementação de uma parte do caso de uso

• Por enquanto, temos uma transferência de uma conta para outra

Page 12: Implementação  MVC

Criação da estrutura inicial

• Através do console Play:– Usando o commando new, criar a estrutura inicial

da aplicação

Page 13: Implementação  MVC
Page 14: Implementação  MVC

Estrutura de um projeto Play

Page 15: Implementação  MVC

Desenvolvendo com Play

• Uma aplicação web simples usando Play– Estrutura inicial do projeto– Aplicação está OK– Mapeamentos: requisições -> ações dos

controllers– Criar stubs das ações nos controllers– Criar a lógica de negócio no pacote Model– Criar as view para apresentação dos dados– Implementar os stubs dos controllers

Page 16: Implementação  MVC
Page 17: Implementação  MVC

Servidor

• Executado com o comando run do console Play

• Mudanças no código são refletidas automaticamente no servidor de desenvolvimento

Page 18: Implementação  MVC
Page 19: Implementação  MVC

Desenvolvendo com Play

• Uma aplicação web simples usando Play– Estrutura inicial do projeto– Aplicação está OK– Mapeamentos: requisições -> ações dos

controllers– Criar stubs das ações nos controllers– Criar a lógica de negócio no pacote Model– Criar as view para apresentação dos dados– Implementar os stubs dos controllers

Page 20: Implementação  MVC

Funcionamento da aplicação

Cliente (WebBrowser) Servidor

HttpRequest

HttpResponse

Page 21: Implementação  MVC

Roteamento

• Mapeamento:– Requisição Http -> Ação de algum controller

• Se a complexidade aumenta podemos ter uma hierarquia de arquivos de roteamento

Page 22: Implementação  MVC

routes

AçõesURLsMétodo

Page 23: Implementação  MVC

Acessar URLs

Page 24: Implementação  MVC

Controllers

• Classe no pacote controllers• Herdam da classe Controller– Seus métodos são chamados de ações– Devem retornar um Result(HTTP response)

Page 25: Implementação  MVC

Controller

Page 26: Implementação  MVC

Controllers

• Verificar mapeamento:– Http request -> ação

• Stubs

Page 27: Implementação  MVC
Page 28: Implementação  MVC

/contas

Page 29: Implementação  MVC

Desenvolvendo com Play

• Uma aplicação web simples usando Play– Estrutura inicial do projeto– Aplicação está OK– Mapeamentos: requisições -> ações dos

controllers– Criar a lógica de negócio no pacote Model– Criar as view para apresentação dos dados– Implementar os stubs dos controllers

Page 30: Implementação  MVC

Model

• Construção da suas classes de negócio, para a funcionalidade desejada

• Anotação das classes que serão persistidas

Page 31: Implementação  MVC

Model

• Classes de entidades– No pacote models– Classes que representam entidades persistidas:• Anotadas• Herdam da classe Model, do Play

Page 32: Implementação  MVC

Classe conta

Page 33: Implementação  MVC

Model

• Repositório:• JPA + Play– Herança de model:• save(), delete(), etc.

– Finder• Objeto usado para fazer consultas a base.

Page 34: Implementação  MVC

RepConta

Page 35: Implementação  MVC

Models

• Aplicações complexas:– Estrutura complexa– Pode ser organizado em camadas

• Aplicações simples:– apenas classes de persistência Model:• Classe de dados + Repositório

Page 36: Implementação  MVC

CadastroContas

Page 37: Implementação  MVC

Controlador

Page 38: Implementação  MVC

Fachada

Page 39: Implementação  MVC

Controlador != Controller

• Preocupações diferentes:– Controlador:• Implementar a lógica de negocio usando cadastros• Implementa um seviço

– Controller:• Tratar requisições do usuário• Delegar ao model a execução da lógica de negócio• Atualizar a view(Passive View)

Page 40: Implementação  MVC

Estrutura do model

Page 41: Implementação  MVC

Configuração do BD

Page 42: Implementação  MVC

Configurar o BD

• arquivo de configuração:– Application.conf

• H2:– Banco em memória– Padrão

Page 43: Implementação  MVC

application.conf

Page 44: Implementação  MVC

Plugin de evolução do BD

• BD desatualizado:– Servidor de desenvolvimento -> aplicar script SQL

Page 45: Implementação  MVC
Page 46: Implementação  MVC

Gerenciar o BD

• Genciar a base H2 atraves do browser– Comando h2-browser

Page 47: Implementação  MVC

h2-browser

Page 48: Implementação  MVC

H2 console

Page 49: Implementação  MVC

H2 console

Page 50: Implementação  MVC

Desenvolvendo com Play

• Uma aplicação web simples usando Play– Estrutura inicial do projeto– Aplicação está OK– Mapeamentos: requisições -> ações dos

controllers– Criar a lógica de negócio no pacote Model– Criar as view para apresentação dos dados– Implementar os stubs dos controllers

Page 51: Implementação  MVC

View

• Templates HTML de resposta:– Lógica de apresentação: • liguagem de templates + HTML

Page 52: Implementação  MVC
Page 53: Implementação  MVC
Page 54: Implementação  MVC

View

• Conveção de nome:– nome.scala.html

• Criação de método de atualização:– views.html.nome.render(parametros)

Page 55: Implementação  MVC

Forms

• Classe auxiliar que dada um classe basica cria um formulario.

• Simples e muito util em aplicações webs.

Page 56: Implementação  MVC
Page 57: Implementação  MVC

Desenvolvendo com Play

• Uma aplicação web simples usando Play– Estrutura inicial do projeto– Aplicação está OK– Mapeamentos: requisições -> ações dos

controllers– Criar a lógica de negócio no pacote Model– Criar as view para apresentação dos dados– Implementar os stubs dos controllers

Page 58: Implementação  MVC

Controller

• Ação: – tratam das requisições do usuario– delega ao model a execução da funcionalidade– responde com a a view atualizada

• Implementar os controladores

Page 59: Implementação  MVC
Page 60: Implementação  MVC
Page 61: Implementação  MVC
Page 62: Implementação  MVC
Page 63: Implementação  MVC
Page 64: Implementação  MVC

Validação dos dados

Page 65: Implementação  MVC

Desenvolvendo com Play

• Uma aplicação web simples usando Play– Estrutura inicial do projeto– Aplicação está OK– Mapeamentos: requisições -> ações dos

controllers– Criar a lógica de negócio no pacote Model– Criar as view para apresentação dos dados– Implementar os stubs dos controllers

Page 66: Implementação  MVC

Pronto

Controller

Requisição do cliente

Model View

Requisita o model

Atualiza a view a ser rederizadaView retornada como uma HTTP response

Trata a requisição do cliente

Page 67: Implementação  MVC

IDE

• Comando “eclipsefy” no console Play• Tem um comando para IntelliJ

Page 68: Implementação  MVC

eclipsify

Page 69: Implementação  MVC

Problemas

• Falsas marcações de erros no Controller

Page 70: Implementação  MVC

Projeto

• Para 2 casos de uso– Modelar como um sistema Web– O model deve ser estruturado com fachada,

controladores, cadastros de negócio e de dados– Usar o Play, Grails ou outro Framework– Mostrar como o MVC foi aplicado– Implementar pelo menos mais um padrão, como

Abstract Factory, Observer, Command, State ...• 1 CRUD• 1 Caso mais complexo

Page 71: Implementação  MVC

Referências

• Site do Framework: – http://www.playframework.org/

• 1o Capítulo do Livro “Play for Java”– http://www.manning.com/leroux/leroux_meap_c

h01.pdf