Você está na página 1de 33

Faculdade da Cidade de Santa Luzia

Curso de Sistemas de Informao


7 Perodo
Professor: Diego Bernardes
diego.facsal@gmail.com

Sistemas Web

Aula Anterior...

Tpicos abordados:

Protocolo HTTP request, response, mtodos.

Conteiner Web

Classes Servlet

Java Server Pages

Descritor de arquivos web.xml

Estrutura de aplicao Java Web.

Padres de Projeto em Sistemas Web

Objetivos:

Discutir e demonstrar os principais Design Patterns


utilizado em Sistemas Web.

Padres de Projetos so universais, sua aplicao no


restrita a Sistemas Web ou Desktop.

Sero discutidos o seguintes Padres:

MVC Model-View-Controller
DAO Data Access Object

Padres de Projeto em Sistemas Web

Objetivos:

Demonstrar uma aplicao Web e identificar cada


elemento dos padres discutidos dentro dessa aplicao.

Consolidar o conceito e aplicao do padro MVC em


nossas aplicaes.

Padres de Projeto em Sistemas Web

Relembrando...

O que so Design Patterns ou Padres de Projeto?

Padres de projeto podem ser vistos como uma


soluo que j foi testada para um problema. Desta
forma , um padro de projeto geralmente descreve uma
soluo ou uma instncia da soluo que foi utilizada
para resolver um problema especfico.

Padres de Projeto em Sistemas Web

Vantagens:

Padres so solues que foram desenvolvidas,


aprimoradas, testadas e validadas em diversos ambientes
com problemas similares.

Fornecem boas prticas para solues de problemas


comuns, no sendo necessrio reinventar a roda.

Padres de Projeto em Sistemas Web

Tipos de Padres de Projeto:

Criao

Estrutural

Ex: Factory, Singleton

Ex: Facade

Comportamental

Ex: MVC, Iterator

Padro de Projeto: MVC

Model View Controler

Objetivo separar os dados e regras de negcio


(Model) da interface (View).

Facilidade de Manuteno.

Apoio reutilizao de cdigo.

Separao da Lgica de Negcio dos demais


componentes do Sistema.

Padro de Projeto: MVC

Diviso de Tarefas Especializao da Equipe.

Independncia entre as camadas da aplicao.

Desacoplamento entre as camadas do projeto.

Padro de Projeto: MVC

Desvantagens

Consome um tempo maior de desenvolvimento.

Necessita de disciplina e especializao da equipe.

No recomendvel para pequenos projetos.

Padro de Projeto: MVC

MVC - Model

Responsvel por conhecer o estado do domnio do


negcio.

Domnio da aplicao fica encapsulado nessa


camada.

Camada responsvel tambm por acesso aos dados.

Exemplos:

Classes de Domnio, DAOs (acesso a dados).

MVC - View

Camada de Visualizao

Camada que possui os componentes visuais e de


apresentao do sistema.

Camada que prov a interao do usurio com a


aplicao e exibio dos dados vindos da camada de
modelo (Model).

Exemplos:

HTML, JSP, CSS, Javascript

MVC - Controller

Camada responsvel pelo processamento das


transaes.

Camada que realiza a comunicao entre a camada


de viso com a camada de modelo.

Controle do fluxo da aplicao e redirecionamentos


dentro do sistema.

Exemplos:

Actions, Servlets

Padro de Projeto: DAO

Data Access Object

No contexto de uma aplicao que foi construda


no padro MVC, as classes DAO esto presentes na
camada de modelo, pois estas fazem acesso aos
dados.

As classes DAO so responsveis por encapsular


toda a comunicao com o banco de dados, fazendo
com que o restante da aplicao manipule apenas
objetos.

Implementao de DAO utilizando JDBC

JDBC Java Database Conectivity

API Java com interfaces para acesso e manipulao


de bancos de dados que suportam SQL.

Torna transparente a utilizao de diferentes bancos


de dados.

Implementao de DAO utilizando JDBC

Para realizar a conexo com o banco de dados


necessrio incluir o driver de conexo para o banco
especfico no classpath.

Existem drivers para grande parte dos SGBDs


comerciais.

Arquietura JDBC

Implementao de DAO utilizando JDBC

Exemplo de cdigo para conexo via JDBC:

public Connection getConnection() {


System.out.println("Conectando ao banco");
try {

return DriverManager.getConnection("jdbc:mysql://localhost/db", "root", "");


catch(SQLException e) {
throw new RuntimeException(e);

}
}

Exemplo Prtico - MVC

Desenvolver uma aplicao Java Web que realize o


cadastro dos alunos de uma instituio de ensino.

A aplicao dever receber dados de matricula,


nome e endereo.

Os dados devero ser gravados no banco de dados


e uma mensagem de confirmao dever ser exibida
ao final da transao.

Exemplo Prtico - MVC

Componentes da aplicao:

cadastro.html

Aluno.java

Entidade para armazenar e transportar os dados informados


pelo usurio.

CadastroAlunoServlet.java

Tela de cadastro onde sero informados os dados do aluno.

Classe que realizar o processamento do envio dos dados,


criar objetos e redirecionar o fluxo.

AlunoDAO.java

Classe responsvel por receber um objeto populado e realizar


a persistncia do mesmo.

Exemplo Prtico - MVC

Implementando camada de viso (VIEW)

Formulrio de cadastro: cadastro.html

Exemplo Prtico - MVC

Implementando camada de viso (VIEW)

Mtodo get ou post? Qual utilizar?

Mtodo Get

Acessado via formulrio atravs do method = get ou via


url.
Deve ser utilizado quando no realizada nenhuma
modificao de estado ou envio de dados ao servidor.
Tratado pelo mtodo doGet das classses Servlet.

Exemplo Prtico - MVC

Implementando camada de viso (VIEW)

Mtodo Post

Acessado via formulrio atravs do method = post.

Encapsula e no exibe os dados que so enviados atravs


do formulrio.
Recomendado ao enviar dados para o servidor.
Por padro, nossos formulrios adotaro sempre post.
Tratado pelo mdodo doPost das classes Servlet.

Exemplo Prtico - MVC

Implementando camada de controle

(CONTROLLER) CadastroAlunoServlet.java

Classe que ir receber os dados enviados pelo


formulrio atravs do mtodo post e realizar o
processamento e redirecionamento do fluxo.

Exemplo Prtico - MVC

Exemplo Prtico - MVC

Implementando camada de modelo (MODEL)

Classes POJOs Aluno.java

Plain Old Java Object

Classes DAO AlunoDAO

Data Access Object

Exemplo Prtico - MVC

Implementando camada de modelo (DAO)

Criao de conexo com banco de dados

Criao de mtodo para incluso de objeto Aluno na


base de dados.

Exemplo Prtico - MVC

Exemplo Prtico - MVC

Implementando camada de modelo (POJO)

Exemplo Prtico - MVC

Estrutura Final do Projeto:

MVC Fluxo de Requisio / Retorno

Resumo

Padres de Projeto com foco na Web

MVC Model-View-Controller

Model

View

DAO Data Access Object


Conexo com BD utilizando API JDBC
POJOs Java Plain Objects (Classes de Domnio)

HTML (Interface com usurio)


Formulrios method (get / post)

Controller

Classes controladoras - Servlets

Você também pode gostar